shell 輸出重定向在除錯中的使用

2021-06-26 09:26:41 字數 2729 閱讀 8097

1.在除錯shell時可以將標準輸出,錯誤輸出一起重定向到乙個檔案中,這樣尤其在除錯程式呼叫shell至關重要。

2.在shell中列印環境資訊,到日誌檔案,幫助分析呼叫環境是否正確。

echo `who ma i` >> log.txt   2>&1

echo `id -u`   >> log.txt    2>&1

echo `whoami`   >> log.txt   2>&1

echo "$user"   >> log.txt   2>&1

echo "$uid"   >> log.txt   2>&1

echo `who`  >> log.txt   2>&1

echo `which sqoop` >> log.txt  2>&1

3.自己手工執行環境初始化

source ~/.bash_profile

4.linux環境指令碼,不要使用tab,因為tab在shell中是有語法含義的會影響正常執行

linux的標準輸入輸出:

對於任何一條linux 命令執行,它會是這樣乙個過程:

乙個命令執行了:

先有乙個輸入:輸入可以從鍵盤,也可以從檔案得到

命令執行完成:成功了,會把成功結果輸出到螢幕:standard output預設是螢幕

命令執行有錯誤:會把錯誤也輸出到螢幕上面:standard error預設也是指的螢幕

linux shell下常用輸入輸出操作符是:

1.  標準輸入   (stdin) :**為 0 ,使用 < 或 << ; /dev/stdin -> /proc/self/fd/0   0代表:/dev/stdin

2.  標準輸出   (stdout):**為 1 ,使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1  1代表:/dev/stdout

3.  標準錯誤輸出(stderr):**為 2 ,使用 2> 或 2>> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr

#繼續追加把輸出寫入suc.txt err.txt  「>>」追加操作符

[chengmo@centos5 shell]$lstest.sh test1.sh 1>>suc.txt 2>>err.txt

#將錯誤輸出資訊關閉掉

[chengmo@centos5 shell]$lstest.sh test1.sh 2>&-

test.sh

[chengmo@centos5 shell]$lstest.sh test1.sh 2>/dev/null

test.sh

#&[n] 代表是已經存在的檔案描述符,&1 代表輸出 &2代表錯誤輸出 &-代表關閉與它繫結的描述符

#/dev/null 這個裝置,是linux 中黑洞裝置,什麼資訊只要輸出給這個裝置,都會給吃掉

#關閉所有輸出

[chengmo@centos5 shell]$lstest.sh test1.sh  1>&- 2>&-

#關閉 1 ,2 檔案描述符

[chengmo@centos5 shell]$lstest.sh test1.sh  2>/dev/null1>/dev/null

#將1,2 輸出**給/dev/null裝置

[chengmo@centos5 shell]$lstest.sh test1.sh >/dev/null2>&1

#將錯誤輸出2 繫結給 正確輸出 1,然後將 正確輸出 傳送給 /dev/null裝置  這種常用

[chengmo@centos5 shell]$lstest.sh test1.sh &>/dev/null

#& 代表標準輸出 ,錯誤輸出 將所有標準輸出與錯誤輸出 輸入到/dev/null檔案

</p>

shell中輸入重定向,輸出重定向,管道

什麼是檔案描述符 1 程序中開啟乙個檔案就會有乙個檔案描述符 2 檔案描述符是乙個非負整數 3 系統為每乙個程序維護乙個檔案描述符表 程序級檔案描述符 4 同乙個程序裡面不同檔案描述符可以對應同乙個檔案 乙個檔案被開啟多次 5 不同程序的檔案描述符可以相同 不影響 可以指向同乙個檔案,也可以指向不同...

shell輸出重定向操作

在linux shell執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名。標準輸入 0 預設是鍵盤,為0時是檔案或者其他命令的輸出 標準輸出 1 預設是螢幕,為1時是檔案 標準出錯 2 預設是螢幕,為2時是檔案 ...

shell輸出重定向操作

在linux shell執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名。標準輸入 0 預設是鍵盤,為0時是檔案或者其他命令的輸出 標準輸出 1 預設是螢幕,為1時是檔案 標準出錯 2 預設是螢幕,為2時是檔案 ...