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
相关推荐
wzhao1011 分钟前
WSL进阶使用指南
linux
风静如云8 分钟前
OpenBMC:BmcWeb app.run
linux
数巨小码人23 分钟前
Linux下文件权限与安全
linux
yuanbenshidiaos30 分钟前
【进程 】
linux
ChoSeitaku1 小时前
12.重复内容去重|添加日志|部署服务到Linux上(C++)
linux·c++·windows
一颗小树x2 小时前
Llama 3.1 本地电脑部署 Linux系统 【轻松简易】
linux·llama·本地部署·3.1
Struggle Sheep3 小时前
linux安装redis
linux·运维·redis
butteringing4 小时前
BuildFarm Worker 简要分析
linux·软件构建·bazel·re api
reset20215 小时前
ubuntu离线安装ollama
linux·ubuntu·ollama
放氮气的蜗牛5 小时前
Linux命令终极指南:从入门到精通掌握150+核心指令
linux·运维·服务器