linux中的文件重定向是什么?重定向管道是shell的一个高级特性,它允许用户手动更改程序获取输入和产生输出的位置。什么是重定向?重定向是将数据发送到其他地方。具体来说,应该出
linux中的文件重定向是什么?重定向管道是shell的一个高级特性,它允许用户手动更改程序获取输入和产生输出的位置。
什么是重定向?
重定向是将数据发送到其他地方。具体来说,应该出现在屏幕上的数据被传输到其他设备,如文件或打印机。
Linux中的I/O重定向只是一个过程,它捕获文件或命令、程序、脚本甚至脚本中的代码块的输出,然后将捕获的输出作为输入发送到另一个文件、命令、程序或脚本。I/O重定向中文件描述符的概念。系统为每个打开的文件分配一个文件标识符来跟踪文件,这有点类似于C编程中的文件句柄。文件标识符是一个数字,不同的数字代表不同的含义。默认情况下,系统占用三个。分别是0个标准输入(stdin)、1个标准输出(stdout)和2个标准错误(stderr),另外3~9个是保留标识符,可以指定为标准输入、输出或错误作为临时连接。这通常可以解决许多复杂的重定向请求。
什么是输入的重定向?
与标准输出类似,程序默认接收输入的地方称为标准输入(stdin)。一般来说,标准输入总是指向键盘。例如,如果您使用不带任何参数的cat命令,那么cat将在那里停止,并等待来自标准输入(即键盘)的数据。
#猫
用户输入的每一行都将立即显示在屏幕上,直到使用组合键Ctrl+D向cat命令提供文件结束符。
你好
再见
& ltctrl+D >//按下<>
通过使用输入重定向符号“
# cat & ltcxw
你好
你好
你好
上面的命令将文件cxw作为输入传递给cat命令,cat读取cxw中的每一行,然后输出读取的内容。最后,当猫遇到文件的结尾时,它停止阅读。整个过程和之前一模一样。
正如读者已经想到的,cat命令可以通过接受一个参数来显示文件的内容,因此“cat<>
另一个输入重定向的例子叫做here document,它使用了操作符“
# cat & lt& lt文件结束
& gt你好
& gt再见
& gt文件结束
你好
再见
Cat命令接受来自键盘的两行输入,并将它们发送到标准输出。文档会立即指定一个表示输入结束的分隔符(EOF)。当shell遇到这个单词时,它认为输入已经结束,并将键盘输入传递给命令。所以这一次,cat命令会将用户的输入显示在一块,而不是每次收到一行就打印出来。
用户可以选择任意单词作为即时文档的分隔符,如eof、END、EOF等。都是不错的选择,只要能保证不是正文的一部分。
输入重定向和输出重定向的结合呢?
# cat & lt& ltEND & gt你好
& gt你好世界!
& gt再见
& gt结束
这个命令首先让cat命令获得作为即时文档的输入,然后将cat的输出重定向到hello文件。查看hello文件,您应该看到以下内容。
你好世界!
再见
什么是输出重定向?
程序默认输出结果的地方称为标准输出(stdout)。一般来说,标准输出总是指向显示器。例如,下面的ls命令获取当前目录中的文件列表,并将其输出到标准输出,因此用户可以在屏幕上看到这些文件名。
#ls
Bin cdrom etc initrd initrd,img,old lib32 lost+dound mnt procBin cdrom etc initrd initrd,img,old lib32 lost+dound mnt proc
输出重定向用于将程序的输出转移到另一个地方。以下命令将ls的输出重定向到ls_out文件。
# ls & gt~/ls_out
这样,ls的输出不会显示在显示器上,而是出现在用户主目录的ls_out文件中,每行显示一个文件名。
#cat ~/ls_out
箱子
靴子
(同CD-ReadOnlyMemory)只读光盘
……
如果ls out文件不存在,则输出重定向符号“>”。将尝试创建此文件。如果ls_out文件已经存在,那么">"将删除文件中的原始内容,然后用新内容替换它。
# uname-r >ls_out
#猫ls_out
24-21-通用
你可以看到,“>”没有礼貌地在原始的一堆文件名后面加上版本信息,而是直接覆盖了它们。如果您想保留原始文件中的内容,您应该使用输出重定向符号" >:>。
# date & gtDate_out //将Date命令的输出重定向到Date_out文件
#cat date_out //检查date_out文件的内容
2022年6月1日星期三8:00:00 CST
# uname-r >& gtData_out //将uname命令生成的版本信息附加到date_out文件的末尾
#猫约会_出去
2022年06月01日 星期三 8:00:00 CST 2.6.24 -21-generic