Linux命令——4.重定向、管道
文章目录
- 一、重定向
- 1)重定向符号
- 2)重定向分类
- (1)输出重定向
- (2)输入重定向
- 3)Here Document
- 4)/dev/null
- 6)重定向使用
- (1)标准输出
- (2)标准错误
- (3)标准输出和错误
- (4)标准输入
- (5)特殊用法
- 二、`|` 管道
一、重定向
在 Linux 中,重定向是将命令的输入或输出重定向到文件或其他命令的操作。重定向通常用于处理命令行程序的标准输入(stdin)、标准输出(stdout)和标准错误(stderr)流。
1)重定向符号
>
:输出重定向,将标准输出写入文件。文件不存在时会创建文件,存在时会覆盖文件。>>
:追加输出重定向,将标准输出追加到文件的末尾。文件不存在时会创建文件。<
:输入重定向,从文件读取标准输入。2>
:标准错误重定向,将标准错误输出写入文件。2>>
:追加标准错误重定向,将标准错误输出追加到文件的末尾。&>
或>&
:将标准输出和标准错误一起重定向到同一个文件(覆盖)。&>>
:将标准输出和标准错误一起追加到同一个文件。
2)重定向分类
重定向是指将命令的输入或输出从默认位置(通常是终端)重定向到其他位置(如文件或设备)。重定向分为输入重定向和输出重定向两种。以下是详细解释:
(1)输出重定向
输出重定向用于将命令的输出重定向到文件或其他设备,而不是显示在终端上。
命令 | 描述 |
---|---|
command > file | 将标准输出重定向到文件,覆盖文件内容 |
command >> file | 将标准输出追加到文件末尾 |
command 2> file | 将标准错误重定向到文件,覆盖文件内容 |
command 2>> file | 将标准错误追加到文件末尾 |
command > file 2>&1 | 将标准输出和标准错误一起重定向到文件,覆盖文件内容 |
command >> file 2>&1 | 将标准输出和标准错误一起追加到文件末尾 |
> 覆盖模式的重定向
[ac@linuxac django]$ ls -lh > ll.txt
[ac@linuxac django]$ ls
ll.txt test.txt
[ac@linuxac django]$ cat ll.txt
总用量 4.0K
-rw-rw-r--. 1 ac ac 0 6月 19 21:29 ll.txt
-rwxrw-r--. 1 ac ac 95 6月 19 21:22 test.txt
>> 追加模式的重定向
[ac@linuxac django]$ ls -lh >> ll.txt
(2)输入重定向
输入重定向用于将命令的输入从文件或其他设备读取,而不是从终端读取。
命令 | 描述 |
---|---|
command < file | 从文件读取输入 |
command1 < infile > outfile | 从 infile 读取输入,并将输出写入 outfile |
3)Here Document
Here Document 是一种特殊的重定向方式,用于将多行输入传递给命令。
command << delimiter
document
delimiter
cat << EOF
Hello, World!
EOF
4)/dev/null
/dev/null
是一个特殊的设备文件,代表一个空的黑洞,任何写入其中的内容都会被丢弃。常用于丢弃输出或错误信息,可以用来屏蔽命令的输出。
command > /dev/null 2>&1
这行命令将 command
的所有输出(包括错误)都丢弃。
以下是关于 Linux 重定向的完整整理,包括标准输出、标准错误、标准输入以及管道的使用示例:
6)重定向使用
(1)标准输出
-
将标准输出重定向到文件:
ls > file.txt
这个命令会将
ls
命令的输出写入file.txt
文件。若文件存在,将覆盖其内容。 -
追加标准输出到文件:
echo "Another line" >> output.txt
这个命令会将 “Another line” 追加到
output.txt
文件的末尾,不会覆盖已有内容。
(2)标准错误
-
将标准错误重定向到文件:
ls non_existing_file 2> error.log
这个命令会将尝试列出不存在文件时的错误信息写入
error.log
文件。 -
追加标准错误到文件:
ls non_existing_file 2>> error.log
这个命令会将错误信息追加到
error.log
文件的末尾。
(3)标准输出和错误
-
将标准输出和标准错误一起重定向到文件:
ls > output.log 2>&1
这个命令将
ls
命令的标准输出和标准错误一起写入output.log
文件。 -
使用
&>
符号同时重定向:command &> output.log
这个命令等同于上一个,将标准输出和标准错误一起写入
output.log
文件。
(4)标准输入
- 将文件作为命令的输入:
这个命令将wc -l < input.txt
input.txt
的内容作为wc -l
命令的输入,用于统计文件的行数。
(5)特殊用法
-
将标准输出或错误重定向到空设备:
command > /dev/null 2>&1
这个命令会将
command
的所有输出和错误信息丢弃。 -
创建一个空文件或清空文件:
> file.txt
这个命令会清空
file.txt
文件的内容,如果文件不存在,则会创建一个空文件。
这些重定向操作是 Linux 系统管理和脚本编写中的基本工具,能够灵活地控制命令的输入输出。
二、|
管道
使用管道将一个命令的输出作为另一个命令的输入:
ls -l | grep "txt"
这个命令会列出当前目录下所有文件,然后过滤出包含 “txt” 的行。
管道需要两个指令 , 第二个指令需要第一个指令的结果来进行操作
[ac@linuxac etc]$ ll -a | more
more 指令是给前面的ll -a 指令的结果进行分屏显示结果
[ac@linuxac etc]$ ll -a | grep "xml"
drwxr-xr-x. 2 root root 21 6月 15 21:01 xml
[ac@linuxac etc]$ ll -a | grep "r" | more
[ac@linuxac etc]$ ll -a | grep "r" | wc
289 2631 17409