Unix 指南/解釋/管道和作業控制
外觀
我們可以將命令的標準輸入、輸出和錯誤連線到其他命令或檔案。
| 字元稱為 管道,它允許將它之前的命令的輸出重定向到它之後的命令(而不是作為標準輸出顯示)。
> 字元是“Shell 重定向功能”,它將它之前的命令的輸出重定向到該字元後面的檔名稱。如果檔案已存在,那麼 > 字元將導致檔案的內容被重定向到它的新內容覆蓋。另一種方法是使用 >> 字元對,它將重定向的內容附加到檔案,而不是覆蓋檔案以前的內容。
您可以同時執行多個命令,但只有一個可以處於前臺。其他命令可以處於後臺執行或掛起狀態。
建立 shell 指令碼“date_loop.sh”
#!/bin/bash
while :
do
date > datefile
sleep 10
done
(注意:可以使用 Emacs 建立 shell 指令碼:執行 emacs date_loop.sh,輸入上述指令碼,然後按 CONTROL-X CONTROL-S 儲存指令碼,然後按 CONTROL-X CONTROL-C 退出 Emacs。)
使 date_loop.sh 可執行
$ chmod +x date_loop.sh
在前臺執行命令
$ ./date_loop.sh
等待一段時間(大約 30 秒),然後使用 CONTROL-Z 向程序傳送 SIGTSTP 訊號
^Z[2] + Stopped (SIGTSTP) date_loop
檢視 datefile 的最後一行
$ tail -1 datefile; sleep 10; tail -1 datefile Thu Apr 27 10:46:06 BST 2006 Thu Apr 27 10:46:06 BST 2006
請注意,雖然程序是 可執行的,但它被掛起了,因此在每次 tail 命令之間的 10 秒間隔內,沒有新的“時間”被附加到檔案。
將程序置於後臺
$ bg [2] date_loop.sh&
程序恢復,datefile 再次更新
$ tail -1 datefile; sleep 10 ; tail -1 datefile Thu Apr 27 10:48:34 BST 2006 Thu Apr 27 10:58:54 BST 2006
請注意,您可以在命令提示符下輸入命令。
將程序放回前臺
$ fg date_loop.sh
透過鍵入“control-C”向程序傳送“SIGINT”。這將終止程序。我們確認 datefile 不再更新
^C $ tail -1 datefile; sleep 20; tail -1 datefile Thu Apr 27 10:59:55 BST 2006 Thu Apr 27 10:59:55 BST 2006

