linux输入重定向符是,Linux系统中的输入和输出重定向

在Linux系统中,当你执行某个命令时,默认是从键盘接受输入数据,并将命令的结果输出到屏幕。因此,键盘是标准的输入对象,屏幕是标准的输出对象。

Linux中这些输入和输出的对象是可以被改变的,改变输入和输出对象的过程,被称为输入重定向和输出重定向。

下面我们就来看下如何进行输入和输出的重定向操作。

输出重定向

在Linux命令行中,我们可以使用'>'符号来执行输出重定向操作。

5cf8caffe0d7a466325b46fde62cfff4.png

例如:

ls -al > listings

上面通过'>'符号,将'ls -al'命令的输出结果重定向到了名为"listings"的文件中,而不是输出到屏幕。

linux输入重定向符是,Linux系统中的输入和输出重定向_第1张图片

这里需要注意的是,输出重定向到某个文件时,假设该文件原来就有内容的话,会将该文件的原有内容都覆盖掉,因此,重定向的文件名一定要填正确。

如果你不想让文件的内容被覆盖掉的话,而是想向文件中追加内容的话,那么,可以使用">>"的重定向符号,例如下面这个例子:

linux输入重定向符是,Linux系统中的输入和输出重定向_第2张图片

上面通过'>>'重定向符号,将"Thanks for reading"字符串追加到了sample文件的末尾。

此外,你还可以将输出信息重定向到某个设备,例如:

$ cat music.mp3 > /dev/audio

上面的cat命令会读取music.mp3文件的内容,并将该文件的内容输出到/dev/audio音频设备,如果你的系统中音频配置正确的话,那么这个命令就相当于在播放music.mp3里的音频信息。

输入重定向

在命令行中,可以使用'

d2c488ee69286bb26cd7a6795132ef88.png

例如,在Linux命令行中,我们可以使用mail程序来发送邮件。在发送邮件时,如果你想将某个文件附加到电子邮件中的话,可以使用输入重定向符来完成,以下是相关的命令格式:

Mail -s "Subject" to-address < Filename

上面的Filename是要附加的文件的文件名,例如,下面这个例子:

linux输入重定向符是,Linux系统中的输入和输出重定向_第3张图片

上面命令会将文件附加在电子邮件中,并将其发送给收件人。

以上介绍的重定向操作都是比较简单的例子,要实现更高级的重定向操作,就必须利用文件描述符,下面我们先来了解下什么是文件描述符。

文件描述符

在Linux系统中,常规文件、目录和各种设备都是以文件的形式存在的。每个文件都有一个被称为文件描述符的关联数字。

屏幕也关联了一个文件描述符,当你的程序的输出内容发送到了屏幕相关的文件描述符时,内容就会显示在屏幕上,当发送到了打印机关联的文件描述符上时,输出内容就会被打印出来。

每当你在终端上,执行一个程序时,默认都会打开三个文件描述符,分别对应三个输入或输出对象:

linux输入重定向符是,Linux系统中的输入和输出重定向_第4张图片

当程序执行出错时,默认会将错误输出到标准错误描述符对应的设备上,标准错误对应的设备默认就是屏幕。从上图中可以看到,标准输入的文件描述符是0,标准输出的文件描述符是1,标准错误的文件描述符是2。

我们可以通过标准错误的文件描述符,将程序的出错信息重定向到某个文件中,而不是屏幕上。

错误重定向

错误重定向是Linux系统中比较常见的操作。

如果你在执行某个程序时,想将程序的正常输出结果和错误输出结果都重定向到某个文件中时,就需要用到错误重定向操作,例如:

$ myprogram 2>errorfile

d0c076c081d478d83e9d55599166efec.png

上面我们在执行myprogram程序时,通过标准错误描述符"2",将错误信息输出到了errorfile文件中。这样,如果myprogram程序报错的话,就不会显示到屏幕上了,而是会输出到errorfile文件中。

当我们使用find命令查找文件时,经常会因为权限问题,在扫描某个无权访问的目录时,报没有访问权限的错误,这些错误默认是直接显示到屏幕上的。

但是这些错误信息会干扰屏幕上的正常的输出信息,此时,如果通过错误重定向操作,就可以将错误输出到单独的文件中,而不会干扰屏幕上的正常输出信息了。

例如下面这个例子:

find . -name 'my*' 2>error.log

上面我们通过find命令,在"."当前目录中搜索以"my"开头的文件,并将错误重定向到error.log文件中,以下是执行的结果:

linux输入重定向符是,Linux系统中的输入和输出重定向_第5张图片

如果你想将错误信息和正常信息都输出到同一个文件,那么可以参考下面这个例子:

ls Documents ABC > dirlist 2>&1

上面命令中,2>&1表示将标准错误(文件描述符:2)重定向到标准输出(文件描述符:1)上。这里标准输出又被重定向到了"dirlist"文件,因此,该命令就是将所有错误信息和正常信息都输出到dirlist文件中。

以下是命令的执行情况:

linux输入重定向符是,Linux系统中的输入和输出重定向_第6张图片

你可能感兴趣的:(linux输入重定向符是)