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
相关推荐
慵懒的猫mi2 小时前
deepin环境下Docker实用指南:核心命令详解
linux·运维·docker·容器·deepin
时光の尘4 小时前
嵌入式Linux(二)·配置VMware使用USB网卡连接STM32MP157实现Windows、Ubuntu以及开发板之间的通信
linux·服务器·c语言·windows·stm32·ubuntu
sone121384 小时前
计算机网络(第8版)第四章 网络层(4.8.1~4.8.2)
linux·服务器·计算机网络
lqqjuly4 小时前
【Ubuntu】 Ubuntu22.04搭建NFS服务
linux·ubuntu
刘士博4 小时前
5 Linux 网络编程基础 API
linux·服务器·网络
太阳伞下的阿呆5 小时前
CentOS 8 上搭建SFTP服务
linux·运维·centos
平平无奇。。。5 小时前
Linux菜鸟级常用的基本指令和基础知识
linux
xianwu5437 小时前
cpp编译链接等
linux·开发语言·网络·c++·git
xxxx1234458 小时前
Linux-Ubuntu之I2C通信
linux·运维·ubuntu
甘北8 小时前
centos7 init.d 和system.d
linux