[RHEL7基础篇-11] 常用命令介绍与管道命令

171 阅读8分钟

简介

在使用Linux时有的情况下会使用上一个命令的输出来作为下一个命令的输入,这个时候就需要用到管道命令了,下面在介绍管道命令前先介绍一些常用的命令,以便于更好的了解管道命令的使用

常用命令介绍

取最后10行内容
> tail -n 10 filename

实时监听文件输出
> tail -f file

查看文件头10内容
> head -n 10 filename

查看文件信息
> stat filename

计算文件或目录的大小
> du -sh 文件或目录

查看磁盘挂载情况
> df -h
  1. 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 也是正确的

  1. 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
  1. unrar

unrar命令主要用于解压rar文件命令,从rar档案文件中提取文件

解压文件
> unrar -x file.rar
参数备注
-e将文件解压到当前目录
-l列出档案文件内容
-p将文件打印到标准输出
-t检测档案文件
-v列出档案文件的详细信息
-x使用完整路径提取文件(解压文件)

管道命令

管道命令也是常用的一个命令,那为什么要单独拿出来说呢?这是因为管道命令在Linux当中其实是非常重要的,他几乎能应用在所有的其他命令上,可以加载其他命令后对前一条命令的输出进行相应的处理,例如对上一条命令的输出进行特定符号的分割、忽略某些字符等,同时也可以用这些处理过的信息作为下一条命令的输入。换个角度来看就像是流水线中的处理过程,所以这就是为什么被称作管道命令的原因。下面将来介绍管道命令的使用方法以及grep、cut、sort、uniq、wc

  1. 使用方法

1)通过“|” 进行连接;

2)前方命令的输出做为后方命令的输入,即后方命令处理前方命令的结果

3)例子: 命令a | 命令b | 命令c

  1. 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" ./

在这里插入图片描述

  1. 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代表第十个字符
  1. 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按那个字段来进行排序
  1. 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 为无重复数标注

在这里插入图片描述

在这里插入图片描述

  1. 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 中的行数、单词数、字符数

练习

  1. 对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

在这里插入图片描述

  1. 通过管道方式取出你的IP地址(192.168的地址)

在这里插入图片描述

  1. 新建两个用户testuser和testuse1,同时取出他们的用户名、UID、GID

在这里插入图片描述