1. 举例

     #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. 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相关推荐

  1. linux重定向文件不存在,shell 12 21 filename重定向的含义和区别

    当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...

  2. linux重定向到某目录文件,linux shell中12 21 1file_path重定向语法详解

    当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...

  3. linux中and运算符文件重定向,linux 重定向问题详解

    Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linux默认 ...

  4. 定向输出命令_网络工程师之linux重定向命令和管道命令详解

    如果这篇文章对您有帮助,请关注并点赞,感谢您的支持,如果还有其他问题,请私信给我 今天来讲解linux下">"输入/输出重定向和管道命令 1.输入/输出重定向命令基本格式:c ...

  5. linux文件未识别,linux的内核文件vmlinuz介绍-深入理解Linux重定向的使用-网卡eth0,未识别的端口的解决方法_169IT.COM...

    介绍:Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linu ...

  6. 重定向linux编译,linux重定向 - 悟性的个人页面 - OSCHINA - 中文开源技术交流社区...

    linux重定向: 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出. 在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标号.例如 ...

  7. Linux Mint 21编译Android kernel,遇到 multiple definition of `yylloc‘ 的错误解决

    由于gcc和g++版本的更新,在编译之前的Android内核会出现各种各样的问题,本文就multiple definition of `yylloc' 问题解决给出解决方案 本文环境如下: OS: L ...

  8. 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 ...

  9. linux输出重定向跨服务器,【一看就懂,一听就会】Linux重定向详解——输出重定向...

    一.啥是重定向?? Linux重定向定向分为两种,一种输入重定向,一种是输出重定向: 从字面上理解,输入输出重定向(重新定义方向) 就是「改变输入与输出的方向」的意思. 总结: 输入方向就是我们人类从 ...

最新文章

  1. UA OPTI501 电磁波 LIH介质中的平面波1 平面波的性质
  2. va_start、va_end、va_list的使用
  3. 同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
  4. python sftp_python中实现sftp
  5. 转载]Cyclone II JTAG ASP 配置下载程序
  6. c# winform 点击按钮切换tabcontrol标签
  7. Study From Work(2011-3-2)
  8. 配置并初始化oracle的网络环境
  9. L1-8 估值一亿的AI核心代码 (20 分)
  10. DFA敏感词过滤算法详解
  11. WebAssembly系列2-为什么我们需要WebAssembly—采访Brendan Eich
  12. 网站赚钱秘密--SEO的运用
  13. Java 使用谷歌翻译免费api,翻译文档
  14. 手机游戏开发平台有哪些
  15. 什么是陀螺仪的dr算法_如何评价项目:通过陀螺仪传感器算法,从声波振动中提取语音?...
  16. vue 移动端剪裁
  17. 根据导函数奇偶性求高阶导数
  18. 收到我的小心心了吗?
  19. 2022年文化艺术品产权交易所研究报告
  20. Oracle DUL的工作原理和技术实现

热门文章

  1. OA选型 三条底线不能碰
  2. 百里挑一:ICLR 2021杰出论文奖出炉!
  3. 概率论与数理统计-离散型随机变量基础知识
  4. 大家都在用哪些OKR管理工具?
  5. vivox21支持html,vivo X21支持快充吗_vivo X21支持无线充电吗-太平洋IT百科
  6. 四元数船舶领域Quaternion ship domain
  7. czl蒻蒟的OI之路9
  8. 天猫精灵智能设备对接(2)
  9. 070-JAVA项目实训:仿QQ即时通讯软件系列讲座五(讲解用户注册功能)
  10. 计算机二级多少人优秀,计算机二级各科通过率是多少