什么是重定向,Linux重定向用法详解?

【什么是重定向,Linux重定向用法详解?】相信大家平时都会有需要复制粘贴数据的时候,如果是打开文件进行复制粘贴,就不可避免的需要较多的鼠标与键盘的操作,就会比较繁琐 。那么有没有可以省掉这些繁琐操作的复制粘贴的方法呢?  
答案是肯定的,那就是重定向 。重定向是一种高效的方法,无需大量的鼠标与键盘操作就可以完成数据的转移 。重定向可以分为输入重定向以及输出重定向这两种类型 。由于所有程序都有输入或者输出,因此输入和输出的重定向是任何编程语言或脚本语言都自带的功能 。  
每当你与计算机交互时,重定向就必然会发生 。学会使用重定向,不仅可以让你与计算机更好地交互,还可以提高你的工作效率,因此,请让良许为你讲解 Linux 系统中重定向的常见用法:  
Linux 中的数据流谈到 Linux 的重定向,就不得不提以下这3种数据流:  
了解了这些数据流的存在,在你使用 Shell 时,你就可以更好地控制数据的流向了 。  
在 Linux 系统中,标准输入,标准输出以及标准错误都作为文件存在 。你可以在 /dev 目录下看到它们:  
$ ls /dev/std*  
/dev/stderr/dev/stdin/dev/stdout  
重定向输出在 Linux 系统中,使用 > 字符表示重定向输出 。例如,将 ls 命令的输出重定向到一个文件中:  
$ ls > list.txt  
执行以上命令后,屏幕上并不会显示 ls 命令的输出信息,因为输出信息已经被重定向至 list.txt 文件中了 。  
除此之外,重定向还有许多用途,它还可以用于复制文件的内容,而且不限于复制文本文件,二进制文件也可以复制:  
$ cat image.png > picture.png  
如果你想要将一个文件的内容复制到另一个文件的末尾,你只需将 > 字符换成 >> 字符串即可,像这样:  
$ cat lxlinux >> alvin  
重定向输入与重定向输出相反,重定向输入使用的是 < 字符 。  
输入重定向可以将输入信息重定向至命令中作为参数使用 。该功能可能比较少用,但是,当命令需要一个参数列表时,而这些参数都存在一个文件中,然后你想快速地将它们从文件中复制粘贴到终端,这时这个功能就能派上用场了 。  
例如,package.list 里记录了你需要安装的包的列表,而你想要快速地安装所有的包,只需执行以下这一条命令,就能一次性安装 package.list 里的所有包:  
$ sudo dnf install $(<package.list)  
输入重定向的常见用法是 Here-document (简称 Here-doc) 以及 Here-string。  
Here-doc 将输入的文本块重定向至标准输入流,直至遇到特殊的文件结束标记符为止(文件结束标记符可以是任意的唯一的字符串,但大部分人都默认使用 EOF) 。  
你可以尝试在终端输入以下命令(直到第二个 EOF 字符串结束):  
$ cat < alvin  
> lxlinux.net  
> EOF  
预期的输出应该是这样的:  
alvin  
lxlinux.net  
Here-doc 是 Bash 脚本编写者们将多行文本转储到文件或屏幕上的常用技巧 。  
Here-string 与 Here-doc 相似,但是它只有一个字符串,或者几个被引号括起来的字符串:  
$ cat <<< alvin  
alvin  
$ cat <<< \"alvin lxlinux.net\"  
alvin lxlinux.net  
重定向错误信息错误信息默认会进入叫 stderr 的流,使用 2> 可以对其进行重定向 。例如,将错误信息重定向到名为 output.log 的文件中:  
$ ls /nope 2> output.log  
重定向数据至 /dev/null就像标准输入、标准输出以及标准错误一样,在 Linux 文件系统中,空,也存在一个文件与之对应,它叫做 null ,放在 /dev 目录下 。为了方便读,人们经常省略斜杠,直接把他读作 dev null。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。