目录
1、文件操作常用命令
查看文件情况:ls、ll
创建文件:touch、echo、cat
创建文件:vim的使用
复制文件、文件夹:cp
删除文件:rm
查找文件 :find、locate、which、whereis
查看文件开头内容:head
查看文件结尾内容:tail
查看文件内容:cat、head与tail结合使用
统计文件大小 :wc
查看文件大小:du
过滤、查找:grep
2、文件权限设置:chmod
1、归属(所有权)
2、访问权限
3、给文件赋予权限的指令
3、文件上传下载:sz、rz
4、打包压缩文件命令:tar、zip、gzip、bzip、unzip、xz、xzcat
5、文件数据排序:sort
6、去除文件重复行:uniq
1、文件操作常用命令
查看文件情况:ls、ll
ls命令仅仅列出当前文件名或目录名。
ls | 显示文件或目录 |
ls -l | list--列出文件详细信息 |
ls -a | all--列出当前目录下所有文件及目录,包括隐藏的。相当于ll |
ls -h | human-readable--以人类可读的方式显示(K、M) |
ll命令:可以用于查看文件情况,列出当前文件或目录的详细信息,含有时间、读写权限、大小、时间等信息。可以理解为ll和ls -ll的功能是相同的,ll是ls -ll的别名。
ll -ah | 列出当前文件或目录下的所有文件的详细信息。 |
创建文件:touch、echo、cat
touch | 创建空文件 |
echo | 创建带有内容的文件 |
cat | 查看文件内容 |
创建文件:vim的使用
vim是vi的升级版本,有三种模式:命令模式、插入模式、编辑模式。使用ESC(末行模式)或i(插入)或:来切换模式。
先进入末行模式之后的命令模式下:
:q | 退出 |
:q! | 强制退出 |
:wq | 保存并退出 |
:set number/nu | 显示行号 |
:set nonumber | 隐藏行号 |
:set paste | 保证复制粘贴的内容格式不会乱 |
yy | 复制光标所在行 ,2yy是复制两行 |
p | 粘贴 |
dd | 删除光标所在行,2dd是删除两行 |
/apache | 在文档中查找apache,按n跳到下一个,shift+n上一个 |
h(左移一个字符←)j(下一行↓) | k(上一行↑)、l(右移一个字符→) |
复制文件、文件夹:cp
cp | copy-拷贝、复制文件或目录 |
cp -R、-r | recursive 复制文件夹 |
删除文件:rm
rm | 删除文件 |
rm -r | 递归删除,可删除子目录及文件 |
rm -f | force--强制删除 |
rmkdir | 删除空目录 |
查找文件 :find、locate、which、whereis
find | 在文件系统中搜索某个文件、文件夹(隐藏文件) |
find -name 【文件名】 | 查找指定文件 |
find -name 【文件名】-type f/d/l/p/s/c/b | 查找指定文件类型的文件(f:普通文件、d:文件夹、l:链接文件、p:管道文件、s :socket:槽、c:字符设备文件、b:块设备文件) |
find -name 【文件名】-size 【数字】 | 查找指定大小的文件 |
find -maxdepth 【数字】 | 查找指定最大深度的文件 |
find -maxdepth 【数字】-name 【文件名】 | 查找指定最大深度的指定文件 |
find -name 【文件名】-type c:character 字符设备文件: 与字符的输入和输出相关 ,对应设备:标准输入 键盘 标准的输出 屏幕(显示器)。
locate | 模糊查找-新文件找不到 需要更新数据库updatebd |
whereis | 精确查找--查找linux命令 |
which | 精确查找--查找Linux命令 |
find、locate、which和whereis的差异:
1、find可以查找文件和命令、可以模糊和精确查找、查找的范围是整个Linux系统
2、locate是从整个Linux系统里找, 模糊查找。能查找文件和命令,但是有缺点:查找新的文件有时候找不到,需要更新数据库。 到mlocae.db里查找。
locate的优点:查找速度特别快,因为到数据库里查找(索引)。
3、which和whereis是查找Linux命令的工具,精确查找。只能到PATH变量定义的路径下查找。只能查找到命令,知道PATH变量目录下找。
查看文件开头内容:head
head用于查看文件开头的一部分内容(默认为10行)。
格式:head 【文件名】: 查看文件默认的前十行。head access.log
head -n 数字 【文件名】/head -数字 【文件名】:查看文件的前几行。
例如:查看access.log文件的前2行:
[root@sc-master shell]# head -n 2 access.log
192.168.2.106 - - [13/Jul/2022:16:53:51 +0800] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36" "-"
192.168.2.106 - - [13/Jul/2022:16:53:52 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.2.158/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36" "-"
[root@sc-master shell]# head -2 access.log
192.168.2.106 - - [13/Jul/2022:16:53:51 +0800] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36" "-"
192.168.2.106 - - [13/Jul/2022:16:53:52 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.2.158/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36" "-"
head -n -数字 【文件名】:是查看除指定行号之外的其他所有行。
例如:head -n -3 test.txt n参数显示除了文件最后3行外的所有内容。
查看文件结尾内容:tail
tail为查看文件末尾的少部分内容(默认为10行)
格式为:tail 【参数】【文件名】
参数为:
-f /tailf | 动态监控文件末尾的内容 |
-q | 不显示处理信息 |
-v | 显示详细的处理信息 |
-c 【数字】 | 显示字节数 count |
-n 【数字】/【-数字】 | 显示文件的尾部n行内容 |
--pid=PID | 与-f合用,表示在进程ID、PID死掉之后结束 |
-q | 从不输出给出文件名的首部 -quiet -silent |
-s | --sleep-interval=S ,与-f合用,表示在每次反复的间隔休眠S秒 |
实例:
1、显示access.log文件的最后10行。如果不指定行数,默认是后十行。
tail access.log
[root@sc-master shell]# tail access.log
192.168.2.121 - - [13/Jul/2022:16:56:19 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.127 - - [13/Jul/2022:16:56:21 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.132 - - [13/Jul/2022:16:56:21 +0800] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.127 - - [13/Jul/2022:16:56:21 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.132 - - [13/Jul/2022:16:56:21 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.2.158/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-
.......
2、动态显示access.log文件的变化情况。
tail -f access.log/ tailf access.log
[root@sc-master shell]# tail -f access.log
192.168.2.121 - - [13/Jul/2022:16:56:19 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.127 - - [13/Jul/2022:16:56:21 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.132 - - [13/Jul/2022:16:56:21 +0800] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.127 - - [13/Jul/2022:16:56:21 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.132 - - [13/Jul/2022:16:56:21 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.2.158/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
......
显示access.log文件的最后10行,当在这个文件中添加几行数据时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
3、查看access.log文件的后2行。(tail -n 2等同于tail -n -2、tail -2)
tail -n 数字 【文件名】/ tail -n -数字 文件名/tail -数字(常用)
tail -2 access.log(常用)、tail -n 2 access.log、tail -n -2 access.log
[root@sc-master shell]# tail -2 access.log
192.168.2.133 - - [13/Jul/2022:16:56:43 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.2.158/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.133 - - [13/Jul/2022:16:56:45 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
[root@sc-master shell]# tail -n -2 access.log
192.168.2.133 - - [13/Jul/2022:16:56:43 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.2.158/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.133 - - [13/Jul/2022:16:56:45 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
[root@sc-master shell]# tail -n 2 access.log
192.168.2.133 - - [13/Jul/2022:16:56:43 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.2.158/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
192.168.2.133 - - [13/Jul/2022:16:56:45 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49" "-"
5、显示access.log文件的内容,从第20行开始到末尾。
tail -n +20 access.log
mkdir | 创建目录 |
mkdir -p | parent--创建目录,若无父目录,则创建 |
cd | 切换目录 |
/ | 绝对路径,从跟开始,一层一层往下走,绝对不会搞错的路径。自上而下(单向) |
.. | 相对路径,不是以/开始,以当前文件夹作为参照物,可进可退。(双向,用的多) |
查看文件内容:cat、head与tail结合使用
格式:cat -n 文件名|head(显示出文件默认的前十行)cat -n hello.txt |head
cat -n 文件名|head -数字(如 cat -n hello.txt|head -5)
统计文件大小 :wc
wc | 统计文本中行数、字数、字符数 |
wc -l | 将每个文件的行数及文件名输出到屏幕上 |
wc -c | 统计字节 |
查看文件大小:du
格式:du 【选项】【文件】
-a | -all,显示目录中个别文件的大小 |
-b | -bytes,显示目录或文件大小时,以byte为单位 |
-c | -total,除了显示个别目录或文件的大小外,同花也显示所有文件或目录的总和 |
-k | -kilobytes,以KB(1024bytes)为单位输出。 |
-m | –megabytes ,以MB为单位输出。 |
-s | -summarize,仅显示总计,只列出最后加总的值。 |
-h | human-readable, 以K,M,G为单位,提高信息的可读性。 |
-x | one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 |
-L | <符号链接>或–dereference<符号链接> 显示选项中所指定符号链接的源文件大小。 |
-S | –separate-dirs 显示个别目录的大小时,并不含其子目录的大小。 |
-X<文件> | –exclude-from=<文件> 在<文件>指定目录或文件。 –exclude=<目录或文件> 略过指定的目录或文件。 |
-D | –exclude=<目录或文件> 略过指定的目录或文件。 |
-H | –si 与-h参数相同,但是K,M,G是以1000为换算单位。 |
-I | –count-links 重复计算硬件链接的文件。 |
1、查看opt目录下的所有文件的大小:du -sh /opt
[root@sc-master ~]# du -sh /opt
890M /opt
2、查看当前目录下所有文件大小:du -sh *
3、查看具体文件的大小: du -sh use.txt
[root@sc-master lianxi]# du -sh use.txt
4.0K use.txt
过滤、查找:grep
grep | 在文本文件中查找某个字符串(过滤) |
可接选项 |
tree | 树形结构显示目录结构,需要安装tree包 |
pwd | 显示当前目录 |
ln | 创建链接文件 |
more、less | 全屏分页显示文本文件内容 |
head、tail | 显示文件头、尾的内容 |
ctrl+alt+F1 | 命令行全屏模式 |
2、文件权限设置:chmod
Linux的基本权限有9个,分别是owner、group、others三种身份有各自的r(读)、w(写)、x(可执行)权限。
1、归属(所有权)
属主(owener):拥有该文件或目录的用户 --user -- 》u
数组(group):拥有改文件或目录的组账号 --group --- 》g
其他人(others):除了属主和数组的其他人 ----others --- 》o
2、访问权限
可读(read);允许查看文件内容,显示目录列表 -r ---4
可写(write):允许修改文件内容,-w -----2
vim 重定向,允许在目录中,可以在目录中创建、移动、删除文件或者子目录 -w
--mkdir 、touch 、rm 、vim 、mv、cp
可执行(execute):允许运行程序,切换目录 ---cd -x ---1
可以使用数字表示权限:
r->4
w->2
x->1
当文件权限为“rwxrwxrwx”时,权限数字是:777
owner->4+2+1=7
group->4+2+1=7
others->4+2+1=7
3、给文件赋予权限的指令
格式:chmod 【权限数字】【文件名】
1、例如:给file文件授予可读可写可执行的权限:
chmod 777 file
2、owner、group和others三种身份各自的三个权限,用u、g、o代表三种身份,用a(all)代表所有身份,命令为:其中的权限为r|w|x。格式为:
设置权限:chmod u|g|o|a = 【设置权限】文件或目录
+添加权限:chmod u|g|o|a = +【添加权限】文件或目录
-减少权限:chmod u|g|o|a = -【减少权限】 文件或者目录
3、例如给文件的属主设置可读可写的权限:
chmod u=rwx file
3、文件上传下载:sz、rz
在不使用xftp等linux工具的情况,可以通过linux命令,sz命令是利用ZModem协议来从Linux服务器传送文件到本地,一次可以传送一个或多个文件。
① 下载文件:
sz命令发送文件到本地:
sz filename
② 上传文件
rz
rz和sz命令需要有以下条件:
- Linux系统
- root权限
- lrzsz安装包
lrzsz的安装步骤:
编译安装,使用root用户登录,执行以下命令:
tar zxvf lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20
./configure
make
make install
//上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下,现在我们并不能直接使用,下面创建软链接,并命名为rz/sz:
cd /usr/bin
ln -s /usr/local/bin/lrz rz
ln -s /usr/local/bin/lsz sz
centos的安装:
yum install lrzsz -y
4、打包压缩文件命令:tar、zip、gzip、bzip、unzip、xz、xzcat
tar:归档,把多个文件整合在一起,常常用在备份上面,本身不具备压缩功能,但是可以指定其他压缩功能去压缩。压缩命令大全
选项 | 含义 |
tar | 打包压缩、归档文件 |
tar -c | create--创建一个新的归档文件 |
tar -t | list--查看当前归档文件里面有哪些原始文件 |
tar -x | extract--解压当前归档文件 |
tar -f | 指定归档文件 |
tar -j | bzip2--使用bzip2去压缩归档文件 |
tar -v | verbose--在打包、压缩或解压缩过程中显示详细信息 |
tar -z | gzip--使用gzip去压缩文件 |
tar -cvf | 只打包,不压缩 |
tar -zcvf | 打包,并使用gzip压缩 |
tar -jcvf | 打包,并用bzip2压缩 |
tar -z/jxvf | 解压缩归档文件 |
其中的tar -z/jxvf 是指解压使用gzip、bzip2压缩的文件,解压的核心指令是:tar -xf
zip | 压缩文件、目录 |
zip [选项]【压缩文件路径】【源文件路径】 | 压缩文件 |
zip -r | 对目录进行递归压缩 |
linux解压zip压缩文件可以用unzip命令,如果没安装,可以先安装。
yum install -y unzip zip
格式为:unzip [选项] [压缩文件名]
选项 | 含义 |
-c | 将解压缩的结果显示到屏幕上,并对字符做适当的转换。 |
-f | 更新现有的文件 |
-l | 显示压缩文件内所包含的文件 |
-p | 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换 |
-t | 检查压缩文件是否正确 |
-u | 与-f参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换 |
-v | 执行时显示详细的信息 |
-z | 仅显示压缩文件的备注文字 |
-a | 对文本文件进行必要的字符转换 |
-b | 不要对文本文件进行字符转换 |
-C | 压缩文件中的文件文件名称区分大小写 |
-j | 不处理压缩文件中原有的目录路径 |
-L | 将压缩文件中的全部文件名改为小写 |
-M | 将输出结果送到more程序处理 |
-n | 解压缩时不要覆盖原有的文件 |
-o | 不必先询问用户,unzip执行后覆盖原有文件 |
-P 【密码】 | 使用zip的密码选项 |
-q | 执行时不显示任何信息 |
-s | 将文件名中的空白字符转换为底线字符 |
-V | 保留VMS的文件版本信息 |
-X | 解压缩时同时回存文件原来的UID/GID |
【.zip文件】 | 指定.zip压缩文件 |
【文件】 | 指定要处理.zip压缩文件中的 哪些文件 |
-d 【目录】 | 指定文件解压缩后所要存储的目录 |
-x 【文件】 | 指定不要处理.zip压缩文件中的哪些文件 |
-Z | 等于执行zipinfo指令 |
gzip | 压缩文件 |
gzip -d | 解压缩文件,同gunzip命令 ,如:gzip -d .gz 解压.gz格式的压缩文件 |
gzip -c | 将输出重定向到标准输出,既保留原文件又保留压缩后的文件 |
gzip -9 【文件名】 | 表示高压缩比,取值1-9,默认为6 |
gunzip | 用于解压被 gzip 压缩过的文件(扩展名为 .gz) |
bzip2 | 压缩文件 |
bzip2 -d | 用于解压缩文件,同bunzip2命令,解压.bz2格式的压缩文件 |
bzip2 -c | 将输出重定向到标准输出,保留源文件 |
bzip2 -k | 保留原文件压缩 |
bzip2 -9 | 表示高压缩比,取值1-9,默认为6。压缩比相对于gzip更高 |
xz压缩 、 xzcat 查看压缩 使用跟bzip2差不多。查看以xz格式的压缩文件。
xz/xzcat | 压缩文件 |
各种压缩命令的区别: xz、 bizp2、 gzip 都是对文件进行压缩;zip、 tar 可以对目录进行压缩,也可以对文件进行压缩。
5、文件数据排序:sort
sort命令可以用于文件数据排序,然后将排序结果打印出来。默认是字典序排序。
格式:sort 【选项】【文件】
选项 | 含义 |
-r | 倒叙排序,相反的顺序进行排序 |
-k(数字) | 指定第几列排序(后面接数字) |
-n | 按数值进行排序 |
-t | 指定分隔符,默认是空白 |
-u | 去重 |
-b | 忽略每行前面开始出的空格字符 |
-c | 检查文件是否已经按照顺序排序 |
-d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符 |
-f | 排序时,将小写字母视为大写字母 |
-i | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符 |
-m | 将几个排序号的文件进行合并 |
-M | 将前面3个字母依照月份的缩写进行排序 |
-o | <输出文件> 将排序后的结果存入制定的文件 |
例如:1、对b.txt文件进行排序:cat b.txt|sort
[root@localhost shell-test]# cat b.txt|sort
输出: a b cc 你好 三创 中国
[root@localhost lianxi]# cat bb.txt|sort
123
22
233
4
1.1 按数值进行排序。cat bb.txt|sort -n
[root@sc-master lianxi]# cat bb.txt|sort -n
4
22
123
233
2、 sort -r:倒叙排序。
[root@localhost shell-test]# cat b.txt|sort -r
中国 三创 你好 b cc a
3、sort -k(数字) -n :指定第几列排序。
[root@localhost lianxi]# cat b.txt|sort -k2
a 你好 三创 中国 b cc
4、sort -k(数字) -t:,指定分隔符为“:”。分隔符按:指定第六列的排序。
root@localhost lianxi]# cat /etc/passwd |sort -k6 -t
6、去除文件重复行:uniq
使用uniq这个命令只能去除连续、附近、挨着的重复行。所以需要结合sort命令使用,先sort排序,然后uniq去除重复的。
格式:uniq 【选项】【文件】
选项 | 含义 |
-c | 统计相同行出现的次数 |
-u | 显示唯一不重复的行 |
-d | 显示重复的行 |
-c | 统计相同行出现的次数 |
1、对u1.txt文件进行去重。
u1.txt: aa bb aa cc dd dd hh
[root@localhost lianxi]# cat u1.txt|uniq
aa bb aa cc dd hh(只能去除相邻的:dd)
2、要想去重原文需要:先排序sort,再去重。
[root@localhost lianxi]# cat u1.txt|sort|uniq
aa bb cc dd hh
-c 统计相同行出现的次数。
[root@localhost lianxi]# cat u1.txt|sort|uniq -c
2 aa 1 bb 1 cc 2 dd 1 hh
uniq -d 显示重复的行。
[root@localhost shell-test]# cat u1.txt|sort|uniq -d
aa dd
uniq -u 显示唯一不重复的行
[root@localhost shell-test]# cat u1.txt|sort|uniq -u
bb cc hh
不进行排序sort,都只会显示临近的行。
3、显示cpu使用前5的进程。
[root@localhost lianxi]# ps -aux|grep -v %CPU|sort -k3 -r|head -n 5
root 6187 0.1 0.6 301040 6496 ? Ssl 09:29 0:06 /usr/bin/vmtoolsd
mysql 7095 0.0 8.8 970944 88628 ? Sl 09:29 0:04 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root 6833 0.0 1.7 573924 17096 ? Ssl 09:29 0:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
polkitd 6231 0.0 1.1 612236 11092 ? Ssl 09:29 0:00 /usr/lib/polkit-1/polkitd --no-debug
root 6229 0.0 0.9 830696 9312 ? Ssl 09:29 0:00 /usr/sbin/NetworkManager --no-daemon
grep -v 过滤出不包含的。