重定向的分类

名称 文件描述符 作用
标准输入(stdin) 0 默认由键盘输入(其他输入命令的终端设备或某个文件也可输入)
标准输出(stdout) 1 默认输出到屏幕
错误输出(stderr) 2 默认输出到屏幕
文件名(filename) 3+

进程描述符:一个进程或者终端在启动时,都会开启文件描述符。





# 关于标准输出重定向,标准输入重定向,错误输出重定向设备文件位置(软链接文件)
[root@wqh06 ~]# ll /dev/st*
lrwxrwxrwx. 1 root root 15 Nov 28 18:49 /dev/stderr -> /proc/self/fd/2 #错误输出 2> 2>> 不能省略
lrwxrwxrwx. 1 root root 15 Nov 28 18:49 /dev/stdin -> /proc/self/fd/0 #标准输入 < << 0 可以省略
lrwxrwxrwx. 1 root root 15 Nov 28 18:49 /dev/stdout -> /proc/self/fd/1 #标准输出 > >> 1 可以省略

各类重定向文件描述符的用法:

类型 符号 用途 备注
标准覆盖输出重定向 1> 将命令执行的正确结果默认输出的位置,修改为指定的文件或者终端(覆盖原有内容) 通常'>'即可,1可以不写,默认就是1
标准追加输出重定向 >> 将命令执行的正确结果,输出到指定文件的末尾(不覆盖原有内容)
错误覆盖输出重定向 2> 将命令执行的错误结果默认输出的位置,修改为指定的文件或者终端(覆盖原有内容)
错误追加输出重定向 2>> 将命令执行的错误结果,输出到指定文件的末尾(不覆盖原有内容)
标准输入重定向 0< 将命令中接收输入内容由默认的键盘,改为命令或者文件 通常'<'即可0可以写也可以不写,默认0
标准输入追加重定向 0<< 将命令中接收输入内容由默认的键盘,改为命令或者文件

输出重定向

将标准输出重定向到文件

# 将标准输出重定向到终端
[root@wqh06 pts]# echo "w shi da shui bi" > /dev/pts/1 # 标准覆盖输出重定向到文件
[root@wqh06 ~]# echo wqh>/tmp/1.txt # 字符串输出到文件中
[root@wqh06 ~]# cat /tmp/1.txt
wqh [root@wqh06 ~]# echo 321>/tmp/2.txt # 会将`321`视作文件描述符,所以文件中不会有任何内容
[root@wqh06 ~]# cat /tmp/2.txt [root@wqh06 ~]# echo wqh1>/tmp/3.txt # 因为`1`前面有`wqh`字符串作为连接,所以不会将`1`视作文件描述符
[root@wqh06 ~]# cat /tmp/3.txt
wqh1

将标准输出追加重定向到文件

# 标准追加输出重定向
[root@wqh06 ~]# echo 456 >> /var/log/messages
[root@wqh06 ~]# echo 123 >> /var/log/messages

将错误输出重定向到文件

# 错误输出重定向,使用普通用户cdx登录,查询/etc/下所有目录,有些文件会报错权限不足
[cdx@wqh06 ~]$ find /etc/ -type d 2> finderror.txt # 普通用户权限有时受限
[cdx@wqh06 ~]$ find /etc/ -type d > findright.txt 2> finderror.txt # 正确结果和错误结果分开保存

将标准输出和错误输出都重定向到文件

# 将标准输出和错误输出都输出到相同的文件中
[cdx@wqh06 ~]$ find /etc/ -type d > /tmp/100.txt 2>&1 # 错误输出需要由 1 输出到文件中
[cdx@wqh06 ~]$ find /etc/ -type d &> /tmp/101.txt # 错误输出和标准输出,同时输出到文件中,包括其他3,4,5,6...文件描述符的输出
# 上面两种方法方式不同,效率不同,且第二种方法 `&>` 包含的文件描述符范围更广泛

将错误输出重定向到黑洞文件

# 将错误输出,重定向到黑洞,这是我们常卸载Shell脚本中的语句,明知会有错,但不想看到错误提示
[root@wqh06 ~]# ls / /ooo 2> /dev/null # 脚本中使用重定向 [root@wqh06 ~]# cat test.sh
#!/bin/bash
ping -c1 www.baidu.com &>/dev/null if [ $? -eq 0 ];then
echo "网络是通畅的....."
else
echo "网络是不通的....."
fi
[root@wqh06 ~]# ./test.sh
网络是通畅的.....

输入重定向

将默认从键盘上面输入的内容改为从命令中或者文件读取内容

<		# 标准输入重定向, 作用:将默认从键盘上面读取内容改为从命令或者文件读取内容
<< # 标准输入限定标识符重定向,作用:标准输入内容,直到遇到标识符的分解符结束 案例1:标准输入重定向 [root@wqh06 ~]# cat < file1.txt # 将file1.txt的内容输入给cat,由cat输出到终端,我们通常省略了 `<`
hello
test
file1.txt
file2.txt
file3.txt
file4.txt
[root@wqh06 ~]# cat # 只写cat需要在终端输入内容,然后cat将输入的内容输出到终端
root
root
^C
[root@wqh06 ~]# tr 'f' 'F' # 和cat一样,只写tr命令需要在终端输入内容,tr命令替换后,输出到终端
file
File
^C
[root@wqh06 ~]# tr 'f' 'F' <file1.txt # 将file1.txt的内容输入给tr,tr执行替换后再输出到终端,tr命令无法省略 `<`
hello
test
File1.txt
File2.txt
File3.txt
File4.txt
[root@wqh06 ~]# tr 'f' 'F' < file1.txt > file2.txt # 把tr替换后的内容输出到一个新文件file2.txt中 [root@wqh06 ~]# grep 'root' /etc/passwd # 常用的grep语法,省略了`<`
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@wqh06 ~]# grep 'root' < /etc/passwd # 完整的grep语法,将/etc/passwd文件内容交给grep命令
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@wqh06 ~]# grep 'root' # 同样,如果没有标准输入重定向读取文件内容,就需要从键盘输入,交给grep,然后在终端输出
wqh06
root
root # 由grep输出,匹配的有root的行
roottt
roottt # 由grep输出,匹配的有root的行
^C 案例2:数据库中导入库或者表,恢复数据 [root@wqh06 ~]# mysql -uroot -p123 < database.sql # 恢复数据 案例3:生成一个文件 dd # 生成一个大文件
if # 从哪里读取数据
of # 输出到哪里
bs # 一次输出多少
count # 输出的次数 [root@wqh06 ~]# dd if=/dev/zero of=/root/test.log bs=10M count=100 # if/of的写法
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 27.5536 s, 38.1 MB/s
[root@wqh06 ~]# ll -h
total 1001M
-rw-r--r--. 1 root root 1000M Dec 19 18:27 test.log [root@wqh06 ~]# dd </dev/zero >/root/test.txt bs=10M count=10 # 重定向的写法,与上面效果相同
10+0 records in
10+0 records out
104857600 bytes (105 MB) copied, 11.6617 s, 9.0 MB/s
[root@wqh06 ~]# ll -h
total 1.1G
-rw-r--r--. 1 root root 1000M Dec 19 18:27 test.log
-rw-r--r--. 1 root root 100M Dec 19 18:28 test.txt 案例4:标准输入限定标识符重定向 [root@wqh06 ~]# cat > new.txt << EOF
> WQH01
> WQH02
> EOF
[root@wqh06 ~]# cat new.txt
WQH01
WQH02

Linux-输出/输入重定向的更多相关文章

  1. Shell系列(5)- 输出输入重定向及wc命令

    输出重定向: 在Linux当中,0代表输入:1代表正确输出:2代表错误输出 类型 符号 作用 正确输出重定向 命令 > 文件 以覆盖得方式,把命令得正确输出,输出到指定文件或设备当中 命令 &g ...

  2. linux shell输入重定向

    经常用(隔很久)经常忘. 备忘下:http://blog.csdn.net/ithomer/article/details/9288353

  3. [转]linux shell数据重定向(输入重定向与输出重定向)详细分析

      在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...

  4. Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

    1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

  5. Linux Shell基础 Shell的输入重定向和输出重定向

    概述 在 Linux 中输入设备指的是键盘,输出设备指的是显示器.在 Linux 中,所有的内容都是文件,计算机硬件也是文件,标准输入设备(键盘)和标准输出设备(显示器)也是文件.这些设备的设备文件名 ...

  6. linux基础进阶命令详解(输出重定向(2>&1,1>&2,&>file)、输入重定向、管道符、通配符、三种引号、软连接、硬链接、根“/”、绝对路径vs相对路径)

    本章命令(共9个): 1 2 3 4 5 6 7 8 9 输出重定向 输入重定向 管道符 通配符 三种引号 软连接 硬链接 根"/" 绝对路径vs相对路径 1.输出重定向 作用:一 ...

  7. linux:输入/输出、重定向、管道

    输入.输出: 程序的默认输入设备,叫标准输入. stdin    键盘   0 程序的默认输出设备,叫标准输出. stdout    监视器    1 程序的默认错误输出设备,叫标准错误输出.stde ...

  8. 【shell编程】之基础知识-输入/输出和重定向

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准输出,默 ...

  9. Linux系统教程 标准输入/输出和重定向

    1. 标准输入与输出 我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘:标准输出文件(stdout)和标准错误输出文件(stderr), ...

  10. 解决nohup: 忽略输入并把输出追加到"nohup.out"或者nohup: 忽略输入重定向错误到标准输出端

    nohup启动脚本的时候,没有指定输出路径,默认使用当前目录的nohup.out 例如下面这句就是默认使用nohup.out作为输出文件: nohup script.sh & 改成下面的,则/ ...

随机推荐

  1. CTFshow-萌新赛杂项_签到

    查看网页信息 http://game.ctf.show/r2/ 把网页源码下载后发现有大片空白 使用winhex打开 把这些16进制数值复制到文件中 把20替换为0,09替换为1后 得到一串二进制数值 ...

  2. window10系统安装

    准备工作: 一个U盘,大概8GB左右的存储,用于存放windows镜像文件与驱动精灵离线版网卡驱动以及相关的应用应用软件等. window10镜像文件(iso文件) 微PE工具软件 软件下载: 前提: ...

  3. powershell中的cmdlet命令

    Add-Computer 向域或工作组中添加计算机. Add-Content 向指定的项中添加内容,如向文件中添加字词. Add-History 向会话历史记录追加条目. Add-Member 向 W ...

  4. SAP轻松访问会话管理器等设置

    对于SAP的登陆后初始界面,是有一个配置表,可以进行设置的,例如隐藏SAP的标准菜单,设置轻松访问页面右边的图片内容等等这一切的设置都可以通过维护SSM_CUST表来实现可以通过SM30来维护内容,该 ...

  5. printf函数输出格式总结

    printf函数格式 函数描述: printf("[格式化字符串]", [参数链表]); 函数声明: int printf(const char *format, ...) ; 输 ...

  6. Redis 底层数据结构设计

    10万+QPS 真的只是因为单线程和基于内存?_Howinfun的博客-CSDN博客_qps面试题 https://blog.csdn.net/Howinfun/article/details/105 ...

  7. 类型检查和鸭子类型 Duck typing in computer programming is an application of the duck test 鸭子测试 鸭子类型 指示编译器将类的类型检查安排在运行时而不是编译时 type checking can be specified to occur at run time rather than compile time.

    Go所提供的面向对象功能十分简洁,但却兼具了类型检查和鸭子类型两者的有点,这是何等优秀的设计啊! Duck typing in computer programming is an applicati ...

  8. loj2587铁人两项

    无向图,图中选出定点三元组(a,b,c),a->b->c的路径没有重复边.问方案有多少? -------------------------------------------- 首先求出 ...

  9. LOJ10145郁闷的出纳员

    传送门:https://loj.ac/problem/10145 简单的平衡树 ------------------------------------ 1 #include<bits/stdc ...

  10. Linux常用命令详解(第三章)(ping、kill、seq、du、df、free、date、tar)

    本章命令(共7个): 1 2 3 4 5 6 7 8 ping kill seq du df free date tar 1." ping " 作用:向网络主机发送ICMP(检测主 ...