2011年11月8日 星期二

learning - linux command

-TYPE: find where the command from:
bash-4.1$ type ls
ls is hashed (/usr/bin/ls)

-ECHO: return the value of environment variable
bash-4.1$ echo $PATH
/opt/IBM/mqsi/6.1/jre15/ppc64/bin:/opt/IBM/mqsi/6.1/bin:/usr/bin

-env: list all the environment variables
-set: list local environment variables
-export xxx: set xxx be the global environment variable
-read: read a line from conso

-alias lm "ls -ltr": let lm perform same operation as "ls -ltr"
-cmd ; cmd (不考慮指令相關性的連續指令下達)

-$? (指令回傳值) 與 && 或 ||
cmd1 && cmd2 ==> 1若 cmd1 執行完畢且正確執行($?=0),則開始執行 cmd2。




  • standard output 與 standard error output

簡單的說,標準輸出指的是『指令執行所回傳的正確的訊息』,而標準錯誤輸出可理解為『 指令執行失敗後,所回傳的錯誤訊息』。舉個簡單例子來說,我們的系統預設有 /etc/crontab 但卻無 /etc/vbirdsay, 此時若下達『 cat /etc/crontab /etc/vbirdsay 』這個指令時,cat 會進行:

  • 標準輸出:讀取 /etc/crontab 後,將該檔案內容顯示到螢幕上;
  • 標準錯誤輸出:因為無法找到 /etc/vbirdsay,因此在螢幕上顯示錯誤訊息

不管正確或錯誤的資料都是預設輸出到螢幕上,所以螢幕當然是亂亂的!那能不能透過某些機制將這兩股資料分開呢? 當然可以啊!那就是資料流重導向的功能啊!資料流重導向可以將 standard output (簡稱 stdout) 與 standard error output (簡稱 stderr) 分別傳送到其他的檔案或裝置去,而分別傳送所用的特殊字元則如下所示:

  1. 標準輸入  (stdin) :代碼為 0 ,使用 <(以file輸入) 或 << (以keyboard輸入,直到遇到"<
  2. 標準輸出  (stdout):代碼為 1 ,使用 > 或 >> ;
  3. 標準錯誤輸出(stderr):代碼為 2 ,使用 2> 或 2>> ;






沒有留言:

張貼留言