天天看點

重新點亮shell————管道和重定向[二]

簡單介紹一下管道和重定向。

管道和信号一樣,是程序通信的方式之一

管道符是"|",将前一個指令執行的結果傳遞給後面的指令。

比如說:

ls -l | more

就是第一個的輸入,然後給第二個的輸入,這其實更好了解。

2.重定向符号

一個程序預設會打開标準輸入、标準輸出、錯誤輸出三個檔案的描述符。

a 輸入重定向符号 "<"

read var < /path/to/a/file

b 輸出重定向 ">" ">>" "2>" "$>"

echo 123 > /path/to/a/file

這裡有4個不同的符号。

第一個符号是:> 這個表示清空裡面的内容,然後填入新内容。

第二個符号:>> 這個是追加的意思。

第三個符号:2> 如果前面的指令産生錯誤才會輸入進去。

第四個符号: $> 無論前面正确還是錯誤都輸出到指定檔案之中

c 輸入和輸出重定向組合使用

cat > /path/to/a/file << EOF

I am $USER

EOF

下面來示範一下重定向的指令了。

第一個 wc -l <,這個可以統計一個檔案裡面有多少行。

然後輸入重定向:

echo "123" > /tmp/a.txt

然後我們進行追加:

echo "123" >> /tmp/a.txt

同樣來輸出錯誤的。

echo "123" 2> /tmp/a.txt

如果沒有錯誤那麼會被清空。

echo "123" 2>> /tmp/a.txt

這樣就是追加了。

那我們來試一下錯誤的:

如果想無論是錯誤還是正确都輸入到檔案中去:

這樣就行。

那麼看下輸入和輸出有什麼組合可以有新效果。

就是把I am $USER 輸入到 /path/to/a/file中。

如果是追加的話,那麼是: