環境:centos7
需求:瞭解linux的輸入輸出標準,重定向使用方法,xargs含義
實踐:
linux中有三種標準輸入輸出,分別是STDIN,STDOUT,STDERR,對應的數字是0,1,2。
0:標準輸入,符號“<”
1:標準輸出,符號“1>”,簡寫成“>”
2:錯誤輸出,符號“2>”。
例:
ls /data
a b // data路徑下有a,b兩個文件
cat a
test a
cat b
test b
-----------------------------------------------
cat a c >b 2>&1 // 將a文件和c文件(不存在)的內容重定向至b文件中(覆蓋方式)
// 2>&1表示錯誤信息輸出方式(路徑)與標準輸出方式(路徑)相同
cat b
test a
cat: c: No such file or directory //錯誤信息也重定向至b文件中
-----------------------------------------------
cat a c >>b 2>&1 //使用>>的輸出方式爲追加內容,不會覆蓋,2>&1寫法不變。
cat b
test b
test a
cat: c: No such file or directory
-----------------------------------------------
xargs
xargs命令是給其他命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。
xargs擅長將標準輸入數據轉換成命令行參數,xargs能夠處理管道或者stdin並將其轉換成特定命令的命令參數。
xargs也可以將單行或多行文本輸入轉換爲其他格式,例如多行變單行,單行變多行。
xargs的默認命令是echo,空格是默認定界符。
這意味着通過管道傳遞給xargs的輸入將會包含換行和空白,不過通過xargs的處理,換行和空白將被空格取代。
xargs是構建單行命令的重要組件之一。
例:
find /data -type -f -name "*.txt" |xargs rm -f
//find命令的多行顯示結果輸出,經過xargs處理後變成單行輸入作爲rm命令的參數使用(推薦用此方法代替rm刪除命令)
cat test.txt
a b c d
e f g h i j k
l m n
o p q r s t u v
w x y z
cat test.txt | xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z
cat test.txt | xargs -n3
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z