眼前多少难甘事,自古男儿当自强。这篇文章主要讲述Linux 输入重定向输出重定向和管道相关的知识,希望能为你提供帮助。
@toc
输入重定向使用输入重定向 &
lt;
,&
lt;
&
lt;
& lt;
将需要交互输入的内容存放到文件中,用来当做命令的输入。
注意后面必须是文件,不能直接写字符串。可以用来解决脚本中交互命令的输入问题。& lt; & lt;
一般和cat
联合使用,用于多行内容写入/追加到文件中 示例# 创建一个空文件 [root@localhost ~]# touch hosts [root@localhost ~]# cat hosts # < < 将两个EOF之间的内容作为输入,重定向到file中。 # EOF可以更改为任意符号,只要开头和结尾一致即可 [root@localhost ~]# cat > file < < EOF > y > > > EOF [root@localhost ~]# cat file y
cp: overwrite ‘hosts’?
[root@localhost ~]# cat hosts
127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4
::1localhost localhost.localdomain localhost6 localhost6.localdomain6
扩展 使用管道可以直接将字符串作为命令的输入[root@localhost ~]# echo y |cp hosts test
cp: overwrite ‘test’?
# 输出重定向
输出重定向 `>
,>
>
,1>
,2>
,&
>
,1>
>
,2>
>
,&
>
>
`
* `>
`将输出重定向到文件中,会替换掉现有文件内容
* `>
>
`将输出重定向到文件中,会追加在现有文件的结尾
* `1`将正确信息输出
* `2`将错误信息输出
* `&
`将正确信息和错误信息一起输出
##示例
```bash
# 创建一个新文件
[root@localhost ~]# touch test
[root@localhost ~]# cat test
# 初始文件为空,添加一行内容
[root@localhost ~]# echo 12345 >
test
[root@localhost ~]# cat test
12345
# >
覆盖文件
[root@localhost ~]# echo 23445 >
test
[root@localhost ~]# cat test
23445
# >
>
在文件末尾追加
[root@localhost ~]# echo 1234 >
>
test
[root@localhost ~]# cat test
23445
1234# 消息重定向
echo "ls &
&
cp host test" >
test.sh
# 默认错误消息会输出到屏幕上,正确的消息重定向到文件中
[root@localhost ~]# sh test.sh >
test
cp: cannot stat ‘host’: No such file or directory
[root@localhost ~]# cat test
anaconda-ks.cfg
file
hosts
original-ks.cfg
test
test.sh
# 1 将正确的消息重定向到文件中
[root@localhost ~]# sh test.sh 1>
test
cp: cannot stat ‘host’: No such file or directory
[root@localhost ~]# cat test
anaconda-ks.cfg
file
hosts
original-ks.cfg
test
test.sh
# 2 将错误的消息重定向到文件中
[root@localhost ~]# sh test.sh 2>
test
anaconda-ks.cfgfilehostsoriginal-ks.cfgtesttest.sh
[root@localhost ~]# cat test
cp: cannot stat ‘host’: No such file or directory
# &
将正确的和错误的消息都重定向到文件中
[root@localhost ~]# sh test.sh &
>
test
[root@localhost ~]# cat test
anaconda-ks.cfg
file
hosts
original-ks.cfg
test
test.sh
cp: cannot stat ‘host’: No such file or directory
管道
|
管道将左边命令的输出结果当作右边命令的输入
ps -ef|grep mysql
推荐阅读
- java实现读取163邮箱,qq邮箱的邮件内容
- oeasy教您玩转python - 002 - # 你好世界 - 各位同学除夕快乐,除旧布新之时预祝能玩转python
- shell三剑客之awk
- 第12讲(Flink 常用的 Source 和 Connector)
- Linux 如何限制内存的使用
- 物联网基础入门,实战可落地的 AIoT 项目
- 数字孪生在制造业中能发挥什么作用()
- Linux之free命令
- oeasy教您玩转python - 4 - # 调试程序