1. 重定向相关
1.1 echo命令
- 作用:会在终端中显示参数指定的文字,通常会和重定向联合使用。
- 格式:
echo 参数名
- 示例:
echo hello
1.2 重定向
将某些内容的输出/输入的目的地(设备)改变,使其输入/输出到其他目的地(设备),就是重定向。
1.2.1 输出重定向相关
- 概念:将某些程序/命令的输出结果保存到其他地方而非屏幕上,这就是重定向。比如可以将结果重定向到文件中,这样就可以永久的保存到文件中。
- 正确重定向符号:
>
和>>
这两个的区别:>
是写入指定目标,而>>
是追加到指定目标的末尾,也就是说>
会清空目标中的内容,然后在将内容写入,比如如果重定向到某个文件中,会先清空该文件的原有内容。 - 实例:
- 错误重定向符号:
2>
和2>>
,可以将错误的结果重定向到文件中,两个符号的区别与>和>>相同。 - 示例:
- 正确和错误重定向符号:
&>
和&>>
,可以将正确和错误的结果全部重定向,两个符号的区别与>和>>相同。 - 示例:
附:/dev/null
是一个特殊的设备,可以将任何不需要的信息重定向到该设备。
1.2.2 输入重定向相关
- 示例:
使用mail(安装evolution客户端后)发送邮件的格式如下:
可以使用如下的方法查看和收邮件:mail -s 邮件标题 目标用户名(敲完后回车) ......//输入要发送的内容 (敲完后回车)
mail(按回车查看邮件),然后按前面的编号即可查看相应邮件内容
- 输入重定向符号:
<
,例如上面的发送邮件的示例中,输入完发送邮件的命令mail
并按回车后,命令会进入和只输入cat类似的状态来等待用户的输入,而此时用户输入的内容就被输入重定向定向到mail命令中 - 输入重定向的意义:就是可以将交互式命令转为非交互式命令,所谓shell脚本就是一个Linux脚本的集合(序列),但是脚本中的内容要尽可能是非交互式命令,这样才能让脚本自己运行。
注: 需要注意的是<<
并不是输入重定向符号,这个符号一般和cat联合使用,想要结束左边命令的输入必须以<<右边的内容结束,示例如下:
2. 管道——符号(|)
2.1 管道的作用
Linux允许将一个命令的输出通过管道作为另一个命令的输入,可以将其理解成一个管子,左侧塞(写)东西,右侧取(读)东西,管道的通信是单向的。
2.2 管道符号
|
:管道符号,将左边命令的输出作为右边命令的输入
2.3 常用管道的命令
与管道命令经常搭配使用的命令有以下几个:
-
more
:分屏显示内容 -
grep
:在命令执行的结果的基础上在指定文件中查找指定内容。- 常用参数:
-i
:不区分大小写-v
:反向抓取,即不含有“内容”的行-A
:after,使用方法,-A n,抓取有内容的行及其后n行-B
:before,使用方法,-B n,抓取有内容的行及其前n行-n
:显示行号-E
:表示使用高级功能,如匹配正则表达式时,就需要加此参数
- 正则表达式(存在的意义是为了匹配文件内容,而通配符是为了匹配文件名)
^....
:匹配以^...
开头的,即以^后面的字符串开头的内容....$
:匹配以…结尾的,即以 前 面 的 字 符 串 结 尾 的 内 容 , 在 s h e l l 中 前面的字符串结尾的内容,在shell中 前面的字符串结尾的内容,在shell中后面加字字母表示变量。.
:表示匹配任意一个字符*
:表示匹配任意非空字符串?
:表示可以复用前面的字符,比如 a?,表示匹配aa或a
注: 配合管道,grep可以抓取任何内容
- 常用参数:
注: 不管是head还是tail以及cat等都是将文本显示出来的命令,而后面也不一定非要加一个文件,如果什么都不加,那么其都会等待一个输入。而且在文件管理中,大部分命令都有接收输入的能力。
重点命令: xargs:该命令基本都是跟在管道符后的,例如“ls | xargs cat”,这里xargs的作用是将ls的结果作为参数传给cat,那么就是将file的文本内容输出出来,而非将ls的结果输出出来