简介
在使用Linux时有的情况下会使用上一个命令的输出来作为下一个命令的输入,这个时候就需要用到管道命令了,下面在介绍管道命令前先介绍一些常用的命令,以便于更好的了解管道命令的使用
常用命令介绍
取最后10行内容
# tail -n 10 filename
实时监听文件输出
# tail -f file
查看文件头10内容
# head -n 10 filename
查看文件信息
# stat filename
计算文件或目录的大小
#du -sh 文件或目录
查看磁盘挂载情况
#df -h
-
tar命令
命令组合 tar -jxvpf /-jcvpf /-zxvpf /-zcvpf 目标文件 源文件或目录 将/test打包并压缩归档名为this.tar.gz的tar文件当中 # tar -cvf this.tar.gz /etc 将this.tar.gz解压到当前目录下 # tar -xvf this.tar.gz 将当前目录下所有.txt文件打包并压缩归档到文件this.tar.gz # tar czvf this.tar.gz ./*.txt 将当前目录下的 this.tar.gz中的文件解压到当前目录 # tar -xzvf this.tar.gz -C ./ 排除指定文件和目录后,进行打包压缩 # tar -jcvpf etc.tar.bz2 --exclude=sysconfig(目录) --exclude=hosts(文件) /etc (错误写法 tar -jcvpf etc.tar.bz2 /etc --exclude=sysconfig(目录) --exclude=hosts(文件)) 恢复指定文件 # tar -jxvpf etc.tar.bz2 etc/passwd etc/shadow tar看打包了哪些文件和目录 # tar -tvf etc.tar.bz2
参数 备注 j 使用 bzip2 格式给文件或目录进行打包并压缩归档成档案文件 z 使用 gzip 格式给文件或目录进行打包并压缩归档成档案文件 x 解压档案文件 c 创建新的档案文件(想备份一个目录或一些文件时就需要选择) v 列出归档过程中的处理文件的信息,如无该参数则不显示处理文件的信息 p 保留备份数据的原本权限与属性,常用于备份(-c) 重要的配置文件 f 使用档案文件或设备归档,该参数通常为必选项 t 列出档案文件的内容,查看已经备份了那些文件 r 追加新的文件到档案文件的末尾 u 更新档案文件,将档案文件当中包含的文件替换成最新的文件,若档案文件当中没有该文件则追加到档案文件的最后 b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes) k 在解压的过程中保留系统原有的文件(遇到相同的文件不替换) m 在解压档案文件时,把所有文件的修改时间设定为现在 M 创建多卷的档案文件,以便在几个磁盘中存放 w 过程中的每一步都要求确认,压缩和解压都适用 注:
1.f 这个参数确实是必选的,要不你就找不到你的tar文件,提示你"文件不存在"的错误
2.tar并没有强制要求在参数前使用 - ,所以在使用参数时可以不加,例如:tar cvf file1 也是正确的
-
gzip
gzip命令对文本文件有60%~70%的压缩率,但是gzip压缩式时默认会使原文件消失
,这个需要特别注意压缩文件 # gzip -9 file //gzip file 压缩目录(并没有打包目录,只是把目录下的所有文件都进行压缩) # gzip -r /test [root@localhost /]# cd /test1 [root@localhost test1]# ls test1 test2 [root@localhost test1]# gzip -r /test1 [root@localhost test1]# ls test1.gz test2.gz 解压并打印执行过程 # gzip -dv filename.gz 压缩文件并保留原文件 # gzip -c file1 > filename.gz
参数 备注 -c 将压缩文件并保留原文件,压缩文件名为 原文件名.gz
-d 对压缩文件进行解压缩 -r 递归压缩指定目录下以及子目录下的所有文件 -v 对于每个压缩和解压缩的文件,打印出相应的文件名和压缩比 -l 列出每一个压缩文件的大小、为压缩文件的大小、压缩比、未压缩文件的名称 -数字 用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。默认的压缩比为 -6 -
unrar
unrar命令主要用于解压rar文件命令,从rar档案文件中提取文件解压文件 # unrar -x file.rar
参数 备注 -e 将文件解压到当前目录 -l 列出档案文件内容 -p 将文件打印到标准输出 -t 检测档案文件 -v 列出档案文件的详细信息 -x 使用完整路径提取文件(解压文件)
管道命令
管道命令也是常用的一个命令,那为什么要单独拿出来说呢?这是因为管道命令在Linux当中其实是非常重要的,他几乎能应用在所有的其他命令上,可以加载其他命令后对前一条命令的输出进行相应的处理,例如对上一条命令的输出进行特定符号的分割、忽略某些字符等,同时也可以用这些处理过的信息作为下一条命令的输入。换个角度来看就像是流水线中的处理过程,所以这就是为什么被称作管道命令的原因。下面将来介绍管道命令的使用方法以及grep、cut、sort、uniq、wc
-
使用方法
1)通过“|” 进行连接;
2)前方命令的输出做为后方命令的输入,即后方命令处理前方命令的结果
3)例子: 命令a | 命令b | 命令c -
grep
grep 主要用于查找文件内容所用,例如查找是否包含某一字符串的行/etc/hosts 所含的内容为
查找 /etc/hosts 中包含192.168.100.100的行 # cat /etc/hosts | grep 192.168.100.100 # cat /etc/hosts | grep "192.168.100.100"
除了包含192.168.100.100 的行外,其他的行都打印出来(注释掉的内容不包含) # cat /etc/hosts | grep -v 192.168.100.100
查找 /etc/hosts 中包含192.168.100.100或192.168.1.5的行 # cat /etc/hosts | egrep "192.168.1.5|192.168.100.100"
查找 /etc/hosts 中忽略大小写的 Local # cat /etc/hosts | grep -i Local
在当前路径下查找所有含有ipaddr字符串这个内容的文件 # grep -r "ipaddr" ./
-
cut
cut 主要用于切割文件中的字符,通常会结合管道命令来按照要求对文件进行切割/etc/passwd 所含的内容为
df -h
把 /etc/passwd 以:为分割,取第1个字段 # cat /etc/passwd | cut -d ":" -f 1 把 /etc/passwd 以:为分割,取第1、3个字段 # cat /etc/passwd | cut -d ":" -f 1,3
取每一行的第10个字符到行末尾 # cat /etc/passwd | cut -c 10- 取每一行的第1个到第10个字符 # df -h | cut -c 1-10
参数 备注 -d 后面跟的是分割符 -f 后面跟的是第几个字段 -c 截取字符,后面跟的数字是每一行截取字符的数量,1代表第一个字符,10代表第十个字符 -
sort
sort主要用于分类文件内容、重新排序并打印在屏幕上以:为分割符,使用第3个字段安数排序输出 /etc/passwd 的内容 # cat /etc/passwd | sort -t ":" -k 3 -n 以:为分割符,使用第3个字段安数排序输出 /etc/passwd 的内容给cut取第3个字段 # cat /etc/passwd | sort -t ":" -k 3 -n | cut -d ":" -f 3
参数 备注 -f 忽略大小写 -b 忽略最前面的空白部分 -M 以月份的名字來排序,例如 JAN, DEC 等等的排序方法 -n 按数字排序,不指定n时,默认以第一个数据来进行排序 -r 反向排序(从大到小,默认是从小到大) -u 就是 uniq ,重复行只显示一行 -t 分隔符,默认是tab键做为分割符 -k 按那个字段来进行排序 -
uniq
uniq 主要是用于排除相邻重复行的显示/etc/passwd 所含的内容为
排除 /tmp/t2 文件中相邻的重复行的显示,并标注重复数 # cat /tmp/t2 | uniq -c // cat t2 | uniq 为无重复数标注 /tmp/t2 文件排序后并消除重复行的显示 # cat /tmp/t2 | sort | uniq -c // cat t2 | sort |uniq 为无重复数标注
-
wc
wc 主要是用于显示文件中的属性,例如行数、单词数、字符数等/tmp/t2 所含的内容为
查看 /tmp/t2 有多少行 # cat /tmp/t2 | wc -l
查看 /tmp/t2 有多少单词 # cat /tmp/t2 | wc -w
查看 /tmp/t2 有多少字符 # cat /tmp/t2 | wc -m
一起查看 /tmp/t2 的行、单词数、字符数 # cat /tmp/t2 | wc -m
从左到右分别为 /tmp/t2 中的行数、单词数、字符数
练习
-
对apache.log日志分析——apache.log文件下载
访问最多的前10个IP,出现的次数,由多到少排序,结果定位到 /tmp/result 文件中# cat apache.log | cut -d " " -f 1 | sort | uniq -c | sort -nr | head -n 10 > /tmp/result
-
通过管道方式取出你的IP地址(192.168的地址)
-
新建两个用户testuser和testuse1,同时取出他们的用户名、UID、GID