首页 > 系统相关 >Linux中重定向应注意的事情

Linux中重定向应注意的事情

时间:2023-05-08 23:56:37浏览次数:64  
标签:输出 重定向 错误 标准 注意 file Linux txt

引言

你是否见过bash ... 2>&1 1>file.txt的写法? 还没发现这样的写法有什么问题? 那么恭喜你, 看完本文你又将学会一个新知识!

重定向的错误用法

以引言中命令为例, 2>&1表示将错误输出重定向到标准输出, 1>file.txt表示将标准输出重定向到file.txt文件, 看起来的意思就是将标准输出和错误输出全都重定向到file.txt?

错啦! 上述命令只会标准输出重定向到file.txt文件, 而错误输出还是重定向到终端(或者叫做命令行, 控制台, 屏幕). 因为首先解析的是2>&1,此时的1指向的还是标准输出, 即终端, 解析到1>file.txt时, 标准输出才被重定向到file.txt. 下面我将用一个例子来验证我的结论:

test.sh是一个简单的脚本, 会把STDOUT输出到标准输出, 将STDERR输出到错误输出

$ cat test.sh
echo 'STDOUT' >&1
echo 'STDERR' >&2

我们先验证脚本的正确性, 标准输出和错误输出都被正确的捕捉到了, 脚本可以同时输出标准输出和错误输出, 正确性得以验证.

现在我们再来验证我一开始的结论, 执行bash ... 2>&1 1>file.txt形式的命令, 可以看到错误输出STDERR被输出到了终端, 而file.txt中仅有标准输出STDOUT

那么应该怎么改成我们想要的结果呢? 很简单, 将2>&1和1>file.txt调换个位置即可, 即bash ... 1>file.txt 2>&1; 或者使用bash ... &>file.txt, 都可以达到我们想要的效果

重定向另外一个值得注意的事项

重定向另外一个需要注意的事项就是: 执行类似于command > file.txt的命令时, 会首先判断file.txt是否存在, 若存在则先清空文件, 若不存在则创建文件, 随后才会执行command

假设有一个已经排好序的文件file.txt, 我们对这个文件去重的话, 执行uniq file.txt > file.txt会直接清空文件

想要不生成额外的临时文件做到去重的话, 正确的做法应该是使用管道|配合tee命令, 而不是使用重定向

标签:输出,重定向,错误,标准,注意,file,Linux,txt
From: https://www.cnblogs.com/wbourne/p/17379592.html

相关文章

  • linux yum明明已经安装lzszz上传文件提示命令零错误
    遇到错误如下:Loadedplugins:fastestmirror,refresh-packagekit,securityDeterminingfastestmirrorsYumRepoError:AllmirrorURLsarenotusingftp,http[s]orfile.Eg.Invalidrelease/repo/archcombination/removingmirrorlistwithnovalidmirrors:/var......
  • linux下安装nginx-rtmp
    1.下载安装包并且解压mkdirnginxcdnginxwgethttps://repo.huaweicloud.com/nginx/nginx-1.17.9.tar.gzwgethttps://codeload.github.com/arut/nginx-rtmp-module/tar.gz/v1.2.1tar-zxvfnginx-1.17.9.tar.gzunzipmaster.zip2.安装基础环境yuminstall-yopenss......
  • 学Linux学到的C函数
    strncmp()库文件:string.hstrncmp函数为字符串比较函数,字符串大小的比较是以ASCII码表上的顺序来决定,此顺序亦为字符的值。其函数声明为intstrncmp(constchar*str1,constchar*str2,size_tn);功能是把str1和str2进行比较,最多比较前 n 个字节,若str1与str2的......
  • Windows、Linux快速排查系统是否被黑
    一、Windows1.存在隐藏用户或异常用户以Windows为例,右键计算机->管理->查看本地用户和组,如果用户或用户组带有$符号,说明该用户/用户组被隐藏,很有可能被黑了。如下截图    2.异常进程通过任务管理器查看是否存在异常进程,比如phpstudy被黑后可能存在12345.exe这......
  • 如何灵活运用Linux 进程资源监控和进程限制
    报告Linux进程统计信息你可以使用 mpstat 单独查看每个处理器或者系统整体的活动,可以是每次一个快照或者动态更新。为了使用这个工具,你首先需要安装 sysstat:#yumupdate&&yuminstallsysstat[基于CentOS的系统]#aptitutdeupdate&&aptitudeinst......
  • Linux使用源安装nginx
    1.安装依赖包##一键安装上面四个依赖yum-yinstallgcczlibzlib-develpcre-developensslopenssl-devel2.下载并解压安装包//创建一个文件夹cd/usr/localmkdirnginxcdnginx//下载tar包wgethttp://nginx.org/download/nginx-1.21.6.tar.gztar-xvfnginx-1.21.......
  • Linux中Buffer和Cache的区别
    Linux中Buffer和Cache的区别1.cache,缓存区,是高速缓存。是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU......
  • lazarus 2.2.6+FPC 3.2.2绿色整合版 for linux aarch64
    lazarus2.2.6+FPC3.2.2绿色整合版forlinuxaarch64https://www.cnblogs.com/qiufeng2014/p/17213806.html已集成常见控件及修正了我开发遇到的Bug,这个版本包含x86_64win64交叉编译环境,有兴趣的可以下载玩玩。这个整合版的特点:一、修复代码编辑不能输入中文的Bug二、修......
  • linux LVM和磁盘配额
    目录一、LVM原理二、LVM的命令三、创建lvm过程四、扩容五、磁盘配额         一、LVM原理lvm是逻辑卷管理,可以让用户动态管理磁盘,不用考虑物理磁盘的问题,可以快速扩充磁盘大小,可以不用一个磁盘一个磁盘挂载使用,不在要求是连续的空间,将多个物理磁盘连......
  • Linux常用命令-Shell应用技巧
    Bash应用技巧命令补齐:允许用户输入文件名起始的若干个字,按Tab键补齐文件名 命令历史:history命令可以显示以前执行过的命令列表方向键↑和方向键↓可以查找以前执行过的命令 命令别名例:aliascopy=cp 表示给cp命令取个copy的别名aliasxrm='rm-f' 查看别名信息:......