设为首页 加入收藏

TOP

Linux实战教学笔记04:Linux命令基础(二)
2017-10-13 10:32:53 】 浏览:676
Tags:Linux 实战 教学 笔记 04:Linux 命令 基础
-v排除掉目标内容后再 | xargs 将内容传递给rm命令进行删除

方法三:命令嵌套命令
此方法只适用于删除当前目录下的内容
屏幕快照 2016-12-25 下午3.12.50.png-57.5kB

··符号(tab键上边的~符号不按shift输入就是)它的意思是取符号内的命令的执行结果。本方法的意思就是rm删除掉··符号内的命令的执行结果的内容

2.9 退出到上级目录删除data目录

屏幕快照 2016-12-25 下午3.17.42.png-88.3kB

cd /root/data 进入目录
cd .. 退出当前目录回到上一级目录
find 找出目标data目录
| xargs 传递给rm删除

特殊符号

“.”(点):表示当前目录/路径
“..”:表示当前目录的上级目录
“#” :表示注释(linux会无视,略过)

2.10 已知chensiqi.txt文件内容,去掉某行内容后,输出结果

方法一:grep过滤
屏幕快照 2016-12-25 下午3.28.14.png-48.6kB

grep 过滤(默认)
cat chensiqi.txt | grep "I am chensiqi" 只看过滤的内容

-v: 排除
cat chensiqi.txt | grep -v "I am chensiqi" 排除内容后,看其他内容

方法二:通过head和tail拼接字符串
head:从头开始查看文件内容,默认查看10行
tail:从结尾开始查看文件,默认查看10行
-n: n等于行数

屏幕快照 2016-12-25 下午3.42.47.png-88.5kB

&& :特殊符号,并且的意思,可以拼接字符串结果

方法三:awk 解决
屏幕快照 2016-12-25 下午3.49.07.png-61.2kB

!:取反

方法四:sed 解决
屏幕快照 2016-12-25 下午4.25.00.png-68.4kB

了解就好,以后再细说
/内容/d (删除)
找到内容后,将内容删除后再输出

2.11 请用一条命令完成创建目录/chensiqi/test,即创建/chensiqi 目录及/chensiqi/test

屏幕快照 2016-12-25 下午4.43.06.png-85.5kB

2.12 已知/chensiqi 目录下已经存在test.txt 文件,如何执行命令才能把/mnt/test.txt 拷贝到/tmp 下覆盖掉/chensiqi/test.txt.而让系统不提示是否覆盖(root权限)

屏幕快照 2016-12-25 下午4.54.45.png-49.7kB

/bin/cp:是复制命令的绝对路径,通过绝对路径来复制命令就不会有提示。

知识扩展

还记得我们的crond定时任务吗,当用定时任务触发脚本的时候,一般都要求脚本里的命令是绝对路径的书写方式(还不知道定时任务的,此处略过)

2.13 只查看ett.txt(共100行)内第20到第30行内容

方法一:head和tail通过管道符解决
屏幕快照 2016-12-25 下午5.13.19.png-95.9kB

head -30 文件路径:查看目标文件前30行
tail -10 文件路径:查看目标文件后10行
head -30 文件名 | tail -10 先查看目标文件前30行,再查看前30行内容的最后10行。

方法二:sed解决
屏幕快照 2016-12-25 下午5.20.49.png-73.8kB

sed ‘’ 目标文件名:默认输出,全部内容
sed -n “行数p” 文件名:读取目标文件的行数内容
sed -n "行数,行数p" 文件名:读取目标文件的行数范围的内容

方法三:awk解决
屏幕快照 2016-12-25 下午5.29.11.png-80.9kB

awk '行数' 目标文件名、
NR == 行数
&& 并且拼接字符串

知识扩展
grep命令在这里无法解决该问题,grep命令主要是用来过滤内容的。而不能按行或者按列数来检索。

grep -v :取反,排除
grep -A 10:(after) 显示匹配行的后10行
grep -B 10:(before) 显示匹配行的前10行
grep -C 5:显示匹配的行的前后各5行

2.14 把/chensiqi目录及子目录下所有以扩展名.sh 结尾的文件,文件中包含 chensiqi的字符串全部替换为welcome

屏幕快照 2016-12-25 下午8.47.23.png-65.3kB

此题可通过find先找出目标文件
再用sed -i 直接对文件内容进行修改
sed -i 需要接收的是文件名,而“|”传递的是字符串,“| xargs”传递的才是文件名,如果不理解请继续往后看,

2.15 讨论

管道符 | 和管道命令 xargs的区别

  • | 传递文本,文字,字符串
  • | xargs 文字,文本,字符串==(变成)=>文件名

grep 过滤的是文件的内容,它过滤的是字符串,因此它天生就认识 管道符“|”
屏幕快照 2016-12-25 下午8.54.24.png-17.8kB

sed -i “s///g” 文件名:他后边需要接的是文件的名字,因此他不能直接认识字符串
屏幕快照 2016-12-25 下午9.02.44.png-20.1kB
所以就需要通过xargs这个管道符命令来将字符串转换成文件名
屏幕快照 2016-12-25 下午9.04.51.png-41.7kB
综上,这就是“|”和“|xargs”的区别,请仔细理解,很重要

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇分享一个MySQL分库分表备份脚本(.. 下一篇Linux硬件IO的优化简介

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目