Linux:重定向
- 输出重定向
- 追加重定向
- 输出重定向与追加重定向的本质
- 输入重定向
输出重定向
在Linux中,输出重定向是一种将命令的输出发送到不同位置的方法。通常,执行命令时,输出会显示在终端上。然而,使用输出重定向,可以将输出保存到文件中,或者将输出发送到另一个命令中进行进一步处理。
输出重定向:使用">"符号可以将命令的正常输出重定向到一个文件中。
示例:
ls > file.txt
上述命令ls将当前目录中的文件和文件夹列出,并将结果保存到名为file.txt的文件中。如果file.txt文件已经存在,则会被覆盖。
再比如echo可以将字符串写入到屏幕中,我们可以通过输出重定向,将本应输入到屏幕的数据重定向到某个文件中:
echo "Hello Linux" > file.txt
同样的,如果file.txt文件已经存在,则会被覆盖,如果不存在,那么会创建一个同名文件。
所以我们可以通过输出重定向创建文件:
> file.txt
在输出重定向左侧,没有任何内容,即代表不写入任何内容。重定向到file.txt
,此时就会创建一个file.txt
空文件。
输出重定向是Linux中一个非常强大的功能,可以让我们更好地管理和处理命令的输出结果。无论是保存输出到文件,还是将输出作为另一个命令的输入,输出重定向都可以帮助我们更高效地使用Linux系统。
追加重定向
相比于输出重定向,追加重定向是将输出内容添加到指定文件的末尾,而不是覆盖文件原有内容。
追加重定向使用符号" >> "来实现。以下是一些案例来说明追加重定向的使用:
-
将命令的输出追加到文件中:
假设我们有一个命令"date",该命令可以显示系统的当前日期和时间。我们可以使用追加重定向将输出内容追加到一个文件中,而不是在屏幕上显示。
示例:
date >> log.txt
这个命令会将日期和时间追加到名为
log.txt
的文件中。如果log.txt
文件不存在,则会创建一个新文件。 -
将多个命令的输出追加到同一个文件中:
如果要将多个命令的输出都追加到同一个文件中,可以使用追加重定向符号" >> "。
示例:
command1 >> output.txt; command2 >> output.txt
这个命令会将
command1
和command2
的输出都追加到名为output.txt
的文件中。每个命令后使用分号;
来分隔。
追加重定向也可以与管道一起使用,来对命令的输出进行处理和追加。例如:command1 | command2 >> output.txt
,这个命令会将command1
的输出通过管道传递给command2
进行处理,并将处理后的结果追加到output.txt
文件中。
输出重定向与追加重定向的本质
输出重定向与追加重定向都是进行向文件写入的功能,想要写入,那就需要先打开文件。
在C语言中,用fopen函数打开文件,而fopen有一个参数,决定以什么形式打开:
其中以r
打开,就是只读;以w
打开,则会覆盖以前的文件内容;以a
打开,则会在文件末尾追加。
另外,以w
和a
形式打开文件,如果文件不存在,都会重新创建一个同名文件。
所以输出重定向的本质是以w形式打开文件,追加重定向的本质是以a形式打开文件。
输入重定向
在Linux中,输入重定向是一种将命令的输入从键盘转向另一个来源的方法。它允许将数据从文件、命令或其他命令的输出作为命令的输入。
输入重定向使用符号“<”来指示将输入从其他源重定向到命令。
当cat命令不接任何文件,此时其默认会把读取对象作为键盘,键盘输入什么,它就输出什么。
而我们可以使用输入重定向,将cat指令的数据来源定向到某个文件。
使用文件作为输入:假设有一个名为input.txt
的文件,其中包含一些数据。可以使用输入重定向将此文件作为命令的输入。
cat < input.txt
Hello Linux
此处cat接收到了input.txt
内部的字符串,并将其输出。