【例5-1】給別名命令傳遞參數的方法。
下面的命令遞歸式地在系統頭文件目錄下檢索所有的頭文件,查找含有termio字符串的程序行。
find /usr/include -name "*.h" -exec grep -n termio {} /dev/null \; | more
鍵入這麼長的一串命令很費力氣,而且,一段時間內會經常用到這個命令,不如定義一個別名用起來簡便。但是,每次檢索的字符串不同。這次檢索termio,下次檢索的是tcp_hdr,或者別的字符串。使用上述的簡單別名無法達到要求。
別名參數的使用,是和歷史機制相同的方式。用一個驚歎號表示當前的輸入。和歷史命令一樣,在冒號後邊的數字或者^號$號代表參數號。
alias f 'find /usr/include -name "*.h" -exec grep -n \!:$ {} /dev/null \; | more'
這裡的驚歎號前面加上轉義符\,使得csh不再把他們解釋為歷史替換,而是把驚歎號作為一個字符,傳遞給alias命令,alias真正得到的是!:$。
這樣,有了別名,直接使用f termio就可以了。
也可以傳遞多個參數。
alias scan 'find \!:3 -name "*.h" -exec grep -n \!:1 {} /dev/null \; | more'
引用時,使用下面的命令能達到前面的命令相同的效果:
scan termio in /usr/include
【例5-3】使用原始I/O的標准輸出和標准錯誤輸出。
下面的例子與例5-2有等價的效果。
main() /* 使用原始I/0 */
{
static char *strl= ”string1\n”;
static char *str2= ”string2\n”;
int i;
for(i=0;i<20;i++) {
write(1,strl,strlen(str1));
write(2,str2,strlen(str2));
}
exit(0);
}