一、
ping xxx.xxx.xxx.xxx | while read line; do echo $line; echo $line >> file; done
二、
Linux Shell 环境中的输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误。
1.重定向标准输出到文件:
cat foo > foo.txt
2.重定向标准错误到文件
cat foo 2> foo.txt
3.重定向标准输出到标准错误
cat foo 1>&2
4.重定向标准错误到标准输出
cat foo 2>&1
5.重定向标准输出,标准错误到同一个文件
cat foo > foo.txt 2>&1或cat foo &> foo.txt
这里第个顺序很重要,先把标准输出重定向到文件,再把标准错误输出到标准输出,因为标准输出已经重定向到文件,所以标准错误与重定向到文件。
>&与&>效果相同
三、
linux数据怎么同时双定向到两个不同文件?
ls | tee a.txt > b.txt
把ls的输出重定向到a.txt和b.txt
四/
Linux的重定向机制十分好用,我们经常需要在服务器上挂起一个服务程序,然后将该程序的所有输出重定向到某个文件,这样即使我们注销了用户,程序依然在linux服务器上运行着。
但是重定向的输出经常无法实时刷新到指定文件中,当我们调试程序时,这将给我们带来巨大的困扰。其实只需要关闭重定向输出的缓冲,即可实现实时刷新的效果。
命令如下:
unbuffer nohup command > file.out 2>&1 &
上面的unbuffer命令需要额外安装expect-devel,用来实时刷新。
nohup命令用来忽略所有挂断(SIGHUP)信号,让你的程序即使在用户注销后依然继续运行。
command是任何一段你想要执行的shell命令。
> file.out 代表将command运行结果重定向到当前目录下的file.out文件中(如果要每次运行的结果追加到file.out后面,可以用>>而不是>)。
2 >&1表示将标准错误输出cerr的所有输出也都重定向到标准输出cout中,这样file.out中就会记录command命令运行过程中所有标准输出。
最后一个&表示后台运行该command。