Linux 重定向、管道符与环境变量


Linux 重定向、管道符与环境变量

一、重定向

1. 输入输出重定向

名称 英文 文件描述符 解释
标准输入重定向 STDIN 0 默认从键盘输入,也可从其他文件或命令中输入
标准输出重定向 STDOUT 1 默认输出到屏幕
错误输出重定向 STDERR 2 默认输出到屏幕

2. 输入重定向中用到的符号及其作用

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

3. 输出重定向中用到的符号及其作用

符号 作用
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)

| 命令 >> 文件 2>&1

命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |

注意:对于重定向中的标准输出模式,可以省略文件描述符 1 不写,而错误输出模式的文件描述符 2 是必须要写的。

二、管道命令符

1. 命令格式

"命令A | 命令B"

2. 解释

把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。

3. 示例

统计 nologin 用户数

[[email protected] ~]$ grep "/sbin/nologin" /etc/passwd | wc -l16

修改用户密码

[[email protected] ~]# echo "123456" | passwd --stdin truda
Changing password for user truda.
passwd: all authentication tokens updated successfully.

发送邮件

[[email protected] ~]# mail -s "Readme" [email protected] << over
> I think linux is very practical
> I hope to learn more
> can you teach me ?
> over

三、命令行通配符

1. 通配符列表

通配符 解释
星号(*) 代表匹配零个或多个字符
问号(?) 代表匹配单个字符
[0-9] 代表匹配 0 ~ 9 之间的单个数字的字符
[abc] 代表匹配 a、b、c 三个字符中的任意一个字符

2. 示例

匹配所有在/dev 目录中且以 sda 开头的文件

[[email protected] ~]$ ll /dev/sda*
brw-rw----. 1 root disk 8, 0 Jul 22 10:43 /dev/sda
brw-rw----. 1 root disk 8, 1 Jul 22 10:43 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jul 22 10:43 /dev/sda2

四、常用转义字符

字符 解释
反斜杠(\) 使反斜杠后面的一个变量变为单纯的字符串
单引号(’’) 转义其中所有的变量为单纯的字符串
双引号(””) 保留其中的变量属性,不进行转义处理
反引号(``) 把其中的命令执行后返回结果

五、环境变量

1. 什么是环境变量

环境变量 = 固定的变量名 + 用户或系统设置的变量值

2. Linux 系统中最重要的 10 个环境变量

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

3. 常用操作

查看环境变量的值

[[email protected] ~]$ echo $HOME
/home/truda

设置临时环境变量

[[email protected] ~]$ WORKDIR=/home/truda/

设置永久环境变量

# 系统环境变量
echo 'export WORKDIR=/home/truda/' >> /etc/profile

# 用户环境变量
echo 'export WORKDIR=/home/truda/' >> ~/.bashrc
echo 'export WORKDIR=/home/truda/' >> ~/.zshrc

提升环境变量为全局变量

[[email protected] ~]$ WORKDIR=/home/truda
[[email protected] ~]$ export WORKDIR
[[email protected] ~]$ su root
Password:
[[email protected] truda]# echo $WORKDIR
/home/truda

文章作者: Truda
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Truda !
评论
  目录