1.1 bash版本 $echo $BASH_VERSION 或 $bash –v 1.2 用內(nèi)置的set和shopt命令設(shè)置bash選項 內(nèi)置set格式: set –o option # turn on the option set +o option # turn off the option set – [a-z] # abbreviation for an option ; the minus turns it on . set + [a-z] # abbreviation for an option ; the minus turns it on . 例: $ set –o # 列出所有當(dāng)前設(shè)置的和復(fù)位的選項 $ set –o noclobber # 設(shè)置noclobber選項,禁止你在重定向時重寫文件,。沒有設(shè)置noclobber,,>號后面的文件若存在,會被覆蓋,,不存在則會被創(chuàng)建,。 內(nèi)置shopt(2.x以上版) Shopt(shell options)內(nèi)置命令是set命令的一個替代,但它為配置shell增加了更多的選項,。 $shopt –p # 打印所有可獲得的選項設(shè)置 $shopt –s # 顯示所有已設(shè)置的選項 $shopt –u # 顯示所有復(fù)位(未設(shè)置)的選項 $shopt –s cdspell # 設(shè)置cdspell選項 $shopt –u cdspell # 將cdspell選項復(fù)位 1.3 提示符 用專用轉(zhuǎn)義序列設(shè)置提示符: 反斜杠序列 含義 "u 當(dāng)前的用戶名 "h 主機名 "w 當(dāng)前的工作目錄 "W 當(dāng)前工作目錄的基名 "t 當(dāng)前時間是HH:MM:SS格式 "d 日期是“星期 月 日”的格式(如Tue May 26) "s shell的名字 "# 命令編號 "! 命令的歷史編號 "$ 如果有效的UID是0,,是一個#號,否則是$ "" 反斜杠 "v bash的版本號,,如2.03 "V bash的發(fā)行號和路徑級,,如2.03.0 例: $ PS1=”["u@"h "w ]"$” $ PS1=”"W:"d> ” 或 $PS1=” $(uname -n) > ” 1.4 命令行
處理命令的順序: 別名—關(guān)鍵詞(如if,function,,while,,until)---函數(shù)---內(nèi)置命令----可執(zhí)行文件和腳本 內(nèi)置命令屬于shell的一部分(內(nèi)置在系統(tǒng)中)。如果用一個簡單文件名作為命令,,shell將首先檢查它是否是某條內(nèi)置命令的名字,。如果是內(nèi)置命令名稱,那么shell將其作為調(diào)用進程的一部分執(zhí)行,,也就是說shell并不會創(chuàng)建新的進程執(zhí)行內(nèi)置命令,。shell并不需要在文件結(jié)構(gòu)中搜索內(nèi)置命令程序,這是因為shell可以立即訪問它們,。 如果用戶輸入的簡單文件名不是內(nèi)置命令,,shell將使用PATH變量作為指南,搜索目錄結(jié)構(gòu),,以查找用戶想要的程序,。如果shell找到這個程序,那么它將創(chuàng)建一個新的進程以執(zhí)行這個程序,。
內(nèi)置Type命令判斷命令類型,; $ type pwd pwd is a shell builtin $ type clear clear is /usr/bin/clear $ type if if is a shell keyword 內(nèi)置help命令列出所有內(nèi)置命令或一個特定內(nèi)置命令的描述; $ help $ help help $ help pwd 改變命令行的處理順序 bash提供了3個內(nèi)置命令可忽視命令行處理順序: command,,builtin,,enable。 command內(nèi)置命令將別名和函數(shù)從處理順序中去掉,只處理搜索路徑中的內(nèi)置命令和可執(zhí)行程序,; builtin 命令只查找內(nèi)置命令,,忽略在路徑中找到的函數(shù)和可執(zhí)行程序; enable可以打開和關(guān)閉內(nèi)置命令,,默認時,,內(nèi)置命令是打開的,使用-n開關(guān)可以關(guān)閉內(nèi)置命令,。不帶任何參數(shù),,enable命令將列出所有的內(nèi)置命令。 $ enable –n test # 關(guān)閉內(nèi)置命令test $ function cd { builtin cd ; echo $PWD; } # 防止引起無窮的遞歸循環(huán) 退出狀態(tài): 退出狀態(tài)為0,,表示命令執(zhí)行成功,;非0,表示命令執(zhí)行失敗,。 如果shell沒有找到命令,,返回的狀態(tài)是127,如果是一個致命的信號引起命令終止,,退出狀態(tài)是128加上引起它死亡的信號的編號,。 $ grip ellie /etc/passwd bash : grip : command not found $ echo $? 127 $ find / -name core ^C $ echo $? 130 命令的有條件執(zhí)行:&&和||
1.5 作業(yè)控制 缺省時,已經(jīng)設(shè)置作業(yè)控制(一些老版本的UNIX不支持這個特性),,如果沒有設(shè)置,,可以用如下命令重置: set –m # set job control in the .bashrc file set –o monitor # set job control in the .bashrc file 例: -bash-3.00$ vi # 按下^Z(control -Z)將vi回話暫停 [1]+ Stopped vi -bash-3.00$ sleep 25& [2] 4354 # 標(biāo)記[2]表示這是第2個在后臺運行的作業(yè),它的PID是4354 -bash-3.00$ jobs #列出所有正在運行的作業(yè) [1]+ Stopped vi [2]- Running sleep 25 & -bash-3.00$ jobs –l #列出所有正在運行的作業(yè)及其作業(yè)號,,進程號 [1]+ 4353 Stopped (user) vi [2]- 4354 Running sleep 25 & -bash-3.00$ jobs %% #顯示最近一個放入作業(yè)表中的作業(yè) [1]+ Stopped vi 作業(yè)控制命令 命令 含義 jobs 列出所有作業(yè) ^Z 終止(暫停)作業(yè) bg 啟動被終止的后臺作業(yè) fg 將后臺作業(yè)調(diào)入前臺 stop 暫停一個后臺作業(yè) sty tostop 當(dāng)后臺作業(yè)向終端發(fā)送輸出時就暫停它 kill 向指定作業(yè)發(fā)送kill信號 wait [n] 等待一個指定的作業(yè)并返回它的退出狀態(tài),,這里n是一個PID或作業(yè)號 jobs命令的參數(shù) 含義 %n 作業(yè)號n %string 以string開頭的作業(yè)名 %?string 作業(yè)名包含string %% 當(dāng)前作業(yè) %+ 當(dāng)前作業(yè) -r 列出所有運行的作業(yè) -s 列出所有暫停的作業(yè) |
|
來自: pengx > 《Unix/Linux》