[Shell]Bash基本功能:输入输出重定向,shellbash
[Shell]Bash基本功能:输入输出重定向,shellbash
/*-----------------------------------------------------------------------------------------------
@黑眼诗人 <www.chenwei.ws>
-----------------------------------------------------------------------------------------------*/
输入输出重定向的作用:
输出重定向就是把命令的执行结果保存到文件,便于查看。
输入重定向就是把原先由键盘的输入改为由文件输入。
先了解一下标准输入输出:
[ 设备 ][ 设备文件名 ][ 文件描述符 ][ 类型 ]
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
几个概念(> 表示覆盖,>>表示追加)
[ 正确输出重定向 ]
命令 > 文件 # 以覆盖的方式,将命令的正确输出,输出到文件或设备中
命令 >> 文件 # 以追加的方式,将命令的正确输出,输出到文件或设备中
[ 错误输出重定向 ]
错误命令 2> 文件 # 以覆盖方式,将命令的错误输出,输出到指定文件或设备中
错误命令 2>> 文件 # 以追加的方式,将命令的错误输出,输出到指定文件或设备中
(注意:要保存错误信息,必须在单大于号或双大于号前加 2 ,中间无空格)
[ 正确输出和错误输出同时保存]
1. 命令 > 文件 2>&1 #以覆盖方式,将正确和错误输出都保存到同一文件中
2. 命令 >> 文件 2>&1 #以追加的方式,将正确和错误输出都保存到同一文件中
3. 命令 &> 文件 #等同于第一条(&作用等同于2>&1)
4. 命令 &>> 文件 #等同于第二条
5. 命令 >> 文件A 2>> 文件B #把正确的输出追加到文件A,把错误的输出追加到文件2中(定时备份的时候很有用)
ls &> /dev/null #将执行结果保存到/dev/null(不存在的设备,即将无意义的结果清除)
输入重定向:
[ wc用于统计键盘输入 ]
wc [-c] 文件名 #统计字节数
wc [-w] 文件名 #统计单词数
wc [-l] 文件名 #统计行数
(输入wc后,输入的其它字符将被统计,ctrl+d结束)
(4行,7个单词,40个字符)
[ 用wc统计文件:单小于号 ]
grep -v $bbb xxx.txt | cat >xxx.txt
在管道前后对同一个文件操作很危险。这样同时有两个程序对同一个文件读写,会产生竞争。最后的结果不好确定。最好分开处理。
rep -v $... xxx.txt >xxx.txt 这样做也不好。通过重定向后也会发生对同一个文件同时读写的情况。 但至少是同一个程序来控制(如果不算shell)。grep可能已经考虑过这样的情况,或者巧合(处理时先读,再写), 所以结果正确。但同其他程序的配合,情况就更复杂了,很可能出现问题。
具体要看grep,shell和cat代码。
但总体上,不建议这样做。这样做是极危险的行为。最好用一个备份文件,避免同时对一个文件读写操作。
没太清楚意思。。。
declare -a folder=(folder1 folder2);
for x in ${folder[*]}; do
find "$x" -mtime -1 -type f -exec \
awk '
function fun() { printf "output" }
NR==1
{ "yourscript "FILENAME | getline var; print var;
print $0"\t"fun()
' {} \;
done
评论暂时关闭