linux 重定向 21
举例
#cat test.sh [查看test.sh 文件]eat=("面呈牛王" "呷浦呷浦" "相当里手" "十六味" "群生记")check=$[$RANDOM*10/32767+1]echo "your may eat ${eat[${check}]}"#cat test_error.sh [查看test_error.sh 文件]i am an error shell#cat log.txt [log.txt文件]i am first line#sh test.sh [执行脚本时会把输出的结果输出到屏幕]your may eat 喜家德水饺#sh test_error.sh [执行脚本时会把输出的错误输出到屏幕]test_error.sh: line 1: i: command not found#sh test.sh > log.txt [执行脚本时会把输出的结果输出重定向到log.txt文件 "覆盖"原有的文件内容]#cat log.txt your may eat 呷浦呷浦#sh test.sh >> log.txt [执行脚本时会把输出的结果输出重定向到log.txt文件 "追加"原有的文件内容]#cat log.txt your may eat 呷浦呷浦your may eat 十六味#sh test_error.sh >> log.txt test_error.sh: line 1: i: command not found [执行脚本时不会把错误重定向到 log.txt文件]#sh test_error.sh >> log.txt 2>&1 [执行脚本时会把错误也重定向到log.txt文件]#cat log.txt your may eat 呷浦呷浦your may eat 十六味test_error.sh: line 1: i: command not found
2>&1说明
很多人只知道这样写是把错误也重定向到制定文件 但是却并不知道为什么是这么写 所以很多时候全靠背下来时间久了就忘记了 之前我就是这样哈哈哈
其实每个程序在运行后,都会至少打开三个文件描述符,分别是0:标准输入;1:标准输出;2:标准错误。
我们在 test.sh 最后一行加上sleep 10#sh test.sh [执行]#ps -ef | grep test.sh [找到执行test.sh 进程的id 26222] makx 26222 24961 0 11:45 pts/13 00:00:00 sh test.sh makx 26336 25775 0 11:46 pts/23 00:00:00 grep --color=auto test.shll /proc/26222/fd [根据pid查看程序打开的文件描述符] 总用量 0 lrwx------ 1 makx makx 64 12月 4 11:46 0 -> /dev/pts/13 lrwx------ 1 makx makx 64 12月 4 11:46 1 -> /dev/pts/13 lrwx------ 1 makx makx 64 12月 4 11:46 2 -> /dev/pts/13 lr-x------ 1 makx makx 64 12月 4 11:46 255 -> /home/makx/test.sh#sh test.sh > log.txt [执行]#ps -ef | grep test.sh [找到执行test.sh 进程的id 6437 ] makx 6437 2726 0 13:56 pts/9 00:00:00 sh test.sh makx 6440 2586 0 13:56 pts/7 00:00:00 grep --color=auto test.sh#ll /proc/6437/fd [根据pid查看程序打开的文件描述符] 总用量 0 lrwx------ 1 makx makx 64 12月 4 13:56 0 -> /dev/pts/9 l-wx------ 1 makx makx 64 12月 4 13:56 1 -> /home/makx/log.txt lrwx------ 1 makx makx 64 12月 4 13:56 2 -> /dev/pts/9 lr-x------ 1 makx makx 64 12月 4 13:56 255 -> /home/makx/test.sh#sh test.sh > log.txt 2>&1 [执行]#ps -ef | grep test.sh [找到执行test.sh 进程的id 3159 ] makx 3159 2726 0 13:51 pts/9 00:00:00 sh test.sh makx 3323 2586 0 13:51 pts/7 00:00:00 grep --color=auto test.sh#ll /proc/3159/fd [根据pid查看程序打开的文件描述符] 总用量 0 lrwx------ 1 makx makx 64 12月 4 13:51 0 -> /dev/pts/9 l-wx------ 1 makx makx 64 12月 4 13:51 1 -> /home/makx/log.txt l-wx------ 1 makx makx 64 12月 4 13:51 2 -> /home/makx/log.txt lr-x------ 1 makx makx 64 12月 4 13:51 255 -> /home/makx/test.sh
会发现 在加上> 或者>> 后文件描述符1指向了 /home/makx/log.txt ,在加上2>&1 之后 文件描述符2 指向了1指向的地方也是 /home/makx/log.txt (不能用1是应为会把1当成普通文件 &1指的不是普通文件 而是文件描述符) 现在明白了吗 ?
其实linux里好多命令都不需要硬背下来 找到其中的规律会觉得更有意思 哈哈 挺好玩的
参考
编程珠玑公众号
linux 重定向 21相关推荐
- linux重定向文件不存在,shell 12 21 filename重定向的含义和区别
当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...
- linux重定向到某目录文件,linux shell中12 21 1file_path重定向语法详解
当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...
- linux中and运算符文件重定向,linux 重定向问题详解
Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linux默认 ...
- 定向输出命令_网络工程师之linux重定向命令和管道命令详解
如果这篇文章对您有帮助,请关注并点赞,感谢您的支持,如果还有其他问题,请私信给我 今天来讲解linux下">"输入/输出重定向和管道命令 1.输入/输出重定向命令基本格式:c ...
- linux文件未识别,linux的内核文件vmlinuz介绍-深入理解Linux重定向的使用-网卡eth0,未识别的端口的解决方法_169IT.COM...
介绍:Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linu ...
- 重定向linux编译,linux重定向 - 悟性的个人页面 - OSCHINA - 中文开源技术交流社区...
linux重定向: 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出. 在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号.例如 ...
- Linux Mint 21编译Android kernel,遇到 multiple definition of `yylloc‘ 的错误解决
由于gcc和g++版本的更新,在编译之前的Android内核会出现各种各样的问题,本文就multiple definition of `yylloc' 问题解决给出解决方案 本文环境如下: OS: L ...
- linux 重定向 2 gt gt,Linux命令- echo、grep 、重定向、1gt;amp;2、2gt;amp;1的介绍
最近笔试遇到一道题,关于Linux命令的,题目如下 下面两条命令分别会有怎样的输出 echo hello 1>&2 |grep aaa echo hello 2>&1 |g ...
- linux输出重定向跨服务器,【一看就懂,一听就会】Linux重定向详解——输出重定向...
一.啥是重定向?? Linux重定向定向分为两种,一种输入重定向,一种是输出重定向: 从字面上理解,输入输出重定向(重新定义方向) 就是「改变输入与输出的方向」的意思. 总结: 输入方向就是我们人类从 ...
最新文章
- UA OPTI501 电磁波 LIH介质中的平面波1 平面波的性质
- va_start、va_end、va_list的使用
- 同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
- python sftp_python中实现sftp
- 转载]Cyclone II JTAG ASP 配置下载程序
- c# winform 点击按钮切换tabcontrol标签
- Study From Work(2011-3-2)
- 配置并初始化oracle的网络环境
- L1-8 估值一亿的AI核心代码 (20 分)
- DFA敏感词过滤算法详解
- WebAssembly系列2-为什么我们需要WebAssembly—采访Brendan Eich
- 网站赚钱秘密--SEO的运用
- Java 使用谷歌翻译免费api,翻译文档
- 手机游戏开发平台有哪些
- 什么是陀螺仪的dr算法_如何评价项目:通过陀螺仪传感器算法,从声波振动中提取语音?...
- vue 移动端剪裁
- 根据导函数奇偶性求高阶导数
- 收到我的小心心了吗?
- 2022年文化艺术品产权交易所研究报告
- Oracle DUL的工作原理和技术实现