数据流重定向
Linux 默认提供了三个特殊设备,用于终端的显示和输出,分别为 stdin(标准输入,对应于你在终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)
例如,这一句时将hello,world!字符串输出到终端屏幕,这是标准输出
echo 'hello world'
hello world
例如,这一句时将hello,world!字符串输出到2.TXT文件中,需要查看文件才能在终端显示
echo 'hello,world!' >> 2.txt
[root@kafka root2]# cat 2.txt
hello,world!
之前面没有用到的 < 和 << 操作也是没有问题的,它们的区别在于重定向的方向不一致而已,> 表示是从左到右,< 右到左
管道输出
管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),表现出来形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)
例如,下面命令意思就是列出所有可安装的软件包信息输出给grep查找 7zip作为输入
yum list | grep 7zip
p7zip.x86_64 16.02-20.el7 @epel
p7zip-doc.noarch 16.02-20.el7 epel
p7zip-gui.x86_64 16.02-20.el7 epel
p7zip-plugins.x86_64 16.02-20.el7 epel
命令执行顺序
- 顺序执行多条命令
例如
此句意思为先更新软件或命令可下载目录,然后安装p7zip命令,命令用 ; 分隔开,按顺序执行
yum update;yum install p7zip
- 有选择的执行命令
&& 用来实现选择性执行的,表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回 0 则执行后面的,否则不执行
|| 在这里就是与 && 相反的控制效果,当上一条命令执行结果为 ≠0($?≠0) 时则执行它后面的命令:
[root@kafka root2]# which cowsay>/dev/null && echo "cowsay software is installed" || echo "no"
cowsay software is installed
# 正确命令
[root@kafka root2]# which cowsasy>/dev/null && echo "cowsay software is installed" || echo "no"
/usr/bin/which: no cowsasy in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
no
# 错误命令