当前位置: 首页 > 科技观察

Linux重定向用法详解

时间:2023-03-15 00:36:09 科技观察

,大家好,我是良旭。相信大家平时都需要复制粘贴数据。如果打开一个文件进行复制粘贴,势必需要更多的鼠标和键盘操作,比较繁琐。那么有没有办法省去复制粘贴这些繁琐的操作呢?答案是肯定的,那就是重定向。重定向是一种无需大量鼠标和键盘操作即可传输数据的有效方法。重定向可以分为输入重定向和输出重定向两种。由于所有程序都有输入或输出,因此输入和输出的重定向是任何编程或脚本语言的固有特征。每当您与计算机交互时,重定向必然会发生。学会使用重定向,不仅可以让你更好的与电脑进行交互,还可以提高你的工作效率,所以请良旭给你讲解一下重定向在Linux系统中的常见用法:Linux中的数据流说起Linux重定向,你有提一下下面三个数据流:输入信息会从stdin(标准输入,通常是键盘或鼠标)中读取。输出信息输出到标准输出(标准输出,文本文件或数据流)。错误消息输出到stderr。知道这些数据流的存在,就可以在使用shell的时候更好的控制数据的流向。在Linux系统中,标准输入、标准输出和标准错误都以文件的形式存在。您可以在/dev目录中看到它们:$ls/dev/std*/dev/stderr/dev/stdin/dev/stdout重定向输出在Linux系统中,使用>字符表示重定向输出。例如将ls命令的输出重定向到一个文件:$ls>list.txt执行完上面的命令后,ls命令的输出信息将不会显示在屏幕上,因为输出信息已经被重定向到list.txt文件起来。另外,重定向还有很多用处,它还可以用来复制文件的内容,而且不限于复制文本文件,还可以复制二进制文件:$catimage.png>picture.png如果你想将一个文件复制到另一个文件的末尾,你只需要将>字符替换为>>字符串,如下所示:$catlxlinux>>alvi重定向输入而不是重定向输出,重定向输入使用<字符。输入重定向可以将输入信息作为参数重定向到命令。这个功能可能比较少见,但是当命令需要一个参数列表,并且这些参数保存在一个文件中,然后你想快速的从文件中复制粘贴到终端时,这个功能就可以派上用场了向上。例如,package.list记录了你需要安装的包列表,如果你想快速安装所有的包,只需要执行以下命令一次性安装package.list中的所有包:$sudodnfinstall的常用用法$(alvin>lxlinux.net>EOF预期的输出应该是这样的:alvinlxlinux.netHere-docisaBashScripter将多行文本转储到文件或屏幕的常用技巧。Here-string与Here-doc类似,但它只有一个字符串,或者用引号括起来的几个字符串:$cat<<重定向它。例如,将错误信息重定向到名为output.log的文件:$ls/nope2>output.log将数据重定向到/dev/null,就像Linux文件系统中的标准输入、标准输出、标准错误一样,空,那里同样是对应的一个文件,叫做null,放在/dev目录下。为了可读性,人们经常省略斜线,直接读为devnull。/dev/null不保存数据,写入/dev/null的数据最终会丢失,就像被扔进了虚空。因此,您可以使用重定向将不需要的数据通过管道传输到/dev/null。例如,find命令的输出通常很冗长,并且在搜索文件时经常报告权限冲突错误,就像这样:$find~-typef/home/seth/actual.filefind:`/home/seth/foggy':Permissiondeniedfind:`/home/seth/groggy':Permissiondeniedfind:`/home/seth/soggy':Permissiondenied/home/seth/zzz.file此时可以将报错信息重定向到/dev/null过滤掉不需要的信息,像这样:$find~-typef2>/dev/null/home/seth/actual.file/home/seth/zzz.file善用重定向在Bash中,重定向是一种传输数据的高效方法。你可能不会经常使用重定向,但是学习如何在需要的时候使用重定向可以为你省去很多不必要的复制和粘贴操作,从而节省很多操作鼠标和键盘的时间。请不要沉迷于复制和粘贴。使用重定向可以提高你的工作效率。不好吃吗?最后,希望本文的内容对您的工作有所帮助。如果您对Linux系统中的重定向还有一些疑问,有什么问题欢迎留言告诉我!本文经授权转载自公众号「良墟Linux」。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!