天天看點

學習 Shell —— 認識 shell

shell 是一個指令行解釋器(interpreter),它會輸出一個提示符,等待輸入一個指令,然後執行該指令。如果該指令行的第一個單詞不是一個内置的 shell 指令,那麼 shell 就會假設這是一個可執行檔案的名字,它将加載并運作這個檔案。

日期的輸出控制(linux date指令-顯示和設定系統日期與時間 壓縮包以yymmdd格式指令):

%f 完整日期格式,等價于 %y-%m-%d

%i 小時(00-12)

%h 小時(00-23)

%s 自utc 時間 1970-01-01 00:00:00 以來所經過的秒數

%s 秒(00-60)

%n 納秒(000000000-999999999)

标準輸入(stdin):代碼為 0,使用 < 或 <<

标準輸出(stdout):代碼為 1,使用 > 或 >>

1>:以覆寫的方式将正确的資料輸出到指定的檔案或裝置上;

1>>:以累加的方式将正确的資料輸出到指定的檔案或裝置上;

标準錯誤輸出(stderr):代碼為 2,使用 2> 或 2>>

2>:以覆寫的方式将正确的資料輸出到指定的檔案或裝置上;

2>>:以累加的方式将正确的資料輸出到指定的檔案或裝置上;

檢查某些檔案的屬性,使用 test 指令:

-e(exist),檔案是否存在(常用)

-f(filename),檔案名是否存在且為檔案(常用)

-d(directory),檔案名是否存在且為目錄(常用)

如果兩個指令之間有相依性。且相依性主要判斷的地方在于前一個指令執行結果是否正确。這就涉及指令回傳碼的概念。若前一個指令執行的結果為正确,在 linux 下會回傳一個 <code>$?=0</code>的值。

當連續的兩個指令通過 &amp;&amp; 或 || 連接配接時,指令之間也可能存在短路現象,後一條指令不一定會執行。

cmd1 &amp;&amp; cmd2

cmd1 成功時($?=0),才會去執行 cmd2

cmd1 失敗時($?≠0),cmd2 不執行;

cmd1 || cmd2

cmd1 成功時($?=0),cmd2 不會被執行;

cmd1 失敗時($?≠0),cmd2 才會被執行;

繼續閱讀