Bash內建指令集

Bash內建指令集
以下的命令,大部份都沒有使用例,您可能會看不出所以然,摸不着頭腦。在我加入例說明前,建議您"man bash",然後自己實際操作一次。



--------------------------------------------------------------------------------

: [arguments]
不做任何事,除了[arguments]一些參數展開及一些特定重導向的作業外。

永遠返回零。它的用法跟true一樣。



--------------------------------------------------------------------------------

. filename [arguments]
source filename [arguments]
由filename中讀取命令,並執行。
您會在/etc/rc.d/*中發現很多
. /xxxx
的指令,而xxxx的permission都不是可執行的。事實上,在tcsh中,需要用
source /xxxx
來做同樣的指令。
注意到"."的後面是有空格的(比較一下". /"跟"./",不一樣)。filename是內含指令的純文字檔即可,無須chmod 755 filename。


filename : my_source
DEV=lo
IP=127.0.0.1
NETMASK=255.0.0.0
BROADCAST=127.255.255.255

ifconfig $IP netmask $NETMASK broadcast $BROADCAST dev $DEV

接下來
. my_source

source my_source

便可執行該script,而不需要"chmod 755 my_source"



--------------------------------------------------------------------------------

alias [name[=value] ...]
暱稱命令
例如您如果來自DOS的世界,對UNIX的指令不習慣,可用alias來修改,以符合您的習慣。


alias ls="ls --color"
alias dir="ls"
alias cd..="cd .."
alias copy="cp -f" # dangerous, recommend, "cp -i"
alias del="rm -f" # dangerous, recommend, "rm -i"
alias move="mv -f" # dangerous, recommend, "mv -i"
alias md="mkdir"
alias rd="rmdir"

--------------------------------------------------------------------------------

unalias [-a] [name ...]
unalias取消alias的設定。"unalias -a"將全部alias取消。


unalias copy

--------------------------------------------------------------------------------

bg [jobspec]
將指定任務放到背景中,如果jobspec未指定,內定爲目前的。



--------------------------------------------------------------------------------

fg [jobspec]
將指定任務放到前景中,如果jobsepc沒有指定,那麼內定爲目前的。



--------------------------------------------------------------------------------

jobs [-lnp] [ jobspec ... ]
第一種形式列出目前正在工作的任務。
-l : 除了列出一般資訊外,還列出Process IDs。
-p : 僅列出該工作羣"首腦"(Process group leader)的Process ID.
-n : 則僅列出有改變的jobs的狀態。
如果給定jobspec,輸出資訊則只有該jobspec。

返回值爲零,除非有非法的選項發生。

jobs -x command [ args ... ]

如果使用第二種形式(-x),jobs取代指定的command及args,並執行返回其Exit Status。



--------------------------------------------------------------------------------

kill [-s sigspec | -sigspec] [pid | jobspec] ...
將sigspec的信號送到pid或jobspec。
sigspec可以是SIGKILL/KILL這種形式或是信號號碼。如果sigspec是signal name,則大小寫無關,而且可以沒有SIG。
kill -l [signum]
列出信號名稱。

[foxman@foxman bash]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGIOT 7) SIGBUS  SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
1 SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 2 SIGWINCH 29) SIGIO
30) SIGPWR



--------------------------------------------------------------------------------

wait [n]
等待指定的行程,並返回其結束狀態。n可以是個jobspec或Process ID。如果n未指定,則等待所有的子行程,及返回值爲零。若n爲不存在的job或process,則返回127。否則,返回值爲最後一個job/process的Exit Status。



--------------------------------------------------------------------------------

bind [-m keymap] [-lvd] [-q name]
bind [-m keymap] -f filename
bind [-m keymap] keyseq:function-name
顯示出目前readline的按鍵及鏈結函數設定或是巨集。

-m keymap : 設定keymap binding。
-l : 顯示出所有readline function的名稱。
-v : 顯示出目前的function name及bindings。
-d : 顯示出function name及bindings。
-f filename : 從filename讀取key bindings。
-q function : 詢問那個按鍵觸發function。



--------------------------------------------------------------------------------

break [n]
跳出控制迴圈for/while/until中使用。如果有指定n,則跳出n層。n必須是大於等於1。若n大於巢狀圈數,則所有的圈都會跳離。返回值回零。



--------------------------------------------------------------------------------

continue [n]
還原控制迴圈for/while/until中使用。如果有指定n,則返回n層。n必須是大於等於1。若n大於巢狀圈數,則還原到最上層。返回值回零。



--------------------------------------------------------------------------------

exit [n]
離開程式。n是Exit Status。



--------------------------------------------------------------------------------

return [n]
在function中使用。n爲返回值,其作用與Exit Status一樣。



--------------------------------------------------------------------------------

builtin shell-builtin [arguments]
執行內建函數。當您定義了與內建函數相同的指令時,可用此命令來執行內建函數。



--------------------------------------------------------------------------------

cd [dir]
更換目錄到dir。如果沒有指定,內定爲HOME所指定的目錄。



--------------------------------------------------------------------------------

command [-pVv] command [arg ...]
用command指定可取消正常的shell function尋找。只有內建命令及在PATH中找得到的纔會被執行。"-p"選項,搜尋命令的方式是用PATH來找。"-V"或"-v"選項,會顯示出該命令的一些簡約描述。



--------------------------------------------------------------------------------

declare [-frxi] [name[=value]]
typeset [-frxi] [name[=value]]
宣告參數並給它們設定屬性。如果沒有給定名稱,將會顯示各參數值。

-f : 僅使用函數名稱。
-r : 將name設爲readonly。
-x : 將name輸出給後續環境使用。
-i : 該參數被設爲integer來使用,可用於算術表述。

用"+"時,關閉該屬性。



--------------------------------------------------------------------------------

dirs [-l] [+/-n]
顯示目前記憶的目錄。目錄可透過pushd/popd來操作。

+n : 顯示開始的記錄n個。
-n : 顯示結尾的記錄n個。
-l : 顯示較多的資訊。



--------------------------------------------------------------------------------

echo [-neE] [arg ...]
輸出顯示args,由空白分隔。返回值永爲零。

-n : 不跳行。
-e : 啓動"/"符號的解譯。
-E : 將ESC解譯功能取消。

"/a" : alert(bell),發出聲響。
"/b" : backspace,倒退。
"/c" : suppress trailing newline,不跳行。
"/f" : form feed,跳行跳格。
"/n" : new line,新行。
"/r" : carriage return,回到行起點。
"/t" : horizontal tab,水平跳位。
"/v" : vertical tab,垂直跳位。
"//" : 輸出"/"。
"/nnn" : 輸出ASCII Code號碼nnn(八進位)。



--------------------------------------------------------------------------------

enable [-n] [-all] [name ...]
啓動或關閉內建函數命令。使用"-n"將所有指定命令皆關閉,否則都是啓動的。如果只有"-n"參數,它將會顯示所有關閉的函數。如果只有"-all",它將會顯示所有內建命令。



--------------------------------------------------------------------------------

eval [arg ...]
讀取args,並將args合爲一個命令,然後執行。其返回值成爲eval的返回值。如果沒有參數,eval返回True。



--------------------------------------------------------------------------------

exec [[-] command [arguments]]
當命令執行時,該命令取代shell,沒有新的process產生。如果第一個參數是"-",shell會將"-"放入第零個參數,傳給command。



--------------------------------------------------------------------------------

export [-nf] [name[=word]] ...
export -p
將name輸出給環境,給往後的命令使用。"-f"選項表示name是函數。"-p"顯示出所有export的名稱。"-n"移除name。



--------------------------------------------------------------------------------

set [--abefhkmnptuvxldCHP] [-o option] [arg ...]
-a : 自動將變數標記爲可讓後面環境所使用。
-b : 立即報告被終結的背景程式狀態。
-e : 當命令(simple-command,見後面)返回非零值時,立即跳出。
-f : 取消pathname expansion。
-h : 找出所記憶的函數命令位置。
-k : 所有keyword參數都放到環境中。
-m : 監督模式。
-n : 讀取命令,但不要執行。可用於語法檢查。
-p : 打開privileged模式。
-t : 當讀取一個命令並執行後,立即離開。
-u : 當參數展開時,把unset參數當成是錯誤。
-v : 列出shell input lines。
-x : 在展開每個simple-command後,bash顯示展開值在PS4上。
-l : 儲存並還原name binding在for語法中。
-d : 關閉hasing command搜尋。
-C : 跟`noclobber=`一樣。請見內定參數一節。
-H : 啓動! style history substitution。
-P : 在使用像cd這種指令時,不要跟隨symbolic links。
-- : "--"之後,沒有參數跟在後面。
- : 指定將所有後面的參數當成是位置參數。
-o option-name : option-name可以是以下之一
allexport : 與"-a"相同。
braceexpand : 啓動Brace Expansion。這是內定設定。
emacs : 使用emacs-style命令列編輯界面。
errexit : 與"-e"相同。
histexpand : 與"-H"相同。
ignoreeof : 效果跟`IGNOREEOF=10`一樣。
interactive-commands : 允許#做爲解。
monitor : 與"-m"相同。
noclobber : 與"-C"相同。
noexec : 與"-n"相同。
noglob : 與"-f"相同。
nohash : 與"-d"相同。
notify : 與"-b"相同。
nounset : 與"-u"相同。
physical : 與"-P"相同。
posix : Bash行爲修改爲Posix 1003.2標準。
privileged : 與"-p"相同。
verbose : 與"-v"相同。
vi : 使用vi-style命令列編輯程式。
xtrace : 與"-x"相同。



--------------------------------------------------------------------------------

unset [-fv] [name ...]
移除對映於name的參數。要注意PATH、IFS、PPID、PS1、PS2、UID、EUID不能unset。若RANDOM、SECONDS、 LINENO、HISTCMD被unset,它們會喪失原有意義,既始它們後來被重設也一樣。返回值爲True,除非name是不能被unset的。



--------------------------------------------------------------------------------

fc [-e ename] [-nlr] [first] [last]
fc -s [pat=rep] [cmd]
修正命令。



--------------------------------------------------------------------------------

getopts optstring name [args]
解析位置參數。



--------------------------------------------------------------------------------

hash [-r] [name]
對每個name命令的完整路徑記錄下來。"-r"選項強迫忘記所有命令位置。如果沒有給參數,則將會印出所有的資訊。返回值爲True。



--------------------------------------------------------------------------------

help [pattern]
顯示協助資訊。



--------------------------------------------------------------------------------

history [n]
history -rwan [filename]
沒有參數時,會顯示所下命令的歷史記錄。帶有參數"n"則顯示最後n個。

其它參數如下:
-a : 新增"新歷史"到歷史檔中。
-n : 讀取尚未讀到歷史中的記錄。
-r : 讀取filename做爲歷史檔,並用它爲目前歷史記錄。
-w : 將現有歷史記錄寫到filename中。



--------------------------------------------------------------------------------

let arg [arg ...]
算術表述。請參考算術表述一節。



--------------------------------------------------------------------------------

local [name[=value] ...]
產生一個局部參數。如果用於function,則其作用圍在function內及其子函數。



--------------------------------------------------------------------------------

logout
離開login shell。



--------------------------------------------------------------------------------

popd [+/-n]
移除目錄堆疊。"+n"移除上面n個,"-n"移除下面n個。



--------------------------------------------------------------------------------

pushd [dir]
pushd +/-n
將目錄新增到目錄堆疊的最上面。"+n"旋轉該堆疊,使第n個目錄變成最上面。"-n"旋轉該堆疊,使倒數第n個目錄變成最上面。



--------------------------------------------------------------------------------

pwd
列出目前工作目錄的絕對路徑。



--------------------------------------------------------------------------------

read [-r] [name ...]
讀進一行,然後第一個字設到第一個name,第二個設到第二個name,依此類推。如果沒有name在參數中,則read會將值設到REPLY。返回值爲零,除非遇到End-Of-File。若有"-r"選項,則"/n"被考慮爲該行的一部份。



--------------------------------------------------------------------------------

readonly [-f] [name ...]
readonly -p
將給定的name標記爲readonly。如果是"-f"選項,則函數也一樣被標記爲readonly。"-p"會列出所有readonly的name。"--"取消檢查剩餘的參數。



--------------------------------------------------------------------------------

shift [n]
Positional Parameters從n+1...開始,會被改爲$1...。n若爲零,則沒有改變。n若未給定,則內定爲1。n必須是非負數,並且小於或等於$#。若n大於$#,則沒有改變。返回值爲零,除非n大於$#或小於零。



--------------------------------------------------------------------------------

suspend [-f]
暫停這個shell的執行,直到它收到SIGCONT信號。"-f"選項則是叫login shell不要抱怨,不過還是一樣暫停。返回狀態零,除非該shell是個login shell,而且沒有"-f"選項。



--------------------------------------------------------------------------------

test expr
[ expr ]
我們在Exit Status的部份已經說過了,不再重。



--------------------------------------------------------------------------------

times
列出該shell的累積的使用者及系統時間及從shell執行的process時間,返回值爲零。



--------------------------------------------------------------------------------

trap [-l] [arg] [sigspec]
當收到sigspec信號時,執行arg命令。"-l"顯示出信號名稱及號碼。



--------------------------------------------------------------------------------

type [-all] [-type | -path] name [name ...]
沒有參數的狀況下,它會顯示出shell如何解譯name做爲命令。如果有"-type",它將會顯示alias、keyword、function、 builtin或file。如果有"-path"的參數,它將會顯示該命令的路徑,找不到的話,不顯示任何東西。如果有"-all"的參數,它將會顯示所 有可執行name的可能路徑。type接受"-a"、"-t"、"-p"做爲縮寫。



--------------------------------------------------------------------------------

ulimit [-SHacdfmstpnuv [limit]]
ulimit提供了對shell的可獲取資源控制的功能。

-a : 報告目前所有限制。
-c : 設定最大可產生的core檔案。
-d : 行程資料段(process's data segment)最大值。
-f : 可被這個shell產生的最大檔案。
-m : resident set size最大值。
-s : 堆疊最大值。
-t : CPU TIME最大值(以秒計算)。
-p : pipe size in 512-byte blocks的最大值。
-n : 可開啓的file descriptors最大值。
-u : 單一使用者可使用的最大process數。
-v : 該shell最大虛擬記憶體可用值。

所有項目是以1024做爲單位。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章