ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux中的>、>>、2>&1、管道命令

2021-08-26 10:34:59  阅读:223  来源: 互联网

标签:输出 重定向 命令 cat 标准 管道 sout linux ls


认识一下linux中的输入输出

每一个命令运行的时候都会连接三个stream流

  • STDIN (0) - 标准输入,描述符为0
  • STDOUT (1) - 标准输出,描述符为1,用&1表示标注输出流
  • STDERR (2) - 标准错误,描述符为2

可以使用重定向或管道命令连接输入和输出。

<:将文件重定向到标准输入中。不常用,一般需要标准输入的命令,都能自己读取。而且,从标准输入中读数据,无法获取到文件名。

# cat展示 sout 中的内容
cat < sout
#从 sout 中查询redis
grep redis < sout
#这是我知道的一个比较好的用法
#docker cp 可以将输入流中的tar拆包后放入容器的指定目录中
docker cp - ub:/opt < ifstat-1.1.tar

>:将标准输出重定向到某个文件中,覆盖文件内容

#将 ll 的标准输出输出到文件 sout 中,可以通过cat out.txt查看 ll 的执行结果
ls > sout
#上面的命令等同于。>符号前面的1表示标准输出,可以省略。
ls 1> sout
#执行上面的命令不会有任何输出,因为上面的命令的执行结果被放到了 sout 中

#asdjkfhka是一个不存在的目录,这时控制台会输出错误,这个命令只把标准输出重定向到了 sout 中,标准错误依然输出到屏幕
ls asdjkfhka > sout
#将标准输出输出到 sout 中,将标准错误也输出到 sout 中。
ls asdjkfhka > sout 2> sout

#将标准输出输出到 sout 中,将标准错误输出到标准输出中
#&1必须紧跟2>不然会报错
#因为标准错误重定向引用了标注输出的重定向,所以标准输出的重定向必须先设置
ls asdjkfhka > sout 2>&1
#上面用&1表示标准输出流,如果不加&,则会被解析成文件名,则会被重定向到文件 1 中

>>:将标准输出重定向追加到某个文件中。

#将 ll 的标准输出结果追加到文件 sout 中
ls >> sout

|:将它前面的命令的标准输出重定向到它后面的命令的标准输入中。

#将ll的标准输出重定向给less命令
ll | less
#用的较多的场景
ps -ef | grep redis
#会将 ls 的输出重定向给 cat,cat 将输出重定向到 out
ls | cat > out
#dkjfahgf是一个不存在的文件,管道并没有把ls的标准错误重定向给 cat,而是直接输出在了命令行
ls dkjfahgf | cat > err

参考:

标签:输出,重定向,命令,cat,标准,管道,sout,linux,ls
来源: https://www.cnblogs.com/macho8080/p/15188328.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有