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

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

管道命令符

管道命令符 | 的作用是将前一个目录的标准输出当做后一个命令的标准输入,格式为命令A | 命令B

例如grep命令(文件搜索命令),通过关键词匹配”/sbin/nologin”找出了所有被限制登录系统个的用户。如果要统计所欲不允许登录的系统的个数,怎么办呢?
首先,grep "/sbin/nologin" /etc/passwd 找出了被限制登录的用户
其次,统计文本行数的命令是wc -l
所以,只需要将搜索命令的输出值 传给 统计文本命令

[root@VM_221_21_centos ~]# grep "/sbin/nologin" /etc/passwd | wc -l
23

输入输出重定向

首先区分一下 标准输入标准输出错误输出
例如,ls文件夹时,如果文件夹存在,输出的就是标准输出;而文件夹不存在时,就是错误输出

[root@VM_221_21_centos ~]# ls /root
blog  test.sh
[root@VM_221_21_centos ~]# ls /123
ls: cannot access /123: No such file or directory
  • 标准输入(STDIN,文件描述符为0):默认为键盘输入,为0时表示从其他文件或者目录的输出。
  • 标准输出(STDOUT,文件描述符为1):默认输出到屏幕,为1时表示为文件
  • 错误输出(STDERR,文件描述符为2):默认输出到屏幕,为2时表示是文件

输出重定向:

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

输入重定向:

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

例:
标准输入输出重定向:

[root@VM_221_21_centos ~]# echo "hahaha,yes" > readme.txt
[root@VM_221_21_centos ~]# echo "add some" >> readme.txt
[root@VM_221_21_centos ~]# head -5 readme.txt 
hahaha,yes
add some
[root@VM_221_21_centos ~]# wc -l < readme.txt 
2

错误输出重定向:

[root@VM_221_21_centos ~]# ls xxx 2> error.txt
[root@VM_221_21_centos ~]# cat error.txt 
ls: cannot access xxx: No such file or directory

命令行通配符

即匹配那些部分字符相同的文本

通配符 含义
* 匹配零个或者多个字符
? 匹配任意单个字符
[0-9] 匹配0-9的数字
[abc] 匹配任意的字符串
[root@VM_221_21_centos ~]# ls 1?.sh
11.sh  12.sh
[root@VM_221_21_centos ~]# ls 1[0-9].sh
11.sh  12.sh

特殊字符扩展:

字符 含义
\(反斜杠) 转义后面单个字符
”(单引号) 转义所有的字符
“(反引号) 执行命令语句
[root@VM_221_21_centos ~]# echo `uname -a`
Linux VM_221_21_centos 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

PATH变量

查看$PATH变量的方法:echo $PATH

[root@VM_221_21_centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

还有很多其他的环境变量,可以用 env 命令查看,其中变量是有固定的 “变量名” + “变量值” 组成的,是可以修改的。

变量名称 作用
HOME 用户的主目录“家”。
SHELL 当前的shell是哪个程序
HISTSIZE 历史命令记录条数
MAIL 邮件信箱文件
LANG 语系数据
RANDOM 随机数字
PS1 bash提示符
HISTFILESIZE history命令存储数量
PATH 在路径中的目录查找执行文件
EDITOR 默认文本编辑器
HOME 用户主目录
[root@VM_221_21_centos ~]# echo $HOME
/root

注:某个用户设置的环境变量不能被其他用户使用,原因就在于变量的作用范围。
export命令用于将局部变量提升为全局变量,格式为:export 变量名[=变量值]

你可能感兴趣的:(Linux)