输入/输出重定向符及命令行管道的使用

输出重定向 >>>

cat 命令是一个比较常用的命令,下面结合cat提供几个示例,说明重定向符的几种使用方式。

  1. cat的简单使用。
    cat 命令单独使用可作为输入,默认将输出至标准输出,也就是屏幕。在使用cat输入时,Ctrl-D可以输入eof结束输入。
# 注:以下用 <注释> 表示注释 
root]#cat # 默认输出到屏幕
123456
123456 <ctrl-D>
root]#cat >&1 # 与直接使用cat功能相同
123456
123456 <Ctrl-D>

在这里插入图片描述
cat 命令加上文件,就可以输出文件的内容。
在这里插入图片描述

  1. > 输出重定向
    输出重定向符后加上一个文件,可将数据存储到文件中。
root]#cat > file
123
456
789 <Ctrl-D>
root]#cat file
123
456
789 <Ctrl-D>

在这里插入图片描述
3. >> 追加重定向。
可将数据追加至之前的数据后面,不会进行覆盖。而>是以覆盖的方式写入的。

root]#cat file
123546789
root]#cat >> file
abcdefghi <Ctrl-D>
root]#cat file
123546789
abcdefghi

在这里插入图片描述
4. 错误重定向
> 其实是 1> 的简写,也就是将标准输出重定向,而还有一种常用的是标准错误输出重定向。
标准错误输出(文件句柄 /proc/self/fd/2)一般情况下输出到屏幕上,我们也可以利用输出重定向将错误信息输出到一个文件中便于查看。

可以看到,我们试图cat 一个不存在的文件时,系统提示一个错误,它是直接打印在屏幕上的。 我们使用 2> 可以将标准错误输出重定向到 error.txt 中。
在这里插入图片描述
现在,我们增加一个 test 文件,再执行之前的命令,使得命令执行成功不产生错误输出。可以看到,test文件的内容正确被输出,因此证明错误重定向并不会影响我们正常的输出功能。
在这里插入图片描述
现在我们还可以,将标准输出重定向到 out.txt 文件中,将错误输出重定向到 error.txt 中。可以看到 out.txt 文件成功被写入。
在这里插入图片描述
同时,我们可以将标准输出,和错误输出都重定向到同一个文件中。不过这次我们使用 >> 追加的方式。(注:这里可以使用 cat test 1>> log.txt 2>> log.txt || date >> log.txt ) 命令,在执行 cat test 失败时,再多执行一个语句 date ,这样在执行错误时能够将错误时间也一并写入文件中)
在这里插入图片描述
6. 重定向绑定
2>&1 这就是一个最形象的重定向绑定,此语句将错误输出将和标准输出绑定到同一个文件描述符上,即它们现在都输出到屏幕上。
在这里插入图片描述
同理,如果我们想将输出和错误输出都绑定到同一个文件上,可以不用 1>> log.txt 2>> log.txt 这样的写法,直接 cat ttt 1>>log.txt 2>&1 即可。注意这里 标准输出使用的是追加方式,因此绑定后的错误输出也是追加方式写入的。
在这里插入图片描述

  1. 重定向到 /dev/null
    一般地,我们想将输出结果丢弃,我们会输出到 /dev/null 。而我们直到可以同时进行多次重定向。

这里不演示,需要注意的是, >/dev/null 2>&12>&1 >/dev/null 这两种用法。

  • 前者:将标准输出 重定向至 null, 而后将错误输出与 标准输出绑定,则。
    标准输出 与 错误输出 都输出到 null, 即丢弃数据
  • 后者:将错误输出 重定向至 标准输出(屏幕),而后将 标准输出 重定向至 null。
    需要注意的是,一开始标准输入指代的是屏幕,而标准输出在重定向时从指向屏幕变成了指向null。这有点像指针的概念。而后者的效果就是,错误输出 在屏幕显示,标准输出 丢弃
    在这里插入图片描述
输入重定向 <<< 及命令行管道 |
  1. < 输入
    命令 < 文件 将指定文件作为命令的输入设备
    在这里插入图片描述
  2. << 分界符
    命令 << 分界符 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串

这里指定 end 作为输入结束的分界符。
在这里插入图片描述

  1. <> 组合使用
    命令 < 文件 1 > 文件 2 将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中。

这里将一个无序的文件 file 内容排序后,重定向到新的文件 file_ordered 中。
在这里插入图片描述
4. | 管道也可作为一种标准输入
一般我们将上一个命令的输出结果传递给下一个命令时(将左侧命令的标准输出转换为标准输入,提供给右侧命令作为参数),可以使用 | 来连接。

例如:
在这里插入图片描述
5. |xargs 组合

xargs 命令 是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数

这里,我们只讨论其 处理管道 的功能。 因为有些命令不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数。

例如:echo 命令
在这里插入图片描述
在比如:递归的删除当前目录下所有以 .cpp 后缀结尾的文件 (参考:https://blog.csdn.net/weixin_43919932/article/details/120268713

find ./ -name "*.cpp" | xargs rm -f

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Linux输入输出定向是指将命令输入输出从默认的终端改为其他文件或设备。输入定向使用符号“<”,将文件作为命令输入输出定向使用符号“>”或“>>”,将命令输出写入文件或设备。例如,将一个文件作为命令输入:cat < file.txt,将命令输出写入文件:ls > file.txt,将命令输出追加到文件末尾:echo "hello" >> file.txt。这些定向操作可以方便地处理大量数据或自动化脚本的输出。 ### 回答2: 在Linux系统下,输入输出可以通过定向来操作。输入定向是将输入从键盘(默认的标准输入)改为来自文件或命令输出定向是将输出从终端(默认的标准输出)改为写入文件或向命令管道传送。 输入定向可以使用符号<来进操作。比如,如果想从文本文件中读取输入,可以使用命令cat < file.txt,其中<符号告诉Linux将文本文件作为标准输入。如果要将多个文件输入到同一个命令中,可以使用符号<来分隔文件,例如,cat < file1.txt < file2.txt。 输出定向可以使用符号>或>>来进操作,>符号会将输出写入到一个新文件中,如果该文件不存在,则创建一个新文件。例如,echo "hello world" > file.txt会将字符串输出到file.txt文件中。>>符号则会将输出追加到现有文件末尾。如果文件不存在,则创建一个新文件,例如,echo "hello world" >> file.txt会将字符串输出到file.txt文件末尾。 除了>和>>符号,还有一些其他的输出定向符号,包括>&、<&和&>。&>符号将标准输出和标准错误输出都写入到同一个文件中。<&符号将定向标准输入命令之间的通信。>&符号将标准输出定向到错误输出,将错误输出定向到标准输出。 总之,输入输出定向是Linux系统中非常要的概念,可以帮助用户更高效地处理输入输出。熟练地使用输入输出定向符号可以极大地提高代码的可读性和效率。 ### 回答3: Linux输入输出定向是一种非常要的命令技巧,主要用于在命令上通过不同的方式定向程序的输入输出输入定向指的是将已有的文件内容作为命令或程序的输入,让其执相应的操作。通常情况下,我们可以使用<符号来进输入定向,比如: ``` $ cat <file.txt ``` 这条命令将会把file.txt这个文件中的内容输出命令上。 输出定向则是将命令或程序的输出结果输出到指定的文件中,而不是输出到屏幕上。在Linux系统中,我们可以使用>符号来进输出定向,比如: ``` $ ls -l > file.txt ``` 这条命令将会把ls -l命令的执结果输出到file.txt这个文件中。 除了>符号外,我们还可以使用>>符号来进追加输出定向,比如: ``` $ echo "hello" >> file.txt ``` 这条命令将会把字符串"hello"附加到file.txt这个文件的末尾处。 除了上述的输入输出定向方式外,还有一种被称为管道符的方式,它的作用是把一个命令或程序的输出结果作为另一个命令或程序的输入,来处理数据。比如: ``` $ cat file.txt | grep "hello" ``` 这条命令将会输出file.txt文件中所有包含"hello"这个关键字的。 总的来说,输入输出定向是Linux系统中一种非常要的命令操作技巧,它可以帮我们更加高效和方便地处理大量的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫RT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值