10.管道符的使用-小白各类基础教学社区-小白学习-FancyPig's blog

10.管道符的使用

1.管道

管道是由符号“|”隔开的若干条命令组成的序列。

管道符“|”的作用:将前一个命令的输出通过一个无形的“管道”作为下一个命令的输入,即实现将前一个命令的输出的数据结果作为后一条命令所需要的数据源参数

2.管道操作符的使用场合

当输出内容较多时,为便于浏览,可将输出内容,通过管道操作符,传递给more命令来分页查看,可以使用空格、回车进行翻页,使用字母q退出

a3f66ae893181633

当输出内容较多时,为便于浏览,可将输出内容,通过管道操作符,传递给more命令来分页查看,可以使用空格、回车进行翻页,使用字母q退出

[root@linux ~]# ls -al |more

总用量 13072

dr-xr-x—. 17 root root     4096 5月  26 11:26 .

dr-xr-xr-x. 17 root root      224 4月  20 00:26 ..

-rw——-.  1 root root     2187 4月  20 00:35 anaconda-ks.cfg

-rw——-.  1 root root      208 5月  25 19:11 .bash_history

-rw-r–r–.  1 root root       18 12月 29 2013 .bash_logout

–rw——-.  1 root root       29 5月  26 11:26 .mysql_history

drwxr-xr-x.  2 root root       74 4月  20 00:34 openscap_data

–More–

还可以将查询结果传递给grep命令实现对制定对象的查看,比如要在etc目录下,查找包含yum字符的文件

[root@linux ~]# ls -al /etc |grep  yum

drwxr-xr-x.   6 root root      100 4月  20 00:15 yum

-rw-r–r–.   1 root root      970 8月   8 2019 yum.conf

drwxr-xr-x.   2 root root      245 5月  26 11:17 yum.repos.d

需要注意的是管道符的使用有两个条件:

1、管道命令只能处理前一个命令的标准输出,而不能处理标准错误,也就是说在管道中只有标准输出才能传递给下一个命令,而错误终端会直接在终端显示。

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

在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。通过把管道符和passwd命令的–stdin参数相结合,我们可以用一条命令来完成密码重置操作:

[root@linux ~]# echo “linuxserver” | passwd –stdin root

Changing password for user root. passwd: all authentication tokens updated successfully.

但是设置密码最好不要使用echo “password” |passwd –stdin user 这条命令,一是不安全,通过history可以看到密码,而是密码中的一些特殊符需要转义,有可能不成功。

[root@linux ~]# cat /etc/passwd | grep  “bin/bash” |wc -l

5

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

3.命令行通配符

查看所有硬盘文件的相关权限属性,第一种方法,依次查询

[root@linux ~]# ls -l /dev/sda   //按下tab补全

sda   sda1  sda2 

[root@linux ~]# ls -l /dev/sda1

brw-rw—-. 1 root disk 8, 1 4月  20 00:37 /dev/sda1

[root@linux ~]# ls -l /dev/sda2

brw-rw—-. 1 root disk 8, 2 4月  20 00:37 /dev/sda2

第二种方法,使用通配符

[root@linux ~]# ls -l /dev/sda*

brw-rw—-. 1 root disk 8, 0 4月  20 00:37 /dev/sda

brw-rw—-. 1 root disk 8, 1 4月  20 00:37 /dev/sda1

brw-rw—-. 1 root disk 8, 2 4月  20 00:37 /dev/sda2

如果只想查看文件名为sda开头,但是后面还紧跟其他某一个字符的文件的相关信息,该怎么操作呢?这时就需要用到问号来进行通配了。

[root@linux ~]# ls -l /dev/sda?

brw-rw—-. 1 root disk 8, 1 4月  20 00:37 /dev/sda1

brw-rw—-. 1 root disk 8, 2 4月  20 00:37 /dev/sda2

如果知道sda后面是数字,也可已使用中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符

[root@linux ~]# ls -l /dev/sda[0-9]

brw-rw—-. 1 root disk 8, 1 4月  20 00:37 /dev/sda1

brw-rw—-. 1 root disk 8, 2 4月  20 00:37 /dev/sda2

也可以用[125]这样的方式仅匹配这三个指定z字符中的一个,匹配到了就显示出来了,若没有匹配到,则不会显示出来

[root@linux ~]# ls -l /dev/sda[125]

brw-rw—-. 1 root disk 8, 1 4月  20 00:37 /dev/sda1

brw-rw—-. 1 root disk 8, 2 4月  20 00:37 /dev/sda2

请登录后发表评论

    没有回复内容