美文网首页
Linux: 输入和输出的重定向

Linux: 输入和输出的重定向

作者: LET149 | 来源:发表于2023-09-30 09:55 被阅读0次

对shell中的输入和输出进行重新定向

1. 标准输入和输出

所谓标准输入和输出就是指shell中默认的输入和输出方向

名称 标准输入 标准输出 标准错误输出
方向 从键盘鼠标输入 输出到屏幕 输出到屏幕
文件描述符 0 1 2

以下是标准错误输出的一个示例

(base) [zhiyong@malab Learn]$ ll uu  #uu这个文件是不存在于当前目录下的
ls: cannot access uu: No such file or directory   #系统的报错信息

除了用户想要输出的内容以外的所有输出,包括各种报错和提示,都属于错误输出

2. 重定向输出
  • 语法
    cat file_name [文件描述符]> 目的文件名
    cat file_name [文件描述符]>> 目的文件名
  • 当目的文件名代表的文件存在时,新内容会被写入此文件;当目的文件名代表的文件不存在时,此文件会被创建并被写入新内容
  • 文件描述符:1代表输出,2代表错误输出,不写则默认为1
  • >表示覆盖原有内容;>>表示追加输入,即将新内容添加到原有内容的后面
  • 文件描述符和重定向符号之间不能有空格
  • 同时将标准输出和标准错误输出重定向
    cat uu > aa 2>> bb
  • 查看一个文件,把标准输出重定向到aa这个文件中,把标准错误输出重定向到bb这个文件中
  • 标准输出与标准错误输出之间的重定向
    cat uu 1>&2 将标准输出重定向给标准错误输出
    cat uu 2>&1 将标准错误输出重定向给标准输出
3. 特殊文件
  • Linux中的 /dev/null 是一个特殊的文件,类似一个黑洞,无论向这个文件中写入多少内容,最后都会消失
  • 如果想让输出的内容从这台计算机上消失,则把这些输出的内容重定向到 /dev/null 这个文件中
4. 重定向输入
  • 标准输入是指从键盘和鼠标进行输入,这是一种交互式输入,如果在脚本中需要非交互式的方式进行输入,则需要进行输入的重定向
4.1 输入重定向为文件
(base) [zhiyong@malab Learn]$ cat pp  #构建一个文件
abcde
12345
qwert
45678

(base) [zhiyong@malab Learn]$ cat < pp  #最简单的输入重定向,把pp重定向输入给cat命令
abcde
12345
qwert
45678

(base) [zhiyong@malab Learn]$ cat > bb <pp  #将pp重定向输入给cat命令,cat命令的输出重定向给bb

(base) [zhiyong@malab Learn]$ ll
total 12
-rw-rw-r--. 1 zhiyong zhiyong  24 12月  6 11:55 bb  #目录中新增加bb这个文件
-rwxr--r--. 1 zhiyong zhiyong 196 12月  6 09:24 kk.sh
-rw-rw-r--. 1 zhiyong zhiyong  24 12月  6 11:54 pp

(base) [zhiyong@malab Learn]$ cat bb  #对bb的内容进行查看,发现其内容和pp相同,运算正确
abcde
12345
qwert
45678
4.2 输入重定向为非文件
(base) [zhiyong@malab Learn]$ cat  pp.sh 
#! /bin/bash

cat > bb <<EOF  #用<<进行份非文件的输入重定向,以一个大写字符串开始,最后以相同的大写字符字符串结束,这两个大写字母字符串不会被当成是输入的一部分
asd
asdd
ggh
EOF   #大写字符字符串可任选,推荐EOF

(base) [zhiyong@malab Learn]$ ll
total 16
-rw-rw-r--. 1 zhiyong zhiyong  13 12月  6 12:10 bb
-rwxr--r--. 1 zhiyong zhiyong 196 12月  6 09:24 kk.sh
-rw-rw-r--. 1 zhiyong zhiyong  24 12月  6 11:54 pp
-rw-rw-r--. 1 zhiyong zhiyong  46 12月  6 12:09 pp.sh

(base) [zhiyong@malab Learn]$ cat bb 
asd
asdd
ggh
  • 在输入重定向时,重定向操作之前不能有管道操作
  • 当重定向操作之间有两个或以上的操作是,重定向操作均是针对第一个命令进行的
  • 如果需要进行管道操作,管道操作可以放在重定向操作之后

相关文章

  • Shell | 标准输入输出重定向

    一、Linux 标准输入输出 二、标准输入输出重定向 1. 标准输入输出重定向是什么? 2. 标准输入输出重定向的...

  • shell中的重定向

    linux shell下常用输入输出操作符是: 输出重定向 输入重定向

  • Linux定向输入和定向输出

    Linux下的标准输入和标准输出: 常用文件重定向命令:

  • linux重定向

    linux 重定向 的符号有 > >> < <<> >> 是输出重定向< << 是输入重定向0 用来表于标准输入1...

  • 类Unix 基础命令整理(三)

    重定向输入和输出 重定向输入和输出 wc 管道

  • linux重定向及nohup不输出的方法

    先说一下linux重定向:0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入...

  • Linux / Unix示例中的输入输出重定向

    Linux / Unix示例中的输入输出重定向 什么是重定向? 重定向是Linux中的一项功能,因此在执行命令时,...

  • Linux 输入重定向和输出重定向

    输入重定向 使用输入重定向 <,<< < 将需要交互输入的内容存放到文件中,用来当做命令的输入。注意后面必须是文件...

  • linux重定向和输入输出

    先说一下linux重定向: 0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输...

  • 重定向

    重定向分为输入重定向和输出重定向。输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息...

网友评论

      本文标题:Linux: 输入和输出的重定向

      本文链接:https://www.haomeiwen.com/subject/dtcowktx.html