前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >LinuxShell重定向和管道

LinuxShell重定向和管道

作者头像
hotarugali
发布2022-02-28 20:08:41
发布2022-02-28 20:08:41
94500
代码可运行
举报
运行总次数:0
代码可运行

Linux Shell 提供重定向符用于重定向命令的输入和输出,提供管道符用于将一个命令的输出重定向作为另一个命令的输入。

【注】在终端命令上,重定向符总是指向数据流动的方向。

1. 输出重定向

1.1 输出重定向符 >

代码语言:javascript
代码运行次数:0
复制
command > outputfile

> 重定向符用于把 command 命令的输出结果重定向输入到指定的 outputfile 文件中。

  • 如果 outputfile 不存在,则自动创建。
  • 如果 outputfile 文件有内容,则全部覆盖。

1.2 输出重定向符 >>

代码语言:javascript
代码运行次数:0
复制
command >> outputfile

>> 重定向符用于把 command 命令的输出结果重定向追加到指定的 outputfile 文件中。

  • 如果 outputfile 不存在,则自动创建。
  • 如果 outputfile 文件有内容,则继续追加到文件末尾。

2. 输入重定向

2.1 输入重定向符 <

代码语言:javascript
代码运行次数:0
复制
command < inputfile

< 重定向符用于将文件中的内容重定向输入给 command 处理。

2.2 输入重定向符 <<

代码语言:javascript
代码运行次数:0
复制
command << marker
data
marker

<< 重定向符也被成为内联输入重定向符,该输入重定向用于从命令行中指定用于输入重定向的数据,而不用使用文件进行输入重定向。 其中,data 是指定用于输入重定向的数据,marker 为文本标记(可用任何字符串作为文本标记),用于划分输入数据的开始和结尾。

  • marker 仅被字符串看待,不会被扩展成变量、命令、算术表达式等。
  • marker 中如果没有任何一部分被引号包裹,则输入数据 data 中每一行数据将扩展变量、命令、算术表达式(因此若要使用特殊字符诸如 则需进行转义 \)。
  • marker 中如果有任何一部分被引号包裹,则输入数据 data 中的每一行数据将只被看作为字符串处理。
  • 如果在输入重定向符 << 后加上 -,即 <<-,则在读取输入数据 data 的每一行数据时,其前导 Tab 会被忽略。

内联输入重定向符可以用来在 Shell 中进行自动交互,以 ssh-keygen 命令为例:

代码语言:javascript
代码运行次数:0
复制
#!/bin/bash

ssh-keygen -t rsa -C "example@163.com" << EOF
$HOME/Tmp/example


EOF

这样就能实现ssh-keygen自动生成密钥并保存的功能,而不需要通过人为手动输入来进行交互。

【注】更多自动交互方法参见 LinuxShell自动交互

3. 管道

代码语言:javascript
代码运行次数:0
复制
command1 | command2

| 用于将 command1 的输出重定向作为 command2 的输入:

  • command1 的输出会被实时重定向到 command2 的输入,中间数据传输不会用到任何中间文件或缓冲区。
  • Linux 系统实际上会同时运行 command1command2,并在内部将它们连接起来。而不是表面看起来先运行 command1 然后在运行 command2

附录

更多详细介绍可参见以下资料:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 输出重定向
    • 1.1 输出重定向符 >
    • 1.2 输出重定向符 >>
  • 2. 输入重定向
    • 2.1 输入重定向符 <
    • 2.2 输入重定向符 <<
  • 3. 管道
  • 附录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档