後台命令:
&命令
當在前台運行某個作業時,終端被該作業佔據;而在後台運行作業時,它不會佔據終端。可以使用&命令把作業放到後台執行。該命令的一般形式為:
命令&
為什麼要在後台執行命令?因為當在後台執行命令時,可以繼續使用你的終端做其他事情。適合在後台啟動並執行命令有f i n d、費時的列印工作、費時的排序及一些s h e l l指令碼。在後台運行作業時要當心:需要使用者互動的命令不要放在後台執行,因為這樣你的機器就會在那裡傻等。
不過,作業在後台運行一樣會將結果輸出到螢幕上,幹擾你的工作。如果放在後台啟動並執行作業會產生大量的輸出,最好使用下面的方法把它的輸出重新導向到某個檔案中:
command >out.file 2>&1 &
在上面的例子中,所有的標準輸出和錯誤輸出都將被重新導向到一個叫做out.file 的檔案中。當你成功地提交進程以後,就會顯示出一個進程號,可以用它來監控該進程,或殺死它。
向後台提交命令
現在我們運行一個f i n d命令,尋找名為“ s r m . c o n f”的檔案,並把所有標準輸出和錯誤輸出重新導向到一個叫作f i n d . d t的檔案中:
$find /etc -name "srm.conf" -print >find.dt 2>&1 &
[1] 27015
在上面的例子中,在我們成功提交該命令之後,系統給出了它的進程號2 7 0 1 5。
檔案名稱置換:
。S h e l l提供了一套完整的字串模式比對規則,或者稱之為元字元,這樣你就可以按照所要求的模式來匹配檔案。
下面就是這些特殊字元:
* 匹配檔案名稱中的任何字串,包括Null 字元串。
? 匹配檔案名稱中的任何單個字元。
[...] 匹配[ ]中所包含的任何字元。
[!...] 匹配[ ]中非驚嘆號!之後的字元。
當s h e l l遇到上述字元時,就會把它們當作特殊字元,而不是檔案名稱中的一般字元,這樣使用者就可以用它們來匹配相應的檔案名稱。
使用*
使用星號*可以匹配檔案名稱中的任何字串。在下面的例子中,我們給出檔案名稱模式a p p *,它的意思是檔案名稱以a p p開頭,後面可以跟隨任何字串,包括Null 字元串:
$ ls app*
使用?
使用可以匹配檔案名稱中的任何單個字元。在下面的例子中,我們列出檔案名稱以任意兩個字元開頭,接著是R,後面跟任何字元的檔案:
$ ls ??R*
使用[...]和[!...]
使用[ . . . ]可以用來匹配方括弧[ ]中的任何字元。在這一方法中,還可以使用一個橫杠-來串連兩個字母或數字,以此來表示一個範圍。在下面的例子中,列出了以i或o開頭的檔案名稱:
$ ls [io]*