问题:shell脚本中一次执行多个指令,如何将指令的标准输出、标准错误输出及程序未完善时的编译错误,都以文件的形式输出,屏幕上只显示用户输入界面。
一、理解 command >/dev/null 2>&1
1.伪设备
在类Unix系统上的设备节点不一定必须与物理设备相对应,缺少此对应关系的节点构成伪设备组,它们提供操作系统处理的各种功能。
一些最常用(基于字符的)伪设备包括:
- /dev/null - 接受并丢弃所有输入; 不产生输出(总是在读取时返回文件结束指示);
- /dev/zero - 接受并丢弃所有输入; 产生连续的NUL(零值)字节流;
- /dev/full - 读取时产生连续的NUL(零值)字节流,并在写入时返回“磁盘已满”消息;
- /dev/random和/dev/urandom -它们产生的一个可变长度的数据流的伪随机数。
着重理解 /dev/null
song@song-VirtualBox:~$ stat /dev/null
File: /dev/null
Size: 0 Blocks: 0 IO Block: 4096 character special file
Device: 5h/5d Inode: 5 Links: 1 Device type: 1,3
Access: (0666/crw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root