利用重定向在Linux终端任意读写数据
重定向是一种十分高效的数据流动方式,它能帮你减少很多鼠标和键盘上的操作。 对于任何编程或脚本语言,输入与输出重定向都是很自然的功能。严格来说,当你使用电脑时,数据自然而然地在发生着重定向。从 stdin(标准输入,通常是你的键盘或者鼠标)读取输入,输入则发往 stdout(标准输出,一段文本或者数据流),最后错误信息送至 stderr。如果你使用 之类的 shell,那么理解这些数据流能够让你更好地控制信息流向。 标准输入、标准输出以及标准错误输出都存在于 Linux 文件系统中。你可以在 /dev 查看: $ ls/dev/std* /dev/stderr@ /dev/stdin@ /dev/stdout@ 你可能没法直接使用它们,但将它们想象成你能传递数据的元位置,会很有帮助。 重定向的基础很简单:用一些 > 符号重定向输出,然后用另外一些 < 符号重定向输入。 重定向输出将 ls 命令的输出写入一个文件: $ ls>list.txt 你没法像平常那样看到 ls 的输出,因为它们并没有被发送到屏幕,而是被写入 list.txt 文件了,这个功能用处太多了,事实上,你甚至可以用它来将文件内容拷贝到另一个文件。不一定是文本文件,你也可以用将重定向用于二进制数据: $ cat image.png > picture.png (你可能会好奇为什么要这样做,有时候对于 而间接有用。) 重定向输入你也能将输入重定向“到”一个命令。可以说,它没有重定向输出那么有用,因为许多命令已经被硬编码,只从你的参数中接收输入。但是,如果某个命令需要一系列参数,而且你把这些参数写在文件里,想要快速“复制粘贴”到终端的时候(除非你并不想复制粘贴),它就帮得上忙了。 $ sudo dnf install $(<package.list) 重定向输入得常规用法是嵌入文档here-document(简写成 here-doc)和嵌入字符串here-string 技巧。这种输入方法将一整块文本重定向至标准输入流,直到碰见一个特殊的文件结束标记(许多人习惯用 EOF,实际上你可以使用任何字符串,只要它是唯一的)。试着把这些(在第二个 EOF 标记之前)敲进你的终端: $ echo<< EOF > foo (编辑:韶关站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |