天天看点

其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)

1. 重定向相关

1.1 echo命令

  1. 作用:会在终端中显示参数指定的文字,通常会和重定向联合使用。
  2. 格式:

    echo 参数名

  3. 示例:

    echo hello

1.2 重定向

将某些内容的输出/输入的目的地(设备)改变,使其输入/输出到其他目的地(设备),就是重定向。

1.2.1 输出重定向相关

  1. 概念:将某些程序/命令的输出结果保存到其他地方而非屏幕上,这就是重定向。比如可以将结果重定向到文件中,这样就可以永久的保存到文件中。
  2. 正确重定向符号:

    >

    >>

    这两个的区别:

    >

    是写入指定目标,而

    >>

    是追加到指定目标的末尾,也就是说

    >

    会清空目标中的内容,然后在将内容写入,比如如果重定向到某个文件中,会先清空该文件的原有内容。
  3. 实例:
    其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)
    其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)
    其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)
  4. 错误重定向符号:

    2>

    2>>

    ,可以将错误的结果重定向到文件中,两个符号的区别与>和>>相同。
  5. 示例:
    其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)
    其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)
  6. 正确和错误重定向符号:

    &>

    &>>

    ,可以将正确和错误的结果全部重定向,两个符号的区别与>和>>相同。
  7. 示例:
    其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)
    附:

    /dev/null

    是一个特殊的设备,可以将任何不需要的信息重定向到该设备。

1.2.2 输入重定向相关

  1. 示例:

    使用mail(安装evolution客户端后)发送邮件的格式如下:

    mail -s 邮件标题  目标用户名(敲完后回车)
    	 ......//输入要发送的内容
    	(敲完后回车)
               
    可以使用如下的方法查看和收邮件:
    mail(按回车查看邮件),然后按前面的编号即可查看相应邮件内容
               
  2. 输入重定向符号:

    <

    ,例如上面的发送邮件的示例中,输入完发送邮件的命令

    mail

    并按回车后,命令会进入和只输入cat类似的状态来等待用户的输入,而此时用户输入的内容就被输入重定向定向到mail命令中
  3. 输入重定向的意义:就是可以将交互式命令转为非交互式命令,所谓shell脚本就是一个Linux脚本的集合(序列),但是脚本中的内容要尽可能是非交互式命令,这样才能让脚本自己运行。

注: 需要注意的是

<<

并不是输入重定向符号,这个符号一般和cat联合使用,想要结束左边命令的输入必须以<<右边的内容结束,示例如下:

其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)

2. 管道——符号(|)

2.1 管道的作用

Linux允许将一个命令的输出通过管道作为另一个命令的输入,可以将其理解成一个管子,左侧塞(写)东西,右侧取(读)东西,管道的通信是单向的。

2.2 管道符号

|

:管道符号,将左边命令的输出作为右边命令的输入

2.3 常用管道的命令

与管道命令经常搭配使用的命令有以下几个:

  1. more

    :分屏显示内容
  2. grep

    :在命令执行的结果的基础上在指定文件中查找指定内容。
    1. 常用参数:
      1. -i

        :不区分大小写
      2. -v

        :反向抓取,即不含有“内容”的行
      3. -A

        :after,使用方法,-A n,抓取有内容的行及其后n行
      4. -B

        :before,使用方法,-B n,抓取有内容的行及其前n行
      5. -n

        :显示行号
      6. -E

        :表示使用高级功能,如匹配正则表达式时,就需要加此参数
    2. 正则表达式(存在的意义是为了匹配文件内容,而通配符是为了匹配文件名)
      1. ^....

        :匹配以

        ^...

        开头的,即以^后面的字符串开头的内容
      2. ....$

        :匹配以…结尾的,即以 前 面 的 字 符 串 结 尾 的 内 容 , 在 s h e l l 中 前面的字符串结尾的内容,在shell中 前面的字符串结尾的内容,在shell中后面加字字母表示变量。
      3. .

        :表示匹配任意一个字符
      4. *

        :表示匹配任意非空字符串
      5. ?

        :表示可以复用前面的字符,比如 a?,表示匹配aa或a
    注: 配合管道,grep可以抓取任何内容

注: 不管是head还是tail以及cat等都是将文本显示出来的命令,而后面也不一定非要加一个文件,如果什么都不加,那么其都会等待一个输入。而且在文件管理中,大部分命令都有接收输入的能力。

重点命令:

xargs:该命令基本都是跟在管道符后的,例如“ls | xargs cat”,这里xargs的作用是将ls的结果作为参数传给cat,那么就是将file的文本内容输出出来,而非将ls的结果输出出来

2.4 示例

其他命令(echo、输入输出重定向、管道、cat << end等)1. 重定向相关2. 管道——符号(|)