linux管道命令例子,linux管道文件的实现原理

linux 常用命令要具体例子

命令很多的,一下子学了也会忘记的,只能慢慢积累,很多一般都用不上的1、文件查看和连接命令

创新互联为企业级客户提高一站式互联网+设计服务,主要包括成都网站建设、网站设计重庆APP软件开发、微信小程序开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。 

将文件连接到一起,用“”操作将几个文件组合成一个新的文件,或者是用“”把文件追加到已存文件的后面。

语法:

cat[参数]filelist

-n或--number:由1开始对所有输出的行数进行编号

-b或--number-nonblank:和n相似,但对空行不编号

-s:遇到两行空白,替换为一行空白

-v:显示不可打印的字符

filelist:用于结合文件的可选列表。2、分屏显示命令

类似于cat,但它是每次显示一页,按空格显示下一页,按q键退出,按h〉键给出帮助信息。该命令还有搜索字符的功能。

语法

more [选项] file...

-num:指定每屏显示的行数

-d:在屏幕下面提示信息

-l:more默认遇到送纸符^L会暂停,使用该选项可以取消该功能

-f:计算实际行数

-p:不是以卷动的方式显示每页,而是先清屏再显示

-s:遇到两行空白,替换为一行空白

-u:不显示下划线

+/string:在文件中搜索字符串string,并显示字符串所在页的内容

+/num:从第num行开始显示

file用于显示的文件

3、按页显示文件。类似于more,但允许在文件中前后移动。

语法:

less [参数]文件名

-i:查询时忽略大小写。

-num:指定每页显示的行数

-pstring:在文件中搜索字符串string,并从第一个符合条件的地方开始显示

-S:当某列的内容超过显示画面的宽度时,直接将超出的部分截断舍弃,默认情况下会把超出的部分折回来显示复制、删除和移动命令

1、拷贝文件。

语法:

cp[选项]sourcedest

cp[选项]source....directory

-r递归拷贝目录

-f删除已存在的目标文件再复制

-a在备份中尽可能的保留源文件的结构和属性。

2、删除

rm [选项] name....

该命令用于逐个删除指定的文件或目录。默认清苦下,name为文件名,rm命令不删除目录,只有指定-d选项时候,才能删除目录

语法:

-f强制删除,包括只读文件,并且不给用户任何提示

-i在删除每个文件时提示用户

-r递归删除目录下的内容移动或更名文件和目录

语法:

mv  [参数]源文件目标文件

-f强制复盖已有文件。

-i在复盖已有文件前提示用户。

-u在目标文件的时间比原文件新时不复盖目标文件。

-v在移动文件时输出相关信息。创建和删除目录命令

1、创建目录命令

mkdir[参数]目录名

-p如果父目录不存在,创建所有的父目录。2、删除空目录。

语法:

rmdir[参数]目录列表

-p 表示删除指定目录后,如果该目录的父目录为空,则将一并删除切换工作目录和显示目录命令

1、改变当前工作目录。

语法:

cd 目录名

如果后面不加目录名,则返回用户的根目录,此外用户必须拥有进入该目录的权限。另外cd ~ 指切换到自己的主目录,cd ../.. 可以切换到单前目录的上上目录2、显示正在工作或当前的目录名。

pwd [参数]3、列出目录中的内容。

语法:

ls [参数][目录]

-A  显示所有文件,包括隐藏文件(以“.”开头的文件,但不列出当前目录“.”和上级目录“..”

-a  显示所有文件,包括“.”和“..”目录。

-d  只列出目录名;不列出它的内容。

-l  给出文件的长列表。包括权限、所有权、大小、文件名、最后修改时间等等。

-t 按时间顺序显示

-F 在列出的文件名后以符号表示文件类型,一般文件不加符号,可执行文件“*”,目录加“/”

-R 若目录下有文件,则递归地列出目录下的文件查找与定位命令

1、查找文件或目录命令

格式

find [path....] [expression]

该命令在目录树层次中从path开始向下查找文件,将符合expression要求的文件列出来。输入命令中第一个以-、(、)、,、!开始的参数作为expression的部分,在这些符号之前的参数都被认为是要搜索的路径,在这些符号之后的才被认为是expression的部分,如果不给出path,则使用当前工作的目录,如果不给出expression,则使用-print作为预设expression

expression的参数有二三十个之多,这里只提几个常用的

-aminn 在过去n分钟内被访问过的文件

-anewerfile 比文件file更晚被访问过的文件

-atimen 在过去n天被访问过的文件

-cminn 在过去n分钟内修改过的文件

-cnewerfile 比文件file更新的文件

-ctimen 在过去n天内修改过的文件

-empty 内容为空的文件

-gidn或-groupname gid是n或是group名是name的文件

-ipathp,-pathp 路径名称符合p的文件,ipath表示忽略大小写

-namename,-inamename 文件名称符合name的文件,iname表示忽略大小写

-sizen单位 文件大小是n个单位

-type文件类型〉文件类型的含义与名利ls的选型一样

-pidn 进程id是n的文件

exp1 exp2 或者exp1 -a exp2 或者exp1 -and exp2 含义相同,表示同时满足这两个条件

!expr或者-not expr 表示expr的否定

exp1 -o exp2 或者exp1 -or exp2 表示满足其中一个条件就可以2、文件定位命令

locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。在一般的distribution 之中,资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用locate [选项] search string-u 建立资料库,-u 会由根目录开始

-U 建立资料库,-U 则可以指定开始的位置。-e 将排除在寻找的范围之外。-l 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。-q 安静模式,不会显示任何错误讯息。-n 至多显示 个输出。-r 使用正规运算式 做寻找的条件。-o 指定资料库存的名称。-d 指定资料库的路径-h 显示辅助讯息-v 显示更多的讯息-V 显示程式的版本讯息连接命令

ln [选项] source dest

Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。 ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。 不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。-f : 链结时先将与 dist 同档名的档案删除

-d : 允许系统管理者硬链结自己的目录

-i : 在删除与 dist 同档名的档案时先进行询问

-n : 在进行软连结时,将 dist 视为一般的档案

-s : 进行软链结(symbolic link)

-v : 在连结之前显示其档名

-b : 将在链结时会被覆写或删除的档案进行备份

改变文件或目录的时间命令

touch [选项] file1 [file2....]

-a 改变档案的读取时间记录。

-m 改变档案的修改时间记录。

-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。

-f 不使用,是为了与其他 unix 系统的相容性而保留。

-r 使用参考档的时间记录,与 --file 的效果一样。

-d 设定时间与日期,可以使用各种不同的格式。

-t 设定档案的时间记录,格式与 date 指令相同。

--no-create 不会建立新档案。

备份命令

tar 主选项 [辅选项] 文件或目录

tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。

主选项:

c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。

r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。

t 列出档案文件的内容,查看已经备份了哪些文件。

u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。

x 从档案文件中释放文件。

辅选项:

b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。

f 使用档案文件或设备,这个选项通常是必选的。

k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。

m 在还原文件时,把所有文件的修改时间设定为现在。

M 创建多卷的档案文件,以便在几个磁盘中存放。

v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。

w 每一步都要求确认。

z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

tar的最基本的用法举例

tar -cf all.tar *.jpg

这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

tar -rf all.tar *.gif

这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

tar -uf all.tar logo.gif

这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

tar -tf all.tar

这条命令是列出all.tar包中所有文件,-t是列出文件的意思

tar -tvf all.tar |more

这条命令是列出all.tar包中所有文件,并以分屏方式压缩和解压命令

gzip命令是用来压缩文件的。它不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。

gzip [选项] [文件名]

-c 输出并保留原文件

-d 将压缩文件解压,默认情况下为压缩

-l 显示压缩文件的压缩的提示信息

-r 递归的压缩或解压

-t,可以用来测试压缩文件的完整性。如果文件正常,gzip不会给出任何显示。如果想看到OK这两个字母,可以在测试某个文件时使用-tv参数。

-v 对每个操作的文件,显示文件名和压缩比例

unzip 命令位于/usr/bin目录中,它们和MS DOS下的pkzip、pkunzip及MS Windows中的Winzip软件功能一样,将文件压缩成.zip文件,以节省硬盘空间,当需要的时候再将压缩文件用unzip命令解开。该命令使用权限是所有用户。

unzip [选项] [压缩文件名]

-d目录 知道解压的某个目录下,默认为当前目录

-n:解压缩时不要覆盖原有的文件。

-o:不必先询问用户,unzip执行后覆盖原有文件

-j:不处理压缩文件中原有的目录路径,把所有文件解压到同一目录

-v:察看压缩文件的内容,但不解压

-t:检查压缩文件是否正确,但不解压显示文字命令

echo [-n] 字符串〉

在屏幕上显示字符串,-n表示不换行显示日立命令

cal [选项] [[月]年]

- j 显示出给定月中的每一天是一年中的第几天(从1月1日算起)。

- y 显示出整年的日历。

-1 显示当月的日历

-3显示前一月,本月,下月的日历

-s以星期天作为一周的第一天

-m以星期一作为一周的第一天如cal 5 2006

显示2006年5月份的日历

日期时间命令

date [选项] [+FormatString] 显示日期时间

date setstring 设置日期时间

它的选项比较多,一凡在此就不一一列出来了清屏命令clear软件包管理

RPM全称是 Red Hat Package Manager(Red Hat包管理器)。几乎所有的 Linux 发行版本都使用这种形式的软件包管理安装、更新和卸载软件。

01、安装

rpm -i ( or --install) options file1.rpm ... fileN.rpm

-h (or --hash) 安装时输出hash记号 (``#'')

--test 只对安装进行测试,并不实际安装。

--percent 以百分比的形式输出安装的进度。

--excludedocs 不安装软件包中的文档文件

--includedocs 安装文档

--replacepkgs 强制重新安装已经安装的软件包

--replacefiles 替换属于其它软件包的文件

--force 忽略软件包及文件的冲突

--noscripts 不运行预安装和后安装脚本

--prefix 将软件包安装到由 指定的路径下

--ignorearch 不校验软件包的结构

--ignoreos 不检查软件包运行的操作系统

--nodeps 不检查依赖性关系

--ftpproxy 用 作为 FTP代理

--ftpport 指定FTP的端口号为

通用选项

-v 显示附加信息

-vv 显示调试信息

--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下

--rcfile 设置rpmrc文件为

--dbpath 设置RPM 资料库存所在的路径为02、删除

命令格式:

rpm -e ( or --erase) options pkg1 ... pkgN

参数

pkg1 ... pkgN :要删除的软件包

详细选项

--test 只执行删除的测试

--noscripts 不运行预安装和后安装脚本程序

--nodeps 不检查依赖性

03、升级

命令格式

rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm

参数

file1.rpm ... fileN.rpm 软件包的名字

详细选项

-h (or --hash) 安装时输出hash记号 (``#'')

--oldpackage 允许"升级"到一个老版本

--test 只进行升级测试

--excludedocs 不安装软件包中的文档文件

--includedocs 安装文档

--replacepkgs 强制重新安装已经安装的软件包

--replacefiles 替换属于其它软件包的文件

--force 忽略软件包及文件的冲突

--percent 以百分比的形式输出安装的进度。

--noscripts 不运行预安装和后安装脚本

--prefix 将软件包安装到由 指定的路径下

--ignorearch 不校验软件包的结构

--ignoreos 不检查软件包运行的操作系统

--nodeps 不检查依赖性关系

--ftpproxy 用 作为 FTP代理

--ftpport 指定FTP的端口号为04、查询

命令格式:

rpm -q ( or --query) options

参数:

pkg1 ... pkgN :查询已安装的软件包

详细选项

-p (or ``-'') 查询软件包的文件

-f 查询属于哪个软件包

-a 查询所有安装的软件包

--whatprovides 查询提供了 功能的软件包

-g 查询属于 组的软件包

--whatrequires 查询所有需要 功能的软件包

信息选项

示软件包的全部标识

-i 显示软件包的概要信息

-l 显示软件包中的文件列表

-c 显示配置文件列表

-d 显示文档文件列表

-s 显示软件包中文件列表并显示每个文件的状态

--scripts 显示安装、卸载、校验脚本

--queryformat (or --qf) 以用户指定的方式显示查询信息

--dump 显示每个文件的所有已校验信息

--provides 显示软件包提供的功能

--requires (or -R) 显示软件包所需的功能

05、校验已安装的软件包

命令格式:

rpm -V ( or --verify, or -y) options

参数

pkg1 ... pkgN 将要校验的软件包名

软件包选项

-p Verify against package file

-f 校验所属的软件包

-a Verify 校验所有的软件包

-g 校验所有属于组 的软件包

详细选项

--noscripts 不运行校验脚本

--nodeps 不校验依赖性

--nofiles 不校验文件属性

06、校验软件包中的文件

语法:

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm

参数:

file1.rpm ... fileN.rpm 软件包的文件名连接帮助命令

man command

info command 该功能比man强大,但目前只在Linux中有,其他的UNIX中没有该命令

help command

Linux管道命令(pipe)

学习管道之前我们先了解一下linux的命令执行顺序

通常情况下,我们在终端只能执行一条命令,然后按下回车执行,那么如何执行多条命令呢?

管道命令使用 | 作为界定符号,管道命令与上面说的连续执行命令不一样。

通过管道将 ls -al 的输出作为 下一个命令 less 的输入,方便浏览。

ps:cut在处理多空格相连的数据时,比较吃力。

sort

如果tee后接的文件已存在,内容会被覆盖掉,加上 -a参数则会累加

col经常被用于将 man page 转存为纯文本文件

split:顾名思义,讲一个大文件依据文件大小或行数切割成为小文件

Linux常用命令总结

ps 命令的作用是显示进程信息的;

| 符号,是个管道符号,表示ps 和 grep 命令同时执行;

grep 命令是查找(Global Regular Expression Print),能使用正则表达式搜索文本,然后把匹配的行显示出来;

ps命令有一些参数:

-e : 显示所有进程

-f : 全格式

-h : 不显示标题

-l : 长格式

-w : 宽输出

a :显示终端上的所有进程,包括其他用户的进程。

r :只显示正在运行的进程。

u :以用户为主的格式来显示程序状况。

x :显示所有程序,不以终端机来区分。

结果信息从前到后依次是:

UID PID PPID C STIME TTY TIME CMD

zzw 14124 13991 0 00:38 pts/0 00:00:00 grep –color=auto dae

Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。top命令是一个交互命令。在运行top的时候还可以运行很多命令。

N – 以 PID 的大小的顺序排列表示进程列表

P – 以 CPU 占用率大小的顺序排列进程列表

M – 以内存占用率大小的顺序排列进程列表

q – 退出 top

h – 帮助

1 系统运行时间和平均负载

这些字段显示:当前时间、系统已运行的时间、当前登录用户的数量、相应最近5、10和15分钟内的平均负载。

2 任务

第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用’t’切换显示。

3 CPU 状态

下一行显示的是CPU状态。 这里显示了不同模式下的所占CPU时间的百分比。这些不同的CPU时间表示:

us, user: 运行(未调整优先级的) 用户进程的CPU时间

sy,system: 运行内核进程的CPU时间

ni,niced:运行已调整优先级的用户进程的CPU时间

wa,IO wait: 用于等待IO完成的CPU时间

hi:处理硬件中断的CPU时间

si: 处理软件中断的CPU时间

st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。

4 内存使用

接下来两行显示内存使用率,有点像’free’命令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。

物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间。

5 各列的意思

PID 进程ID,进程的唯一标识符

USER 进程所有者的实际用户名。

PR 进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。

NI 进程的nice值(优先级)。越小的值意味着越高的优先级。

VIRT 进程使用的虚拟内存。

RES 驻留内存大小。驻留内存是任务使用的非交换物理内存大小。

SHR SHR是进程使用的共享内存。

S 这个是进程的状态。它有以下不同的值:

D – 不可中断的睡眠态。

R – 运行态

S – 睡眠态

T – 被跟踪或已停止

Z – 僵尸态

%CPU 自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM 进程使用的可用物理内存百分比。

TIME+ 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND 运行进程所使用的命令。

注意 :不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助。)

kill、kill-15、kill-9区别:

执行kill(默认kill -15)命令,系统会发送一个SIGTERM信号给对应的程序,大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后再停止。用法kill pid。

kill -15 pid。

kill -9命令,系统给对应程序发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。用法kill -9 pid。

tail -n 1000:显示最后1000行

tail -n +1000:从1000行开始显示,显示1000行以后的

head -n 1000:显示前面1000行

cat a.txt 显示文件

vim xx.conf 编辑文件

打开文件后,按insert键进入编辑模式;编辑完后,按esc建退出编辑模式;按shift+冒号后,输入wq保存退出,wq!保存强制退出,q不保存退出

在根目录模糊查找名字含java的文件

服务器端常有很多压缩过的日志文件,当需要查找日志中某些特定信息的时候,为了避免解压文件,可以使用zgrep,zcat等命令查找、查看压缩文件中的信息

zgrep ' 输入你要查找的东东' /目录 /文件 .gz 或者.log (当日)

grep ' 输入你要查找的东东' /目录 /文件 .gz 或者.log (非当日的压缩文件)

例如: zgrep 'callMktCamLoad' app.log.2019-12-03-*.gz

rpm包安装的,可以用 rpm -qa 看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字"

以deb包安装的,可以用 dpkg -l 看到。如果是查找指定软件包,用 dpkg -l | grep "软件或者包的名字"

yum方法安装的,可以用 yum list installed 查找,如果是查找指定包,用 yum list installed | grep "软件名或者包名"

Linux 中 Grep 命令的常见示例,很全面

Grep 是一个强大的 UNIX 命令,可让您在文件内容中搜索各种参数。当您进行故障排除或调试时,它特别有用。

grep 命令有大量的选项和用例。您可能永远不需要或使用所有这些。但是,您最终会在大多数情况下使用少数几个 grep 命令。

本文列出了最常见的 grep 命令和快速示例:

命令示例:

描述 :不区分大小写的搜索

命令示例:

描述 :匹配后显示 n 行

命令示例:

描述 :在匹配前显示 n 行

命令示例:

描述 :在匹配前后显示 n 行

命令示例:

描述 :显示不匹配的行

命令示例:

描述 :计算匹配行数

命令示例:

描述 :仅显示文件名

命令示例:

描述 :匹配确切的单词

命令示例:

描述 :匹配正则表达式模式

命令示例:

描述 :搜索二进制文件

命令示例:

描述 :递归搜索目录

您可能已经知道要在文件中搜索特定文本或模式,您必须像这样使用 grep:

让我们看看 grep 命令的几个常见用例。

默认情况下,使用 grep 进行的搜索区分大小写,-i您可以使用以下选项忽略大小写匹配:

这样,grep 将返回与 和 匹配的Holmes行holmes。

默认情况下,您只会看到匹配的行,但是,当您对某些问题进行故障排除时,在匹配行之前和/或之后查看几行会有所帮助。

您可以使用-A来显示匹配行之后的行。

下面的命令将显示匹配的行以及匹配后的 5 行。

同样,您可以使用该-B选项在匹配行之前显示行。

下面的命令将在匹配行之前显示 5 行以及匹配行。

我最喜欢的是该选项-C,因为它显示了匹配行之前和之后的行。

下面的命令将显示匹配行之前的 5 行、匹配行和 matchine 行之后的 5 行。

您可以使用 grep 显示与给定模式不匹配的所有行。此“反转匹配”与以下-v选项一起使用:

您可以组合-i和-v选项。

-c您可以使用选项获取与模式匹配的行数,而不是显示匹配的行。这是小写的c。

您可以结合-cand-v选项来获取与给定模式不匹配的行数。您当然可以使用不区分大小写的选项-i。

要显示匹配行的行号,您可以使用该-n选项。

您可以对反向搜索执行相同的操作。

您可以提供多个文件供 grep 搜索。

这可能有效,但更实际的示例是搜索特定类型的文件。例如,如果您只想在 shell 脚本中查找字符串(以 .sh 结尾的文件),您可以使用:

您可以使用 grep option执行递归搜索-r。它将在当前目录及其子目录中的所有文件中搜索给定的模式。

默认情况下,grep 显示匹配的行。如果您对多个文件运行了搜索,并且只想查看哪些文件包含该字符串,则可以使用该-l选项。

假设您想查看哪些 Markdown 文件包含“手册”一词,您可以使用:

默认情况下,grep 将显示包含给定字符串的所有行。你可能并不总是想要那个。如果您正在搜索单词“done”,它还会显示包含“doner”或“abandoned”字样的行。

要使 grep 仅搜索完整的单词,您可以使用以下选项-w:

这样,如果您搜索单词“done”,它只会显示包含“done”的行,而不是“doner”或“abandoned”。

您可以使用正则表达式模式为您的搜索提供超级动力。有一个允许使用正则表达式模式的专用选项-e和-E一个允许使用扩展正则表达式模式的选项。

您可以在同一个 grep 搜索中搜索多个模式。如果要查看包含一种模式或另一种模式的行,可以使用 OR 运算符|。

您可以将多个模式与 OR 运算符一起使用。

AND 运算符没有特定选项。为此,您可以多次使用 grep 和管道重定向。

Grep 默认忽略二进制文件。-a您可以使用该选项使其在二进制文件中搜索,就好像它是文本文件一样。

16. Linux 管道符( ‘|’ )

利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。 连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。下面来看看管道是如何在构造一条Linux命令中得到应用的。

注意:

1、管道命令只处理前一个命令正确输出,不处理错误输出。

2、管道命令右边命令,必须能够接收标准输入流命令才行。

这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来。

这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行;第二个管道将grep的输出送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash。

区别是:

1、左边的命令应该有标准输出 | 右边的命令应该接受标准输入

左边的命令应该有标准输出 右边只能是文件

左边的命令应该需要标准输入 右边只能是文件

2、管道触发两个子进程执行"|"两边的程序;而重定向是在一个进程内执行

这些都是网上总结很多的,其实只要多加清楚用法,也一定有自己的一份不同描述。


分享文章:linux管道命令例子,linux管道文件的实现原理
浏览路径:http://ybzwz.com/article/phchdp.html