输入输出
命令返回值
如何判断一个命令是否执行成功?????
echo$?
命令的返回值
返回值是0,则代表上一条命令执行成功
返回值非0,则代表上一条命令执行不成功
重定向
将原本要输出到屏幕上的内容,重新输入到其他设备中
作用:
1.当屏幕输出的信息很重要,而且希望保存重要的信息时。
2.后台执行中的程序,不希望他干扰屏幕正常的输出结果时。
3.系统的例行命令, 例如定时任务的执行结果,希望他可以存下来时。
4.一些执行命令,我们已经知道他可能出现错误信息, 想将他直接丢弃时。
5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。
输入输出
文件描述符
执行一个shell
程序时通常会自动打开三个文件描述符
文件描述符 | 名称 | 作用 |
0 | stdin | 标准输入:通常是键盘,也可以是其他文件或者命令的输出的内容可以作为标准输入 |
1 | stdout | 标准输出:默认输出到屏幕 |
2 | stderr | 错误输出:默认输出到屏幕 |
3+ | 文件名 |
查看标准输入输出设备
ping www.baidu.com > /dev/pts/2
输入输出符号
符号 | 名称 | 作用 |
< 或者 0< | 标准输入重定向 | 将符号右边的内容交给符号左边的命令 |
<<或者0<< | ||
>或者1> | 标准输出覆盖重定向 | 将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中 |
>>或者1>> | 标准输出追加重定向 | 将原本要输出在屏幕上的正确内容,追加到重定向的文件中 |
2> | 错误输出覆盖重定向 | 将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中 |
2>> | 错误输出追加重定向 | 将原本要输出在屏幕上的错误内容,追加到重定向的文件中 |
举例
1.输入重定向
cat < /etc/passwd(从文件输入,不从键盘输入) 该命令< 可省略。
#cat >> 1.txt <<EOF
<<结束符 为固定用法
# dd </dev/zero >./2.txt bs=1K count=1024
= dd if=/dev/zero of=/root/2.txt bs=1K count=1024
2.标准输出重定向
#date > test.txt 先清空,后写入, 如果文件不存在则创建(覆盖)
#whoami >> test.txt 向test.txt文件末尾追加内容(追加)
3.错误输出重定向
# cd /shdgjakahd 2> test.txt(覆盖)
# cd /root/sgdhsg 2>> test.txt(追加)
4.正确和错误都输入到相同位置
标准输出和标准错误输出重定向到同一个文件, 混合输出
# find /etc name "*.conf" 1> testsame.txt 2>&1 (第一个1可省略)
若程序执行只存在两种输出 标准输出和错误输出 可使用
# find /etc name "*.conf" &> testsame.txt
正确输出保存到testright.txt,错误输出保存到testerror.txt
# find /etc name "*.conf" > testright.txt 2> testerr.txt