Linux命令大全(十)--

有时候,我们可以把两个命令连起来使用,一个命令的输出作为另一个命令的输入,这就叫做 管道。为了建立管道,需要在两个命令之间使用竖线(|)连接。

管道是Linux进程之间一种重要的通信机制;除了管道,还有共享内存、消息队列、信号、套接字(socket) 等进程通信机制。

管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

能够接受数据,过滤(处理或筛选)后再输出的工具,称为 过滤器

grep命令

grep 是一个强大的文本搜索工具,可以使用正则表达式,并返回匹配的行,语法为:
$grep pattern file(s)
“grep”源于 ed(Linux的一个行文本编辑器)的 g/re/p 命令,g/re/p 是“globally search for a regular expression and print all lines containing it”的缩写,意思是使用正则表达式进行全局检索,并把匹配的行打印出来。

正则表达式是一个包含了若干特殊字符的字符串,每个字符都有特殊含义,可以用来匹配文本,更多信息请查看 正则表达式教程

grep 可以看做是一个过滤器,如果没有为 grep 指定要检索的文件,那么它会从标准输入设备(一般是键盘)读取;其他过滤器也是如此。

grep 命令最简单的使用就是检索包含固定字符的文本。

例如,在管道中使用 grep 命令,只允许包含指定字符的行输出到显示器:
$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$
grep 命令有很多选项:
选项说明
-v反转查询,输出不匹配的行。例如,grep -v "test" demo.txt 将输出不包含"test"的行。
-n输出匹配的行以及行号。
-l输出匹配的行所在的文件名。
-c输出匹配的总行数。
-i不区分大小写进行匹配。

下面我们使用正则表达式来匹配这样的行:包含字符“carol”,然后包含任意数目(含零个)的其他字符,最后还要包含“Aug”。

使用 -i 选项进行不区分大小写的匹配:
$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

文件搜索命令find(最强大的)
find [搜索范围] [搜索条件]
-name 搜索文件名
避免大范围搜索,会非常耗费系统资源
find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配。搜索到的文件与要搜索的文件完全相同。如果要模糊查询,就要使用通配符。
-iname 不区分大小写
-user 按照所有者搜索
-nouser 搜索没有所有者的文件,①内核产生的文件可能没有所有者,在/sys 和/proc ;②外来文件也没有所有者。其余都是垃圾文件。

-atime 文件访问时间
-ctime 修改文件属性
-mtime 修改文件内容
-10 10天内
10 10天当天
+10 10天前
(默认单位为天)

-size 查询文件大小(千字节k,兆字节M,默认单位为扇区)
-25k 小于25kb的文件
25k  等于25kb的文件
+25k 大于25kb的文件

-inum 按照i节点来查找文件(可通过ls -i来查看i节点号)

条件之间的关系
-a 逻辑与and,两个条件都要满足
-o 逻辑或or,两个条件满足一个即可

find命令后接-exec 指定命令 {}空格\;
表示find命令执行后筛选出来的文件交给指定命令执行。

Linux中的通配符
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
(想要使用通配符,整个字符串都要用""包含起来)

find命令与grep命令的区别
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配。(模糊搜索)

如果搜索和匹配的是文件的文件名称,应该使用通配符,通配符是完全匹配。
如果搜索的是文件中的内容,应该使用正则表达式,正则表达式是包含匹配。


sort命令

sort 命令在 Linux 中非常有用,它将文件中的各行按字母或数进行排序。sort命令既可以从特定的文件,也可以从stdin获取输入。

例如,对 foot 文件的各行进行排序:
$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$
通过下面的选项可以控制排序规则:
选项描述
-n按照数字大小排序,例如,10会排在2后面;-n 选项会忽略空格或 tab缩进。
-r降序排序。sort 默认是升序排序。
-f不区分大小写。
+x对第x列(从0开始)进行排序。

下面的例子通过管道将 ls、grep 和 sort 命令连起来使用,过滤包含“Aug”的行,并按照文件大小排序:
$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 john  doc     11008 Aug  6 14:10 ch02
$
上面的命令,对当前目录中八月份修改的文件按照大小排序;+4n 表示对第5列按照数字大小排序。

pg和more命令

如果文件内容过多,全部显示会很乱,可以使用 pgmore 命令分页显示,每次只显示一屏。

例如,通过管道,使用more命令显示目录中的文件:
$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 john  doc     14827 Aug  9 12:40 ch03
.
.
.
-rw-rw-rw-  1 john  doc     16867 Aug  6 15:56 ch05
--More--(74%)
如上,一次只显示一屏文本,显示满后,停下来,并提示已显示全部内容的百分比,按空格键(space)可以查看下一屏,按 b 键可以查看上一屏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值