Bash的输入、输出重定向和管道

简介:

标准输入:stdin 用数字0表示
标准输入一般是文件或者是键盘
标准输出:stdout 用数字1表示
标准输出一般是显示屏
标准错误输出:stderr 用数字2表示
标准错误输出一般是显示屏
输出重定向:
标准输出是显示屏
Bash的输入、输出重定向和管道
标准输出重定向到指定文件。
Bash的输入、输出重定向和管道
Bash的输入、输出重定向和管道
再次进行标准输出重定向到指定文件
Bash的输入、输出重定向和管道
可以看到 stdout1 的内容始终没有变过,重定向符号 > 的作用就是覆盖原有文件的内容,将新的内容添加到原有文件中。
为了可以保留原有的原件内容,可以使用>>重定向符号,这个符号可以将新的输出内容追加到原有文件内容的后面。
Bash的输入、输出重定向和管道

错误重定向
标准错误的输出是显示屏
Bash的输入、输出重定向和管道
可以手动指定错误输出的目的是哪里。
2> 是错误输出 而且会覆盖掉目的文件之前的内容。
Bash的输入、输出重定向和管道
stdout1文件之前的内容就被覆盖了。
2>> 也是错误输出,但是它仅仅会将内容追加到指定的文件的最后,不覆盖之前的内容。
Bash的输入、输出重定向和管道
Bash的输入、输出重定向和管道
Bash的输入、输出重定向和管道
可以在一个命令的后面跟两个重定向的动作,标准输出和标准错误输出。
Bash的输入、输出重定向和管道
2>&1 2> 表示错误输出 1表示标准输出,错误输出 输出到标准输出 这个命令的意思就是不论命令执行正确与否 输出的内容都输出到stdout1中。

这个命令还可以简化来写:
Bash的输入、输出重定向和管道
这个是错误的报错内容输出到了stdout1
Bash的输入、输出重定向和管道
这个是标准输出 输出到stdout1
这个方式下 也可以使用追加,而不用覆盖。
Bash的输入、输出重定向和管道
请注意下面命令的使用方式。
Bash的输入、输出重定向和管道
由于命令执行正确,所以stdout1有内容,stdout2没有内容。
重新执行一次上面的命令,执行命令估计改成错误执行。
Bash的输入、输出重定向和管道
stdout1是空的 stdout2是有内容的,这个说明,在这个命令执行过程中,不论命令执行正确与否,都会将stdout1和stdout2内容覆盖一遍,如果命令执行正确,stdout1被标准输出内容覆盖,stdout2被空内容覆盖,如果命令执行错误,stdout1被空内容覆盖,stdout2被错误输出内容覆盖。
输入重定向
一般来说,信息的输入都是靠键盘来完成的,不过有些时候需要将整片文章导入程序。
使用<符号可以使用文件作为输入源。
Bash的输入、输出重定向和管道
将/etc/issue文件内容中的小写字母变成大写字母。
Bash的输入、输出重定向和管道

<< 这个符号就不是覆盖功能了,这个符号的作用是指定输入结束符。
Bash的输入、输出重定向和管道
Bash的输入、输出重定向和管道
这里>表示有内容要输出到文件123中,但是cat命令没有参数,直接输入cat系统会转入下一行让用户输入相关内容,然后立即显示并允许用户输入下一个内容。<<符号指定结束符,只要用户不输入指定符号,cat进程就一直运行,而且不会立即回显给用户。等用户输入了结束符,cat进程也不会显示用户输入的内容,而是把用户输入的内容输出到指定文件内。

set 命令中 -C(大写)的参数可以防止文件的内容被覆盖。
Bash的输入、输出重定向和管道
Bash的输入、输出重定向和管道
为了恢复默认操作使用 set +C(大写)就可以了
Bash的输入、输出重定向和管道
如果想单次关闭阻止操作可以使用 >|的命令
Bash的输入、输出重定向和管道
Bash的输入、输出重定向和管道
管道
将前一个命令的输出内容作为第二个命令的输入流
Bash的输入、输出重定向和管道
一条命令就将/etc/issue的内容中小写字母变成大写字母并输出到屏幕上。


本文转自 yueyue207 51CTO博客,原文链接:http://blog.51cto.com/yueyue207/2048210


相关文章
|
4月前
|
Linux Shell Windows
4:Bash shell命令-步入Linux的现代方法
4:Bash shell命令-步入Linux的现代方法
53 0
|
6月前
|
关系型数据库 MySQL Shell
【Linux命令】-bash: mysql: command not found
【Linux命令】-bash: mysql: command not found
56 0
|
8月前
|
Ubuntu 安全 Linux
不用安装虚拟机,直接在Windows上面运行Linux Bash Shell,嗯!真香!!!
不用安装虚拟机,直接在Windows上面运行Linux Bash Shell,嗯!真香!!!
154 0
|
3天前
|
Java Shell Linux
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
|
17天前
|
存储 Shell Linux
【攻防世界】unseping (反序列化与Linux bash shell)
【攻防世界】unseping (反序列化与Linux bash shell)
|
2月前
|
Linux Shell
mac/linux提示bash: telnet: command not found
mac/linux提示bash: telnet: command not found
|
9月前
|
Kubernetes Shell Linux
linux中sh/bash 进程为何不接受kill SIGTERM
在k8s的优雅终止中,如果容器的入口进程是sh 或者bash,需要注意你设定的gracefulterminate是无效的
106 0
|
10月前
|
Java Shell Linux
如何在 Linux 中使用 Bash For 循环
如何在 Linux 中使用 Bash For 循环
90 0
|
10月前
|
Unix Shell Linux
Linux中sh与bash的区别(详细介绍)
Linux中sh与bash的区别(详细介绍)
321 0
|
11月前
|
Shell Linux
Linux pip命令报错 -bash: pip: command not found
Linux pip命令报错 -bash: pip: command not found
255 0