重定向与环境变量

  • 输入输出重定向

符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2

重定义输出

符号 作用
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 或 命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
  • 管道命令符

    管道符的作用:把左面(前面)命令的输出值作为右面(后面)命令的输入值以便进一步处理信息。

  • 命令行的通配符

    星号()代表匹配零个或多个字符,问号(?)代表匹配单个字符,中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符,而中括号内加上字母[abc]则是代表匹配a、b、c三个字符中的任意一个字符(*正则表达式__)

  • 常用的转义字符

    4个最常用的转义字符如下所示。

    反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。

    单引号(’’):转义其中所有的变量为单纯的字符串。

    双引号(””):保留其中的变量属性,不进行转义处理。

    反引号(``):把其中的命令执行后返回结果。

  • 重要的环境变量

命令执行过程:

1、判断路径

判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话,直接执行。

2、检查别名

Linux 系统会检查用户输入的命令是否为“别名命令”。要知道,通过 alias 命令是可以给现有命令自定义别名的,即用一个自定义的命令名称来替换原本的命令名称。

3、判断用户输入的是内部命令还是外部命令

Linux命令行解释器(又称为 Shell)会判断用户输入的命令是内部命令还是外部命令。其中,内部命令指的是解释器内部的命令,会被直接执行;而用户通常输入的命令都是外部命令。
内部命令: Shell 自带,会随着系统启动,可以直接从内存中读取
外部命令:在系统PATH变量的某个路径下的可执行文件
判断一个命令属于内部命令还是外部命令,可以使用 type 命令查看。

4、内部命令直接执行,外部命令检测是否存在缓存

5、检测PATH路径,有执行,无报错。

当用户执行的是外部命令时,系统会在指定的多个路径中查找该命令的可执行文件,而定义这些路径的变量,就称为 PATH 环境变量,其作用就是告诉 Shell 待执行命令的可执行文件可能存放的位置,也就是说,Shell 会在 PATH 变量包含的多个路径中逐个查找,直到找到为止(如果找不到,Shell 会提供用户“找不到此命令”)。

重要的环境变量

变量名称 作用
HOME 用户的主目录(即家目录)
SHELL 用户在使用的Shell解释器名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
MAIL 邮件保存路径
LANG 系统语言、语系名称
RANDOM 生成一个随机数字
PS1 Bash解释器的提示符
PATH 定义解释器搜索用户执行命令的路径
EDITOR 用户默认的文本编辑器

各个用户可以自定义,命令作用范围也有限,默认情况下不能被其他用户使用。如果工作需要,可以使用export命令将其提升为全局变量,这样其他用户也就可以使用它了:

[root@linuxprobe workdir]# su linuxprobe
Last login: Fri Mar 20 20:52:10 CST 2017 on pts/0
[linuxprobe@linuxprobe ~]$ cd $WORKDIR
[linuxprobe@linuxprobe ~]$ echo $WORKDIR
[linuxprobe@linuxprobe ~]$ exit
[root@linuxprobe ~]# export WORKDIR
[root@linuxprobe ~]# su linuxprobe
Last login: Fri Mar 20 21:52:10 CST 2017 on pts/0
[linuxprobe@linuxprobe ~]$ cd $WORKDIR
[linuxprobe@linuxprobe workdir]$ pwd
/home/workdir
posted @ 2021-01-12 12:10  Max_hhg  阅读(89)  评论(0编辑  收藏  举报