Shell - bash基本功能之输出、输入重定向

1、标准输入输出

设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出

inux中一切皆文件,键盘、显示器都是文件,文件名如上
文件描述符:0代表标准输入设备,1代表标准输出设备,2代表标准错误输出设备

2、输出重定向

把显示在屏幕中的内容保存到文件中

2.1 标准输出重定向

命令 > 文件:以覆盖的方式,把命令的正确输出输出到指定的文件或设备中。
	   			##文件不存在则创建,文件存在则覆盖
命令 >> 文件:以追加方式,把命令的正确输出输出到指定的文件或设备中。

2.1.1 练习:ll命令重定向到ll.log文件中

[root@catyuan ~]# ll > ll.log
[root@catyuan ~]# cat ll.log 
total 12
-rw-------. 1 root root 2084 Nov 13  2018 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Nov 13  2018 Desktop
drwxr-xr-x. 2 root root    6 Nov 13  2018 Documents
drwxr-xr-x. 2 root root    6 Nov 13  2018 Downloads
-rw-r--r--. 1 root root   62 Jun  5 04:49 hello.sh
-rw-r--r--. 1 root root 2177 Nov 13  2018 initial-setup-ks.cfg
-rw-r--r--. 1 root root    0 Jun  5 06:34 ll.log
drwxr-xr-x. 2 root root    6 Nov 13  2018 Music
drwxr-xr-x. 2 root root    6 Nov 13  2018 Pictures
drwxr-xr-x. 2 root root    6 Nov 13  2018 Public
drwxr-xr-x. 2 root root    6 Nov 13  2018 Templates
drwxr-xr-x. 2 root root    6 Nov 13  2018 Videos

2.2 标准错误输出重定向

错误命令 2> 文件:以覆盖的方式,把错误的输出输出到指定的文件或设备中
错误命令 2>> 文件:以追加的方式,把错误的输出输出到指定的文件或设备中

2.2.1 练习:记录输入错误的命令的信息,比如:la

[root@catyuan ~]# la > la.log     
bash: la: command not found...         #由于la这个命令是错误的所以不能重定向
[root@catyuan ~]# la 2> la.log 		   #此时想要重定向这个错误信息就需要使用2>
[root@catyuan ~]# cat la.log 
bash: la: command not found...

2.3 正确输出和错误输出同时保存

命令 > 文件 2>&1:覆盖,把正确输出和错误输出都保存在同一个文件中
命令 >> 文件 2>&1:追加,把正确输出和错误输出都保存在同一个文件中
命令 &> 文件:覆盖,把正确输出和错误输出都保存在同一个文件中
命令 &>> 文件:追加,把正确输出和错误输出都保存在同一个文件中
命令>>文件1 2>>文件2:把正确的输出追加到文件1中,把错误的输出追加到文件2中

2.3.1 练习:把ll的正确输出和la的错误输出写入同一个文件test.log中

[root@catyuan ~]# ll >> test.log 2>&1
[root@catyuan ~]# cat test.log 
total 20
-rw-------. 1 root root 2084 Nov 13  2018 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Nov 13  2018 Desktop
drwxr-xr-x. 2 root root    6 Nov 13  2018 Documents
drwxr-xr-x. 2 root root    6 Nov 13  2018 Downloads
-rw-r--r--. 1 root root   62 Jun  5 04:49 hello.sh
-rw-r--r--. 1 root root 2177 Nov 13  2018 initial-setup-ks.cfg
-rw-r--r--. 1 root root   31 Jun  5 06:36 la.log
-rw-r--r--. 1 root root  633 Jun  5 06:34 ll.log
drwxr-xr-x. 2 root root    6 Nov 13  2018 Music
drwxr-xr-x. 2 root root    6 Nov 13  2018 Pictures
drwxr-xr-x. 2 root root    6 Nov 13  2018 Public
drwxr-xr-x. 2 root root    6 Nov 13  2018 Templates
-rw-r--r--. 1 root root    0 Jun  5 07:06 test.log
drwxr-xr-x. 2 root root    6 Nov 13  2018 Videos
[root@catyuan ~]# la >> test.log 2>&1
[root@catyuan ~]# cat test.log 
total 20
-rw-------. 1 root root 2084 Nov 13  2018 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Nov 13  2018 Desktop
drwxr-xr-x. 2 root root    6 Nov 13  2018 Documents
drwxr-xr-x. 2 root root    6 Nov 13  2018 Downloads
-rw-r--r--. 1 root root   62 Jun  5 04:49 hello.sh
-rw-r--r--. 1 root root 2177 Nov 13  2018 initial-setup-ks.cfg
-rw-r--r--. 1 root root   31 Jun  5 06:36 la.log
-rw-r--r--. 1 root root  633 Jun  5 06:34 ll.log
drwxr-xr-x. 2 root root    6 Nov 13  2018 Music
drwxr-xr-x. 2 root root    6 Nov 13  2018 Pictures
drwxr-xr-x. 2 root root    6 Nov 13  2018 Public
drwxr-xr-x. 2 root root    6 Nov 13  2018 Templates
-rw-r--r--. 1 root root    0 Jun  5 07:06 test.log
drwxr-xr-x. 2 root root    6 Nov 13  2018 Videos
bash: la: command not found...

2.3.2 练习:把正确的命令(ll)输出到test1.log中,错误(la)的输出到test2.log中

[root@catyuan ~]# ll >> test1.log la 2>> test2.log
[root@catyuan ~]# cat test1.log 
[root@catyuan ~]# cat test2.log 
ls: cannot access la: No such file or directory
[root@catyuan ~]# rm -rf test1.log 
[root@catyuan ~]# rm -rf test2.log 
[root@catyuan ~]# la >> test1.log 2>> test2.log
[root@catyuan ~]# cat test1.log 
[root@catyuan ~]# cat test2.log 
bash: la: command not found...
[root@catyuan ~]# ls >> test1.log 2>> test2.log
[root@catyuan ~]# cat test1.log 
total 28
-rw-------. 1 root root 2084 Nov 13  2018 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Nov 13  2018 Desktop
drwxr-xr-x. 2 root root    6 Nov 13  2018 Documents
drwxr-xr-x. 2 root root    6 Nov 13  2018 Downloads
-rw-r--r--. 1 root root   62 Jun  5 04:49 hello.sh
-rw-r--r--. 1 root root 2177 Nov 13  2018 initial-setup-ks.cfg
-rw-r--r--. 1 root root   31 Jun  5 06:36 la.log
-rw-r--r--. 1 root root  633 Jun  5 06:34 ll.log
drwxr-xr-x. 2 root root    6 Nov 13  2018 Music
drwxr-xr-x. 2 root root    6 Nov 13  2018 Pictures
drwxr-xr-x. 2 root root    6 Nov 13  2018 Public
drwxr-xr-x. 2 root root    6 Nov 13  2018 Templates
-rw-r--r--. 1 root root    0 Jun  5 07:13 test1.log
-rw-r--r--. 1 root root   31 Jun  5 07:11 test2.log
-rw-r--r--. 1 root root  764 Jun  5 07:06 test.log
drwxr-xr-x. 2 root root    6 Nov 13  2018 Videos
[root@catyuan ~]# cat test2.log 
bash: la: command not found...

2.4 特殊文件:/dev/null

命令 &>/dev/null
黑洞,垃圾站。不想看到命令的结果,就把命令重定向到/dev/null中

3、输入重定向

一般输入设备总是键盘,如果把文件的内容作为输入,这个就是“输入重定向”

3.1 wc命令

命令

wc 【选项】【文件名】

选项

无		输入字符,ctrl+d结束,最后会统计你输入了多少行,单词,字符
-c		统计字节数
-w		统计单词数
-l		统计行数

3.1.1 练习 :不加选项

[root@catyuan ~]# wc
hello
hehe
ha
ll
ls
      5       5      20

3.2 输入重定向

命令 < 文件:把文件作为命令的输入
命令 << 标识符:把标识符直接内容作为命令的输入

3.2.1 练习:wc统计test.log文件

[root@catyuan ~]# wc < test.log 
 16 133 764

3.2.2 练习:wc统计,遇到t字符则停止

[root@catyuan ~]# wc << t
> afasdf
> sdfa
> c
> d
> tdf
> t
 5  5 20
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值