这篇文章主要讲解了“Linux重定向方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux重定向方法怎么使用”吧!
谈到 Linux
的重定向,就不得不提以下这3种数据流:
输入信息会从 stdin
中读取(标准输入,通常是键盘或鼠标)。
输出信息会被输出到 stdout
(标准输出,一个文本文件或者数据流)。
错误信息会被输出到 stderr
。
了解了这些数据流的存在,在你使用 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 << EOF
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
就像标准输入、标准输出以及标准错误一样,在 Linux
文件系统中,空,也存在一个文件与之对应,它叫做 null
,放在 /dev
目录下。为了方便读,人们经常省略斜杠,直接把他读作dev null
。
/dev/null
并不保存数据,被写入 /dev/null
的数据最终都会丢失,就像被丢进虚空中一样。因此,你可以使用重定向将不需要的数据输送到 /dev/null
。例如,find
命令的输出往往很冗长,而且在搜索文件时还经常会报告权限冲突的错误,像这样:
$ find ~ -type f
/home/seth/actual.file
find: /home/seth/foggy': Permission denied find:
/home/seth/groggy': Permission denied
find: `/home/seth/soggy': Permission denied
/home/seth/zzz.file
这时,你就可以将错误信息重定向到 /dev/null
,以过滤掉不必要的信息,像这样:
$ find ~ -type f 2> /dev/null /home/seth/actual.file /home/seth/zzz.file
感谢各位的阅读,以上就是“Linux重定向方法怎么使用”的内容了,经过本文的学习后,相信大家对Linux重定向方法怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。