歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> Unix基礎教程(5)

Unix基礎教程(5)

日期:2017/2/25 10:12:33   编辑:Unix基礎知識

第5章 C-shell的交互功能

【例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);

}

Copyright © Linux教程網 All Rights Reserved