Linux / Unix示例中的输入输出重定向
什么是重定向?
重定向是Linux中的一项功能,因此在执行命令时,您可以更改标准输入/输出设备。任何Linux命令的基本工作流程都是输入并提供输出。
- 标准输入(stdin)设备是键盘。
- 标准输出(标准输出)设备是屏幕。
通过重定向,可以更改上述标准输入/输出。
在本教程中,我们将学习 -
[TOC]
输出重定向
的“> ”符号用于输出(stdout)重定向。
Linux / Unix中的重定向 - 揭秘!例:
ls -al> listings
这里命令ls -al的输出被重定向到文件“listing”而不是你的屏幕。
Linux / Unix中的重定向 - 揭秘!
注意:在将命令输出重定向到文件时使用正确的文件名。如果存在具有相同名称的现有文件,则重定向命令将删除该文件的内容,然后可能会被覆盖。“
如果您不希望覆盖文件但想要向现有文件添加更多内容,则应使用“>> ”运算符。
Linux / Unix中的重定向 - 揭秘!您可以将标准输出重定向到文件,还可以重定向到设备!
$ cat music.mp3> / dev / audio
cat命令读取文件music.mp3并将输出发送到作为音频设备的/ dev / audio。如果PC中的声音配置正确,此命令将播放music.mp3文件
输入重定向
该“< ”符号用于输入(STDIN)重定向
Linux / Unix中的重定向 - 揭秘!示例:Linux中的邮件程序可以帮助您从终端发送电子邮件。
您可以使用标准设备键盘键入电子邮件的内容。但是,如果要将文件附加到电子邮件,则可以使用以下格式的输入重定向运算符。
Mail -s“Subject”to-address <Filename
Linux / Unix中的重定向 - 揭秘!
这会将文件附加到电子邮件中,然后将其发送给收件人。
上面的例子很简单。让我们看看一些利用文件描述符的高级重定向技术。
文件描述符(FD)
在Linux / Unix中,一切都是文件。常规文件,目录,甚至设备都是文件。每个文件都有一个名为文件描述符(FD)的关联编号。
您的屏幕还有一个文件描述符。执行程序时,输出将被发送到屏幕的文件描述符,您可以在显示器上看到程序输出。如果输出发送到打印机的文件描述符,则程序输出将被打印。
错误重定向
无论何时在终端执行程序/命令,总共打开3个文件,即标准输入,标准输出,标准错误。
Linux / Unix中的重定向 - 揭秘!运行程序时,这些文件始终存在。如前所述,文件描述符与这些文件中的每一个相关联。
文件 | 文件描述符 |
---|---|
标准输入STDIN | 0 |
标准输出STDOUT | 1 |
标准错误STDERR | 2 |
默认情况下,错误流显示在屏幕上。错误重定向将错误路由到屏幕以外的文件。
为什么错误重定向?
错误重定向是Unix / Linux的一个非常流行的功能。
频繁的UNIX用户会认为许多命令会给你带来大量错误。
- 例如,在搜索文件时,通常会获得权限拒绝错误。这些错误通常无助于搜索特定文件的人。
- 在执行shell脚本时,您通常不希望错误消息使正常的程序输出变得混乱。
解决方案是将错误消息重定向到文件。
例1
$ myprogram 2> errorsfile
Linux / Unix中的重定向 - 揭秘!
上面我们正在执行一个名为myprogram的程序。
标准错误的文件描述符是2。
使用“2>”我们将错误输出重定向到名为“errorfile”的文件
因此,程序输出不会出错。
例2
这是另一个使用find语句的例子 -
find . -name'my *'2> error.log
使用“查找”命令,我们正在搜索“。” “name”以“my”开头的文件的当前目录
Linux / Unix中的重定向 - 揭秘!示例3让我们看一个更复杂的例子,
服务器管理员经常列出目录并将错误和标准输出存储到文件中,以后可以处理。这是命令。
ls Documents ABC> dirlist 2>&1
这里,
- 它将一个文件的输出写入另一个文件的输入。2>&1表示STDERR重定向到STDOUT的目标(这是文件dirlist)
- 我们将错误输出重定向到标准输出,而标准输出又被重定向到文件转向器。因此,输出都写入文件dirlist
总结
- Linux中的每个文件都有一个与之关联的相应文件描述符
- 键盘是标准输入设备,而屏幕是标准输出设备
- “>”是输出重定向运算符。“>>”将输出附加到现有文件
- “<”是输入重定向运算符
- “>&”将一个文件的输出重定向到另一个文件。
- 您可以使用相应的文件描述符2重定向错误。
网友评论