4. Linux中的管道和重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4. Linux中的管道和重定向相关的知识,希望对你有一定的参考价值。


@Author: Basil Guo
@Date: Jan. 5, 2021
@Description: Linux中的管道和重定向
@Keyword: Linux, pipe,redirect
@Type: tutorial

[TOC]

1. 管道

1.1 ​​|​

管道​​|​​:将多条命令组合起来,一次性完成复杂的处理任务。前一个命令的输出作为后一个命令的输入。

- `cut`命令
- `-d`后跟分割符
- `-f`后跟切割后第几列

```shell
$ cat /etc/passwd | grep root
root:x:0:0:root:/root:/usr/bin/zsh
$ cat /etc/passwd | grep root | cut -d: -f1
root
$ cat /etc/passwd | grep root | cut -d: -f2
x
$ cat /etc/passwd | grep root | cut -d: -f3
0
```

1.2 ​​tee​

​|tee​​管道:管道类似三通,把上游给下游发送的时候,可以进行加工,可以显示在屏幕上,也可以存入文件。

$ ls
$ cat /etc/passwd |tee file888.txt | tail -1
messagebus:x:101:102::/nonexistent:/usr/sbin/nologin
$ ls
file888.txt
$ cat file888.txt
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

1.3 ​​xargs​

​xargs​​ - build and execute command lines from standard input。

参数传递​​|xargs​​。​​cp​​ ​​rm​​一些特殊命令不接受其它程序的输入,只接受标准输入,可以使用​​Xargs​​来传递参数。

```shell
$ pwd
/root/RemoteWorking
$ touch file1..5
$ ls
file1 file2 file3 file4 file5 files
$ cat files
/root/RemoteWorking/file1
/root/RemoteWorking/file3
/root/RemoteWorking/file5
$ cat files | rm -rvf
$ ls
file1 file2 file3 file4 file5 files
$ cat files |xargs rm -rvf
已删除/root/RemoteWorking/file1
已删除/root/RemoteWorking/file3
已删除/root/RemoteWorking/file5
$ ls
file2 file4 files
```
# -i:忽略大小写
# -n:显示行号
# -v:不包含pattern内容
# ^a:行首,以a开始
# ke$:行尾,以ke结尾
$ grep <"pattern"> <filename> # 在文件中查找,pattern格式*,?,[]

2. 重定向

2.1 输出重定向

bash的​​set​​命令可以关闭一些重定向的功能。

  • ​set -C​​进制对于已经存在的文件使用​​<​​覆盖式的重定向
  • 强制覆盖输出则使用​​>|​
  • ​set +C​​关闭上述功能

​>​​:重定向到新的位置,输出重定向,覆盖原有内容

  • ​1>​​:等价于>,相当于写入,会覆盖源文件内容。
  • ​1>>​​:等价于>>,追加
  • ​2>​​:类似1>,是错误输出,只有在执行错误的时候才重定向
  • ​2>>​​:类似1>>,是错误输出,只有在执行错误的时候才重定向
  • ​&>​​:同时产生正确输出和错误输出都重定向到同一个文件,然而没什么用,基本都会重定向到/dev/null
  • ​/dev/null​​也称为bit bucket,数据黑洞。
$ ls /home /aaaaaaaaaa &> /dev/null
$ ls /home /aaaaaaaaaa 1> yes.txt 2> no.txt

# <<EOF和EOF之间的可以取消段落之间的换行符号
$ cat > 2000.conf <<EOF
11111
22222
33333
EOF

2.2 输入重定向

  • ​<​​:从文件中读取,输入重定向
  • ​<<​​:Here Document
$ cat << EOF
> first line
> second line
> EOF
first line
second line

$ cat << EOF
heredoc> first
heredoc> second
heredoc> EOF
first
second

以上是关于4. Linux中的管道和重定向的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习之管道符和重定向详解

Linux管道符和重定向与环境变量

Linux多命令执行 管道 和重定向

linux进程管道和重定向

4.3管道和重定向

Linux shell编程:管道和重定向