Linux命令——4.重定向、管道

文章目录

一、重定向

在 Linux 中,重定向是将命令的输入或输出重定向到文件或其他命令的操作。重定向通常用于处理命令行程序的标准输入(stdin)、标准输出(stdout)和标准错误(stderr)流。

1)重定向符号

  1. >:输出重定向,将标准输出写入文件。文件不存在时会创建文件,存在时会覆盖文件。
  2. >>:追加输出重定向,将标准输出追加到文件的末尾。文件不存在时会创建文件。
  3. <:输入重定向,从文件读取标准输入。
  4. 2>:标准错误重定向,将标准错误输出写入文件。
  5. 2>>:追加标准错误重定向,将标准错误输出追加到文件的末尾。
  6. &>>&:将标准输出和标准错误一起重定向到同一个文件(覆盖)。
  7. &>>:将标准输出和标准错误一起追加到同一个文件。

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 是一种特殊的重定向方式,用于将多行输入传递给命令。

bash 复制代码
command << delimiter
document
delimiter
bash 复制代码
cat << EOF
Hello, World!
EOF

4)/dev/null

/dev/null 是一个特殊的设备文件,代表一个空的黑洞,任何写入其中的内容都会被丢弃。常用于丢弃输出或错误信息,可以用来屏蔽命令的输出。

bash 复制代码
command > /dev/null 2>&1

这行命令将 command 的所有输出(包括错误)都丢弃。

以下是关于 Linux 重定向的完整整理,包括标准输出、标准错误、标准输入以及管道的使用示例:

6)重定向使用

(1)标准输出
  1. 将标准输出重定向到文件

    bash 复制代码
    ls > file.txt

    这个命令会将 ls 命令的输出写入 file.txt 文件。若文件存在,将覆盖其内容。

  2. 追加标准输出到文件

    bash 复制代码
    echo "Another line" >> output.txt

    这个命令会将 "Another line" 追加到 output.txt 文件的末尾,不会覆盖已有内容。

(2)标准错误
  1. 将标准错误重定向到文件

    bash 复制代码
    ls non_existing_file 2> error.log

    这个命令会将尝试列出不存在文件时的错误信息写入 error.log 文件。

  2. 追加标准错误到文件

    bash 复制代码
    ls non_existing_file 2>> error.log

    这个命令会将错误信息追加到 error.log 文件的末尾。

(3)标准输出和错误
  1. 将标准输出和标准错误一起重定向到文件

    bash 复制代码
    ls > output.log 2>&1

    这个命令将 ls 命令的标准输出和标准错误一起写入 output.log 文件。

  2. 使用&>符号同时重定向

    bash 复制代码
    command &> output.log

    这个命令等同于上一个,将标准输出和标准错误一起写入 output.log 文件。

(4)标准输入
  1. 将文件作为命令的输入

    bash 复制代码
    wc -l < input.txt

    这个命令将 input.txt 的内容作为 wc -l 命令的输入,用于统计文件的行数。

(5)特殊用法
  1. 将标准输出或错误重定向到空设备

    bash 复制代码
    command > /dev/null 2>&1

    这个命令会将 command 的所有输出和错误信息丢弃。

  2. 创建一个空文件或清空文件

    bash 复制代码
    > file.txt

    这个命令会清空 file.txt 文件的内容,如果文件不存在,则会创建一个空文件。

这些重定向操作是 Linux 系统管理和脚本编写中的基本工具,能够灵活地控制命令的输入输出。

二、| 管道

使用管道将一个命令的输出作为另一个命令的输入

bash 复制代码
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
相关推荐
CC.cc.4 分钟前
Linux系统之systemctl管理服务及编译安装配置文件安装实现systemctl管理服务
linux·运维·服务器
ghostwritten1 小时前
k8s黑科技:Linux+Vagrant+VirtualBox开启Kubernetes奇幻之旅
linux·科技·kubernetes
the_nov1 小时前
14.网络套接字TCP
linux·c++·网络协议
电星托马斯1 小时前
C++中顺序容器vector、list和deque的使用方法
linux·c语言·c++·windows·笔记·学习·程序人生
愚润求学2 小时前
【Linux】Linux权限
linux·服务器·语法
麻芝汤圆3 小时前
使用 MapReduce 进行高效数据清洗:从理论到实践
大数据·linux·服务器·网络·数据库·windows·mapreduce
令狐少侠20113 小时前
Ubuntu 24.04.2 LTS 系统安装python,创建虚拟环境
linux·python·ubuntu
the_nov3 小时前
11.多线程-信号量-线程池
linux·c++
程序员JerrySUN4 小时前
Linux UART 驱动开发全解析:从原理到实战
linux·运维·驱动开发
博观而约取4 小时前
Linux 和 macOS 终端中常见的快捷键操作
linux·运维·macos