shell基礎語法備忘錄二
阿新 • • 發佈:2021-06-19
2021-06-19
關鍵字:
1、shell中的檔案描述符
與Linux檔案系統一樣,shell中也有檔案描述符的概念,且每一個shell程序中都預設有三個已開啟的檔案描述符。它們分別代表“標準輸入”、“標準輸出”與“錯誤輸出”,對應的檔案描述符號分別為 0、1、2。描述符號3及以後的正整數值可自由使用。
從一個shell中以新程序的形式啟動的子shell會繼承父shell中的三個預設檔案描述符。
shell中檔案描述符的使用通常是在需要重定向流的走向時。重定向語法格式如下所示:
#output [n]> #input [n]<
n代表非負整數值。n是可選的,如果不填,則輸出時代表標準輸出(即描述符為1),輸入時代表標準輸入(即描述符為0),以下是一些示例語句:
#將命令執行結果儲存到檔案 ls -l /etc > ls.record #將命令執行結果輸出到螢幕,錯誤資訊儲存到檔案 ls -l /etc 2> ls.error #將命令執行結果及錯誤資訊均儲存到檔案 ls -l /etc > ls.record 2> ls.error #將標準輸出和錯誤輸出同時重定向,與上一條命令等價 ls -l /etc &> ls.output
#追加內容到已存在檔案
ls -l /etc 1>> ls.record #從指定檔案中查詢內容 grep name 0< names.txt #與上一條命令等價 grepname < names.txt
如果想快速建立一個空檔案,則可以使用以下命令:
> new.file :> new.file
2、將錯誤輸出重定向到標準輸出
語法如下:
ls -l /etc > ls.record 2>&1
3、半永久式重新分配檔案描述符
使用exec命令可以在本shell登入中永久改變描述符流向,具體如下表所示:
重定向方式 | 含義 |
exec 2> file | 將所有命令的錯誤輸出重定向到檔案file |
exec n< file | 以只讀的方式開啟名稱為file的檔案,並使用檔案描述符n,n是大於3的整數。 |
exec 2> file | 以寫的方式開啟名稱為file的檔案,並使用檔案描述符n。 |
exec n<>file | 以讀寫的方式開啟檔案file,並使用檔案描述符n。 |
exec n>&- | 關閉檔案描述符n |
exec n>&m | 使得檔案描述符n成為檔案描述符m的副本,即將檔案描述符m複製到n |
4、根據程序名查詢執行狀態及程序號
使用 pidof 命令可以實現此目的。具體語法如下:
pidof [option] program
option可以不填。一般的用法是pidof 後加要查詢的程序名稱,查詢成功返回0值且列印相應程序號,多個程序號以製表符隔開。若指定程序未在執行則返回1值。
5、查詢當前shell的層級
在shell中可以巢狀登入到另一個shell,通過以下命令可以查詢到當前的shell登入級數:
echo $SHLVL
6、臨時開啟子shell執行命令
可以使用圓括號來實現,圓括號中的所有命令均會在子shell中以新程序的身份執行。具體語法如下所示:
(command1;command2;command3...)
(
command1
command2
...
)
7、bash shell的常用內部命令
如下表:
內部命令 | 含義 |
. | 載入庫指令碼檔案進本shell中執行。簡單理解成是讀取shell指令碼中的內容進來本shell中執行即可。 |
alias | 設定命令別名。函式是將一組命令打包設定一個別名,alias則是針對一個命令打包設定別名。 |
bg | 將作業置於後臺執行。 |
cd | 改變當前工作目錄。 |
echo | 列印指定的文字。 |
eval | 將引數作為shell命令來執行。用引號包括住命令及其引數。 |
exec | 將指定的程式取代shell或者永久改變當前shell的流方向。 |
exit | 退出shell |
export | 將變數宣告為環境變數。 |
fc | 與命令歷史一起執行。 |
fg | 將作業置於前臺執行。 |
getopts | 處理引數中的選項內容。 |
history | 顯示命令歷史 |
jobs | 顯示在後臺執行的作業。 |
kill | 向程序傳送訊號。 |
logout | 從shell中登出。 |
pwd | 顯示當前的工作目錄 |
set | 設定shell環境變數。 |
shift | 變換命令列的引數,將引數往左移一位,最左邊的引數將被刪除。 |
8、bash shell中的常用保留欄位
如下表:
保留欄位 | 含義 |
! | |
: |
|
break | |
case | |
continue | |
declare | |
do | |
done | |
elif | |
else | |
esac | |
for | |
let | |
local | |
read | |
return | |
test | |
then | |
until | |
wait | 等待後臺作業完成。 |
while |