Shell 管道与重定向
一、管道与管道符:
管道概念:管道和信号一样,也是进程通信的方式之一。
管道符概念:也叫做匿名管道,是shell编程经常用到的通信工具,管道符是 “|”,将前一个命令执行的结果传递给后面的命令:
执行命令:
[root@iZbp1e44zna0rzyna76eszZ nginx]# cat nginx.conf | more查看 cat nginx.conf 配置文件的命令执行结果,传递给 | 后面的 more 命令,进行分页查看 nginx.conf 文件
二、重定向符号:
概念:一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。
输入重定向符号
<:read var < /path/to/a/file输出重定向符号
>、>>、2>、&>:echo 123 > /path/to/a/file/>:一个符号表示,将当前文件内容清空,在新加进去。
# 查看原有的test.log文件中的内容 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# cat test.log 123 # 使用 > 输出符号 将456 输出到 test.log中 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# echo 456 > test.log # 查看test.log文件中的内容, 可以看出文件的内容被清空 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# cat test.log 456>>:二个符号表示,将当前内容追加到文件中。
# 查看当前test.log文件中的内容 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# cat test.log 456 # 使用追加符号 >> 将789追加到test.log中 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# echo 789 >> test.log # 查看追加后的结果 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# cat test.log 456 7892>:表示当前命令执行错误,会把错误信息输出到当前文件中。
# 输入一个错误的命令 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# nocmd -bash: nocmd: command not found # 使用2>符号将错误的信息输入到test.log文件中 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# nocmd 2> test.log # 查看test.log文件中的内容 [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# cat test.log -bash: nocmd: command not found&>:表示无论输出是
正确还是错误,都会把信息输出到当前文件中。# 无论是错误还是正确的输入命令都想存储到test.log文件中,使用&> [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# nocmd &> test.log [root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# cat test.log -bash: nocmd: command not found
三、通过输出与输入产生一个新的脚本文件:
新创建一个shell.sh脚本文件,命名为
shell_test.sh:#!/bin/bash # EOF 表示命令的结束, 新创建一个new_shell.sh 脚本, 里面存储的命令是 echo "hello bash" cat > /home/lvhuiqi/new_shell.sh << EOF echo "hello bash" EOF运行
test_shell.sh脚本:[root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# ./shell_test.sh查看新生成的
new_shell.sh脚本文件:[root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# ll total 28 -rw-r--r-- 1 root root 18 Jan 1 22:29 new_shell.sh -rwxr--r-- 1 root root 75 Jan 1 22:29 shell_test.sh查看新生成的
new_shell.sh脚本文件:[root@iZbp1e44zna0rzyna76eszZ lvhuiqi]# cat new_shell.sh echo "hello bash"
版权声明:本文为Fe_cow原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。