Linux:重定向

简介: 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系统。


追加重定向

相比于输出重定向,追加重定向是将输出内容添加到指定文件的末尾,而不是覆盖文件原有内容。

追加重定向使用符号" >> "来实现。以下是一些案例来说明追加重定向的使用:

  1. 将命令的输出追加到文件中:
    假设我们有一个命令"date",该命令可以显示系统的当前日期和时间。我们可以使用追加重定向将输出内容追加到一个文件中,而不是在屏幕上显示。
    示例:
    date >> log.txt
    这个命令会将日期和时间追加到名为log.txt的文件中。如果log.txt文件不存在,则会创建一个新文件。
  2. 将多个命令的输出追加到同一个文件中:
    如果要将多个命令的输出都追加到同一个文件中,可以使用追加重定向符号" >> "。
    示例:
    command1 >> output.txt; command2 >> output.txt
    这个命令会将command1command2的输出都追加到名为output.txt的文件中。每个命令后使用分号;来分隔

追加重定向也可以与管道一起使用,来对命令的输出进行处理和追加。例如:command1 | command2 >> output.txt,这个命令会将command1的输出通过管道传递给command2进行处理,并将处理后的结果追加到output.txt文件中。


输出重定向与追加重定向的本质

输出重定向与追加重定向都是进行向文件写入的功能,想要写入,那就需要先打开文件。

在C语言中,用fopen函数打开文件,而fopen有一个参数,决定以什么形式打开:

其中以r打开,就是只读;以w打开,则会覆盖以前的文件内容;以a打开,则会在文件末尾追加。

另外,wa形式打开文件,如果文件不存在,都会重新创建一个同名文件

所以输出重定向的本质是以w形式打开文件,追加重定向的本质是以a形式打开文件。


输入重定向

在Linux中,输入重定向是一种将命令的输入从键盘转向另一个来源的方法。它允许将数据从文件、命令或其他命令的输出作为命令的输入。

输入重定向使用符号“<”来指示将输入从其他源重定向到命令。

当cat命令不接任何文件,此时其默认会把读取对象作为键盘,键盘输入什么,它就输出什么。

而我们可以使用输入重定向,将cat指令的数据来源定向到某个文件。

使用文件作为输入:假设有一个名为input.txt的文件,其中包含一些数据。可以使用输入重定向将此文件作为命令的输入。

cat < input.txt
Hello Linux

此处cat接收到了input.txt内部的字符串,并将其输出。


相关文章
|
8月前
|
Unix Linux Shell
【探索Linux】P.12(文件描述符 | 重定向 | 基础IO)
【探索Linux】P.12(文件描述符 | 重定向 | 基础IO)
79 0
|
5月前
|
存储 Unix Linux
Linux I/O 重定向与管道
【8月更文挑战第17天】重定向在Linux中改变命令I/O流向,默认有&quot;&gt;&quot;覆盖输出至文件及&quot;&gt;&gt;&quot;追加输出至文件末尾,便于保存结果;使用&quot;&lt;&quot;从文件读取输入而非键盘,高效处理数据。文件描述符如0(stdin)、1(stdout)、2(stderr)标识I/O资源,支持读写操作。管道以&quot;|&quot;连接命令,使前一命令输出成为后一命令输入,如排序用户或找出CPU占用最高的进程,构建复杂数据处理流程。
54 9
|
5月前
|
存储 Unix Linux
Linux I/O 重定向与管道
【8月更文挑战第14天】输出重定向可将命令结果存入文件,如`&gt;`覆盖写入或`&gt;&gt;`追加写入。输入重定向从文件读取数据,如`&lt;`代替键盘输入。这些操作利用文件描述符(如0:stdin, 1:stdout, 2:stderr)管理I/O。管道`|`连接命令,使前一命令输出作为后一命令输入,便于数据处理,如排序用户`sort -t: -k3 -n /etc/passwd | head -3`或查找CPU占用高的进程`ps aux --sort=-%cpu | head -6`。
48 4
|
5月前
|
Unix Linux Shell
Linux I/O 重定向简介
Linux I/O 重定向简介
45 2
|
5月前
|
存储 Linux 数据处理
在Linux中,管道(pipe)和重定向(redirection)的是什么?
在Linux中,管道(pipe)和重定向(redirection)的是什么?
|
6月前
|
Linux 数据处理 C语言
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
86 0
|
6月前
|
Linux C语言 C++
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
63 0
|
7月前
|
Linux
【linux】重定向|缓冲区
【linux】重定向|缓冲区
45 0
|
8月前
|
Linux C语言 UED
【Linux】开始了解重定向
上一篇文章我们复习了C文件IO相关操作,了解了linux下的文件系统调用(open write read ),认识了文件描述符fd值,今天我们来学习重定向和缓冲区,这个缓冲区之前遇到过很多次,比如进度条项目的刷新缓冲区操作。然后我们可以来尝试封装一下系统调用,模拟C语言的文件库。
57 2
|
8月前
|
Linux
【Linux】Linux的管道与重定向
【Linux】Linux的管道与重定向