在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
输入/输出重定向大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。 输出重定向一个命令的输出通常用于标准输出,也可以很容易地将输出转移到一个文件。这种能力被称为输出重定向: 如果记号 检查下面的 who 命令,它将命令的完整的输出重定向在用户文件中。
请注意,没有输出出现在终端中。这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。如果你想检查 users 文件,它有完整的内容:
如果命令输出重定向到一个文件,该文件已经包含了一些数据,这些数据将会丢失。考虑这个例子:
您可以使用
输入重定向正如一个命令的输出可以被重定向到一个文件中,所以一个命令的输入可以从文件重定向。大于号 通常从标准输入获取输入的命令可以有自己的方式从文件进行输入重定向。例如,为了计算上面 user 生成的文件中的行数,你可以执行如下命令:
在这里,它产生的输出为 2 行。你可以通过从 user 文件进行 wc 命令的标准输入重定向:
请注意,两种形式的 wc 命令产生的输出是有区别的。在第一种情况下,用行数列出该文件的用户的名称,而在第二种情况下,它不是。 在第一种情况下,wc 知道,它是从文件用户读取输入。在第二种情况下,只知道它是从标准输入读取输入,所以它不显示文件名。 Here 文档here document 被用来将输入重定向到一个交互式 Shell 脚本或程序。 在一个 Shell 脚本中,我们可以运行一个交互式程序,无需用户操作,通过提供互动程序或交互式 Shell 脚本所需的输入。 Here 文档的一般形式是:
这里的 Shell 将 分隔符告诉 Shell here 文档已完成。没有它,Shell 不断的读取输入。分隔符必须是一个字符且不包含空格或制表符。 以下是输入命令 wc -l 来进行计算行的总数:
可以用 here document 编译多行,脚本如下:
这将产生以下结果:
下面的脚本用 vi 文本编辑器运行一个会话并且将输入保存文件在 test.txt 中。
如果用 vim 作为 vi 来运行这个脚本,那么很可能会看到以下的输出:
运行该脚本后,你应该看到以下内容添加到了文件 test.txt 中:
丢弃输出有时你需要执行命令,但不想在屏幕上显示输出。在这种情况下,你可以通过重定向到文件
在这里 command 是要执行的命令的名字。文件 为了丢弃一个命令的输出和它的错误输出,你可以使用标准重定向来将 STDOUT 重定向到 STDERR :
在这里,2 代表 STDERR , 1 代表 STDOUT。可以上通过将 STDERR 重定向到 STDERR 来显示一条消息,如下:
重定向命令以下是可以用来重定向的命令的完整列表:
需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。 |
请发表评论