改用重定向输入将可以忽略交互式的过程.而自动完成密码设置 (结合—stdin 选项来识别标准的输入)
使用非交互式的去执行设置密码:
[root@xiaolyu ~]# touch passwd.txt
[root@xiaolyu ~]# vim passwd.txt
[root@xiaolyu ~]# useradd zhangsan
useradd: user 'zhangsan' already exists
[root@xiaolyu ~]# useradd lisi
[root@xiaolyu ~]# passwd --stdin lisi < passwd.txt
Changing password for user lisi.
passwd: all authentication tokens updated successfully.
重定向输入就是通过文件中的内容作为输入的数据
错误重定向:
将命令执行过程中出现的错误信息 (选项或参数错误) 保存到指定的文件,而不是直接显示到显示器
错误信息保存到文件
操作符: 使用2>
2指的是错误文件的编号 (在使用标准的输入和输出省略了1 0 编号)
在实际应用中,错误重定向可以用来收集执行的错误信息.为排错提供依据;
对于shell脚本还可以将无关紧要的错误信息重定向到空文件/dev/null中 以保持脚本输出的简洁
eg: 使用tar命令进行备份的时候出新的错误信息保存到err.log文件中
把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.
echo $? 表示最近一次操作是否成功 。 0 成功 非零不成功
正确的写到一个文件,错误的在写到一个文件
[root@xiaolyu ~]# ls /tmp/ /nginx 1> a.txt 2>b.txt
保存到一张图片比较清爽:
输出到同一个文件中:
[root@xiaolyu ~]# ls /tmp/ /nginx/ 1>a.txt 2>&1
或者以下这种写法 ,重定向到文件的1可以省略,因为默认就是1.
[root@xiaolyu ~]# ls /tmp/ /nginx/ >a.txt 2>&1
&> 混合输出
不分正确的还是错误的
[root@xiaolyu ~]# ls /opt/ /MySQL &> a.txt
3. 管道符 这里只提管道符,关于管道有专门创建管道的函数,以及有名管道和无名管道,以及管道之间的通信,我放在IPC通信中阐述。 管道符,可以把两条命令连起来,前面一条命令的输出当成后面一条命令的输入。eg: 查看nginx的进程。
[root@xiaolyu ~]# ps -aux | grep nginx
eg: 查看某个进程的端口:
4. tree命令。