C shell 指令說明
C shell 提供下列內建指令。
項目 | 說明 |
---|---|
alias [Name [WordList]] | 若未指定任何參數,則顯示所有 alias。否則,指令將顯示 alias 為指定的 Name。如果指定 WordList,則指令將指派WordList 的數值至 alias Name。指定的別名 Name 不能是 alias 或 unalias。 |
bg [%Job ...] | 將現行工作或由工作 所指定的工作置於背景執行,並繼續執行已停止的工作。 |
break | 在最接近含括的 foreach 或 while
指令的 end 之後,回復執行。 |
breaksw | 岔斷自 switch 指令;在 endsw 指令後回復。 |
case Label: | 定義 switch 指令中的 Label。 |
cd[Name] | 相當於 chdir 指令(請參閱下列說明)。 |
chdir [Name] | 變更現行目錄為由 Name 變數指定的目錄。如果您不指定 Name,指令將變更為您的起始目錄。如果 Name 變數值不是現行目錄的子目錄,且不是以 / 、./
或 ../ 開始,shell 會檢查 cdpath 變數的每一個元件,
看看其是否有子目錄符合 Name 變數。如果 Name 變數是 shell 變數,且其值是以斜線 (/ ) 當作開頭,則 shell 會試用此變數,以查看它是否為目錄。chdir 指令相當於 cd 指令。 |
continue | 在最接近含括的 while 或 foreach
指令的 end 之後,繼續執行。 |
default: | 將 switch 陳述式標示為 default 。default 應該出現在所有其他 case 標籤之後。 |
dirs | 顯示目錄堆疊。 |
echo | 將字串寫入 shell 的標準輸出。 |
else | 執行 if (Expression)
then ...else if (Expression2)
then ... else ... endif 指令順序中,
第二個 else 後面的指令。 註: 使用 if(expr) then ..else ...endif 時,else 陳述式為 csh 內建指令。如果 (expr) 為真,則會執行指令直到 else 陳述式。如果 (expr) 為假,則會執行 else 與 endif 陳述式之間的指令。以單引號括住的任何字元都採取文字方式,並且不會解譯。
|
end | 連續將 Name 變數設定為由 List
變數所指定的每一成員,然後執行 foreach 與符合的 end
陳述式之間的一連串 Commands 指令。foreach 與 end 陳述式必須在分隔行上單獨出現。 使用 |
endif | 如果 expression 變數為真,將會執行第一個
then 陳述式後面的 Commands。如果 else if Expression2 為真,
將會執行第二個 then 陳述式後面的 Commands。如果 else if Expression2 為假,
將會執行 then 後面的 Commands。可能會有任何數目的 else if 配對。
但僅需要一個 endif 陳述式。else 區段為選用性。
字組 else 及 endif 只可以使用在輸入行開頭。
if 區
段必須單獨出現在其輸入行,或在 else 指令之後。 |
endsw | 持續將每一 case 標籤和 string 變數值比對。字串為指令與第一個展開的檔名。請在 case
標籤中使用型樣相符字元 * 、? 及 [ . . . ] ,它們是由變數展開來的。如果在發現預設標籤前找不到相符的標籤,則依預設標籤執行。case 標籤與 default 標籤必須出現在指令行開頭。breaksw 指令將在 endsw 指令之後執行。否則,控制元將可能落入case 及 default 標籤,如同
C 程式設計語言。如果沒有標籤符合且沒有預設值,將會在 endsw 指令之後繼續執行。 |
eval Parameter . . . | 讀取輸入至 shell 時的 parameter 變數值,並執行結果指令,或現行 shell 中的指令。使用此指令來執行指令或變數替代所產生的指令,因為會在進行這些替代作業之前先進行剖析。 |
exec Command | 執行現行 shell 中指定的指令。 |
exit (Expression) | 以 status shell 變數值(如果未指定 Expression),或以指定的 Expression 數值結束 shell。 |
fg [%Job ...] | 將現行工作或由工作所指定的工作置於前端執行,並繼續執行已停止的工作。 |
foreach Name (List) Command. . . | 連續設定一個 Name 變數給 List 變數所指定的每個成員,並設定指令順序,直到遇到 end 指令為止。 |
glob List | 使用歷程、變數與檔名擴充顯示 list。將空字元置於字組之間,且在結束時不包括換行字元。 |
goto Word | 繼續執行由 word 變數所指定的指令行。指定的 word 為檔名與展開以產生由 Label: 變數所指定的字串格式的指令。 shell 將盡可能重新整理輸入資料,並搜尋格式為 label: 的指令行,該行可能在空格或標籤之後。 |
hashstat | 顯示統計資料,指出 hash 表如何順利完成尋找指令。 |
history [-r | -h] [n] | 顯示歷程事件清單。最舊的事件最先顯示。如果您指定一數字 n,則只會顯示指定數目的最新事件。 -r 旗標將反轉顯示事件的順序,因此變成先顯示最新的事件。-h 旗標會顯示沒有編號的歷程清單。使用此旗標可產生適合與 source 指令的 -h 旗標一起使用的檔案。 |
if (Expression) Command | 如果指定的表示式 為真,則執行指定的指令(包括其引數)。Command 變數上的變數替代較早發生,與 if 陳述式的其他指令同時發生。指定的指令必須為一簡式指令(非管線,或括弧內的指令清單)。 註: 即使 Expression 變數為假,且未執行 Command 指令,也會發生輸入和輸出重新導向。
|
jobs [-l] | 列出作用中的工作。使用 -l(小寫 L)旗標時, jobs 指令會列出處理程序 ID 與工作號碼及名稱。 |
kill -l | [[-Signal] % Job...|PID...] | 將 TERM(終止)信號或由 signal 所指定的信號傳送至指定的 Job 或 PID(處理程序)。藉由編號或名稱指定信號(如在 /usr/include/sys/signal.h 檔案中所提供的,並去掉 SIG 字首)。-l (lowercase L) 旗標會列出信號名稱。 |
limit [-h] [Resource [Max-Use]] | 由現行處理程序與其所建立的處理程序,限制指定資源的用法。處理資源限制將定義在 /etc/security/limits 檔案中。可控制的資源為中央處理單位
(CPU) 時間、檔案大小、資料大小、核心傾出大小與記憶體使用。當使用者新增至系統中時,這些資源的最大可接受值將設定於 mkuser 指令中。它們將以 chuser 指令變更。 限制分為軟性和硬性。使用者可能增加它們的軟性限制,至由強迫限制實施的上限。您必須有 root 使用者權限,才可增加軟性限制超越強迫限制,或變更強迫限制。-h 旗標顯示強迫限制,而不顯示軟性限制。 如果未指定 Max-Use 參數,limit 指令會顯示指定資源的現行限制。如果未指定 Resource 參數,limit 指令會顯示所有資源的現行限制。如需由 limit 次指令所控制之資源的相關資訊,請參閱Technical Reference: Base Operating System and Extensions, Volume 1中的 getrlimit、setrlimit 或 vlimit 次指令。 CPU 時間的 Max-Use 參數是以
hh:mm:ss
格式指定。其他資源的 Max-Use 參數則指定為浮點數字或整數,其後有時會跟著比例係數。比例係數是 k 或 KB(1024 個位元組)、m 或 MB,或者是 b 或區塊(ulimit 子常式所使用的單位,說明於 Technical Reference: Base Operating System and Extensions, Volume 2)。如果您不指定比例係數,所有資源將使用 k 作為比例係數。就資源 Name 與比例係數二者而言,明確的 Name 字首即已足夠。註: 只有在其他作用中的處理程序爭相使用系統記憶體時,此指令才會限制可用在處理程序的實體記憶體。
|
login | 結束登入 shell,並置換為 /usr/bin/login 指令的案例。 這是登出的方法之一(包含 ksh 和 bsh 指令的相容性)。 |
logout | 結束登入 shell。如果設定 ignoreeof 選項,則需使用此指令。 |
nice [+n] [Command] | 如果未指定數值,則將設定在此 shell 中執行的指令優先順序為 24。如果指定 +n 旗標,則將設定優先順序加上指定的數目。如果指定 +n 旗標與 Command,則將以優先順序 24 加上指定數字來執行 Command。如果您有 root 使用者權限,您可以負數執行 nice 陳述式。Command 一定是在 subshell 中執行,且適用對簡式 if
陳述式中的指令所設的限制。 |
nohup [Command] | 如果未指定 Command,將導致 Script 的其餘部分忽略 hangups。如果有指定 Command,則會導致指定的 Command 執行時,忽略 hangups。如需執行管線或指令清單,請將管線或清單放置在 shell Script 中,提供 Script 執行許可權,並使用 shell Script 作為指令變數值。在背景中以 & 符號 (& ) 來執行的所有處理程序都會受到有效的保護,在您登出時,
不會傳送 hangup 信號。不過,這些處理程序仍將明確地傳送 hangups,除非使用
nohup 陳述式。 |
notify [%Job...] | 將導致 shell 通知您何時變更現行工作狀態或指定的工作。一般而言,shell 將在顯示 shell 提示前提供通知。如果設定 notify shell 變數,此特性將成為自動。 |
onintr [- | Label] | 控制 shell 岔斷動作。若未指定引數,將還原 shell 的岔斷預設動作,此舉將結束 shell Script,或回到指令輸入層次。如果指定 - 旗標,將導致所有岔斷被忽略。如果有指定 Label,當 shell 收到岔斷或當子處理程序由於岔斷而結束時,
將導致 shell 執行 goto Label 陳述式。不論如何,如果 shell 正在分開執行,且岔斷被忽略,則所有格式的
onintr 陳述式將無意義。shell 與所有被呼叫的指令將繼續忽略岔斷。 |
popd [+n] | 存取目錄堆疊,並變更至新的頂端目錄。如果有指定 +n 變數,指令將會捨棄堆疊中的第 n 個項目。目錄堆疊的元素自頂端從 0 開始編號。 |
pushd [+n|Name] | 如果沒有引數,將交換目錄堆疊最頂端的 2 個元素。利用 Name 變數,指令將會變更為新的目錄,並將舊的現行目錄(如在 cwd shell 變數中所提供的)推向目錄堆疊。如果有指定 +n 變數,指令會輪換目錄堆疊中的第 n 個元件直到項端元素,然後變成它。目錄堆疊的成員自頂端,從 0 開始編號。 |
rehash | 將導致 path shell 變數中的目錄內容的內部 hash 表重新計算。 如果新的指令在您登入時,新增至 path shell 變數中的目錄,則需要此動作。只要新增至其中一個使用者自己的目錄,或如果有人變更其中一個系統目錄,則需要執行 rehash 指令。 |
repeat Count Command | 遵循在指令簡式 if 陳述式中相同的限制,與由
Count 所指定的次數,執行指定的 Command。 註: I/O 重新導向只會發生一次,即使 Count 變數等於 0 也是如此。
|
set [[Name[n]] [ = Word]] | [Name = (List)] | 當不使用引數時,顯示所有 shell 變數的值。具有一個以上單一字組的變數,將顯示為一使用括弧的字組清單。如果只指定 Name ,C shell 將設定 Name 變數為空字串。否則將設定 Name 為 word 變數值,或設定 Name 變數為由 List 變數所指定的字詞清單。有指定 n 時, Name 變數的第 n 個元件會設定為 Word 變數的值;第 n 個元件必須已存在。不論如何,數值為指令與檔名的擴充。這些引數可能在單一 set 指令中,重複設定多重數值。然而,變數擴充在任何設定前,將發生在所有引數身 上。 |
setenvName Value | 將由 Name 變數所指定的環境變數值設定為 value,一單一字串。最常使用的環境變數 USER、TERM、HOME 及 PATH 會自動匯入 C shell 變數 user、term、home 及 path,並且會自動從這些 C shell 變數中匯出。這些變數使用 setenv 陳述式。 |
shift [Variable] | 將 argv shell 變數的成員,或指定的 Variable 移位至左邊。如果未設定 argv shell 變數或指定的 Variable,或其值少於一個字詞,將會發生錯誤。 |
source[-h] Name | 讀取在 Name 檔案中撰寫的指令。您可將 source 指令作巢狀處理。然而,如果巢狀太深,shell 將可能會用盡檔案描述子。任何層次所發生的 source 指令錯誤,將結束所有巢狀 source 指令。一般而言,在 source 指令中的輸入, 將不會列入歷程。-h 旗標將導致指令置於歷程清單中,而不予執行。 |
stop [%Job ...] | 停止現行工作,或在背景 執行的指定工作。 |
suspend | 停止 shell,如同已接收 STOP 信號。 |
switch (string) | 開始 switch (String) case String : ... breaksw default: ... breaksw endsw 指令順序。此指令序列根據 String 變數的值來連續與每一個 case 標籤相比對。如果在發現預設標籤前無符合的標籤,則依預設值標籤執行。 |
time [Command] | time 指令控制指令自動計時。如果未指定 Command 變數,則 time
指令會顯示此 shell 與其子項使用的時間摘要。如果使用 Command 變數指定指令,將會進行計時。然後 shell 將顯示時間總結,如 time shell 變數說明。如有必要將建立額外 shell,在指令完成時,將顯示時間統計值。 下列範例使用 time 及 sleep 指令:
此指令的輸出值看起來像下面這個樣子:
輸出欄位如下:
|
umask [Value] | 決定檔案的許可權。此 value 與建立處理程序許可權,在檔案建立時,決定檔案的許可權。預設值為 022。若未指定 value ,則會顯示現行設定。 |
unalias *|Pattern | 捨棄所有符合 Pattern 變數的 alias, 所有 alias 將由 unalias * 指令移除。沒有 alias 並不會導致錯誤。 |
unhash | 停用內部 hash 表,以尋找執行中的程式。 |
unlimit [-h][Resource] | 移除 Resource 變數的限制。如果沒有指定 Resource
變數,會移除所有的資源限制。請參閱 limit 指令的說明,以取得
Resource 名稱的清單。 -h 旗標將移除相對應的強迫限制。只有具有 root 使用者權限的使用者才可變更強迫限制。 |
unset *|Pattern | 移除全部符合型樣變數的 Name 變數。使用 unset *,移除全部變數。若未設定變數並不會導致錯誤發生。 |
unsetenvPattern | 從其名稱符合指定 Pattern 的環境中移除所有的變數 (請參閱 setenv 內建指令)。 |
wait | 等待所有背景 工作。如果 shell 為互動式,INTERRUPT(通常是 Ctrl-C 鍵順序)會中斷等待。然後 shell 將顯示未執行的所有工作的 Name 與工作號碼。 |
while (Expression) Command. . . end | 當由 Expression 變數指定的表示式評估為非零值時,會評估 while 與配對的 end 陳述式之間的 Commands。您可使用 break 陳述式提前結束,並使用 continue 陳述式繼續迴圈。while 與 end 陳述式必須單獨出現在它們的輸入行中。如果輸入是來自終端機,則會在類似 foreach 陳述式的 while (Expression) 之後出現提示。 |
@ [Name[n] = Expression] | 當不使用引數時,顯示所有 shell 變數的值。否則將設定由 Name 變數指定的 Name 為 Expression 變數的值。如果表示式包含
< 、> 、& 或 | 字元,這部分的表示式必須放置在括弧內。有指定 n 時,
Name 變數的第 n 個元件會設定為
Expression 變數。Name 變數及其第 n 個元件都必須存在。可使用 C 語言運算子(例如 |