美文网首页Linux学习之路
Linux / Unix示例中的输入输出重定向

Linux / Unix示例中的输入输出重定向

作者: 程序员will | 来源:发表于2019-07-30 09:52 被阅读0次

    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 / Unix中的重定向

    总结

    • Linux中的每个文件都有一个与之关联的相应文件描述符
    • 键盘是标准输入设备,而屏幕是标准输出设备
    • “>”是输出重定向运算符。“>>”将输出附加到现有文件
    • “<”是输入重定向运算符
    • “>&”将一个文件的输出重定向到另一个文件。
    • 您可以使用相应的文件描述符2重定向错误。

    相关文章

      网友评论

        本文标题:Linux / Unix示例中的输入输出重定向

        本文链接:https://www.haomeiwen.com/subject/fthgrctx.html