bash簡介
2004-04-23 15:18 pm
來自:Linux文檔
現載:Www.8s8s.coM
地址:無名
bash(Bourne Again Shell) 是 Red Hat 的缺省 shell. 它有40個內建命令和12個命令行參數。
shell 是一個命令語言解釋器(command-language interpreter)。 shell是用戶和linux內核之間的接口程序。你在提示符下輸入的每個命令都由shell先解釋然后傳給Linux內核。
shell 如何啟動 shell在你成功地登錄進入系統后啟動,并始終作為你與系統內核的交互手段直至你退出系統。你系統上的每位用戶都有一個缺省的shell。每個用戶的缺省shell在系統里的passwd文件里被指定,該文件的路徑是/etc/passwd。
bash 命令概要
這是幾個最常用的bash內部命令:
alias: 設置bash別名。
bg: 使一個被掛起的進程在后臺繼續執行。
cd: 改變當前工作目錄。
exit: 終止shell。
export: 使變量的值對當前shell的所有子進程都可見 。
fc: 用來編輯歷史命令列表里的命令。
fg: 使一個被掛起的進程在前臺繼續執行。
help: 顯示bash內部命令的幫助信息。
kill: 終止某個進程。
pwd: 顯示當前工作目錄。
unalias: 刪除已定義的別名。
bash 還有許多命令,但這些是最常用的,想了解更詳細的情況,請參考bash的手冊--在提示符下鍵入 man bash。
bash 變量
這里是幾個最有用的bash變量,包括變量名和簡單描述。
EDITOR, FCEDIT: bsah fc 命令的缺省編輯器。
HISTFILE: 用于貯存歷史命令的文件。
HISTSIZE: 歷史命令列表的大小。
HOME: 當前用戶的用戶目錄。
OLDPWD: 前一個工作目錄。
PATH: bash尋找可執行文件的搜索路徑。
PS1: 命令行的一級提示符。
PS2: 命令行的二級提示符。
PWD: 當前工作目錄。
SECONDS: 當前shell開始后所流逝的秒數。
bash的特性:
1.命令補齊(Command-Line Completion)
在 bash 下輸入命令時你不必把命令輸全 shell 就能判斷出你所要輸入的命令。只要輸入命令的一部分,再按下 Tab 鍵,當你這樣做以后,bash 將幫你補齊命令并顯示在屏幕上。但在你按下回車鍵以前命令并沒有被執行,bash 會讓你檢驗補齊的命令是否是你真正需要的。在輸入象這樣短的命令時你也許看不出它的價值所在,甚至在命令很短時還會簡慢輸入的速度,但是當你要輸入的命令有點長時,你會發現這個特性是多么的美好。
2. 通配符
另一個使命令輸入變得更簡單的方法是在命令中使用通配符。bash 支持三種通配符:
* 匹配任何字符和任何數目的字符
? 匹配任何單字符
[...] 匹配任何包含在括號里的單字符
3. 命令歷史記錄
bash 支持命令歷史記錄。這意味著 bash 保留了一定數目的你先前已經在shell 里輸入過的命令。這個數目取決于一個叫做HISTSIZE的變量。有關 HISTSIZE 的更多信息,請看本文后面的“bash 變量”一節。
bash 把你先前輸入的命令文本保存在一個歷史列表中。當你用你的帳號登錄后歷史列表將根據一個歷史文件被初始化。歷史文件的文件名被一個叫 HISTFILE 的 bash變量指定。歷史文件的缺省名字是 .bash_history。這個文件通常在你的用戶目錄中。(注意該文件的文件名以一個句號開頭,這意味著它是隱含的,僅當你帶 -a 或 -A參數的 ls 命令列目錄時才可見)
使用歷史記錄列表最簡單的方法是用上方向鍵。按下上方向鍵后最后鍵入的命令將出現在命令行上。再按一下則倒數第二條命令會出現,以此類推。如果上翻多了的話也可以用向下的方向鍵來下翻。顯示在命令行上的歷史命令可以被編輯。
另一個使用命令歷史文件的方法是用 bash 的內部命令 history 和 fc(fix 命令)命令來顯示和編輯歷史命令。history 命令能以兩種不同的方法來調用。第一種是:
history [n]
當 history 命令沒有參數時,整個歷史命令列表的內容將被顯示出來。下面是一個命令歷史列表的例子:
使用 n 參數的作用是僅有最后 n 個歷史命令會被列出。例如,history 5 顯示最后 5 個命令。
調用 history 命令的第二種方法用于修改命令歷史列表文件的內容。命令的語法如下:
history [-r|w|a|n] [filename]
這種形式中,-r 選項告訴 history 命令讀命令歷史列表文件的內容并且把它們當作當前的命令歷史列表。-w 選項將把當前的命令歷史記錄寫入文件中并覆蓋文件原來的內容。-a 選項把當前的命令歷史記錄追加到文件中。-n 選項將讀取文件中的內容并加入到當前歷史命令列表中。如果 filename 選項沒有被指定,history 命令將用變量HISTFILE 的值來代替。
fc 命令能用兩種方法來編輯歷史命令。第一種使用下列語法:
fc [-e editor_name] [-n] [-l] [-r] [first] [last]
這里所有參數都是可選的。-e editor_name 選項用來指定用于編輯命令的文本編輯器。 first 和 last 選項用于選擇列出歷史命令的范圍,既可以是數字也可以是字符串。-n 選項禁止列出命令的編號。-r 選項反向列出匹配的命令。-l 選項把匹配的命令行列在屏幕上(而不是在編輯器中)。如果-e editor_name參數沒有被指定,則以變量FCEDIT的值來代替,如果該變量不存在的話,則用變量EDITOR的值來代替,都不存在的話將使用vi編輯器。
4.別名
命令別名通常是其他命令的縮寫,用來減少鍵盤輸入。
alias file='ls -l | grep ^-'
alias ls='ls --color'
alias sub='ls -F -l | grep /$'
這是一些很多用戶認為有用的別名,你可以把它們寫入你的.profile文件中提高工作效 :
如果想取消別名,可以使用下面的命令:
unalias <alias name>
定義別名時,等號的兩頭不能有空格,否則 shell 不能決定你需要做什么。
5.輸入重定向
輸入重定向用于改變一個命令的輸入源。一些命令需要在命令行里輸入足夠的信息才能工作。 輸入重定向并不經常使用因為大多數命令都以參數的形式在命令行上指定輸入文件的文件名。盡管如此,當你使用一個不接受文件名為輸入參數的命令,而需要的輸入又是在一個已存在的文件里時,你就能用輸入重定向解決問題。
6.輸出重定向
輸出重定向比輸入重定向更常用。輸出重定向使你能把一個命令的輸出重定向到一個文件里,而不是顯示在屏幕上。
7.管道
管道可以把一系列命令連接起來。這意味著第一個命令的輸出會通過管道傳給第二個命令而作為第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入 ,以此類推。而管道行中最后一個命令的輸出才會顯示在屏幕上(如果命令行里使用了輸出重定向的話,將會放進一個文件里)。
8.提示符
bash 有兩級用戶提示符。第一級是你經常看到的 bash 在等待命令輸入時的提示符。缺省的一級提示符是字符$(如果是超級用戶,則是#號)。你可以通過改變bash 的PS1變量的值來改變你的缺省提示符。
把bash shell 的提示符該為指定的字符串。
當bash 期待輸入更多的信息以完成命令時顯示第二級提示符。缺省的第二級提示符是 >。 果你要改變第二級提示符,可以通過設置PS2變量的值來實現。
另外你還可以用特殊的字符來定義你的提示符,下面的列表列出了最常用的特殊字符。
字符
含義
!
顯示該命令的歷史記錄編號。
# 顯示當前命令的命令編號。
$ 顯示$符作為提示符,如果用戶是root的話,則顯示#號。
顯示反斜杠。
d 顯示當前日期。
h 顯示主機名。
打印新行。
nn 顯示nnn的八進制值。
s 顯示當前運行的shell的名字。
顯示當前時間。
u 顯示當前用戶的用戶名。
W 顯示當前工作目錄的名字。
w 顯示當前工作目錄的路徑。
9. 作業控制(Job Control)
作業控制能夠控制當前正在運行的進程的行為。特別地,你能把一個正在運行的進程掛起,稍后再恢復它的運行。bash 保持對所有已啟動的進程的跟蹤,你能在一個正在運行的進程的生命期內的任何時候把它掛起或是使它恢復運行。
按下 Ctrl-Z 使一個運行的進程掛起。bg 命令使一個被掛起的進程在后臺恢復運行,反之 fg 命令使進程在前臺恢復運行。這幾個命令在當用戶想在后臺運行而意外的把它放到了前臺時,經常被用到。當一個命令在前臺被運行時,它會禁止用戶與 shell 的交互,直到該命令結束。這通常不會造成麻煩,因為大多數命令很快就執行完了。如果你要運行的命令要花費很長的時間的話,我們通常會把它放到后臺,以使我們能在前臺繼續輸入其他命令。
10. 用戶化配置bash
為了保存這些用戶化配置,必須把它們保存到一個bash的初始化文件里。 你能把任何想每次進入bash都執行的命令放到初始化文件里。這個文件里最常見到的命令通常是alias和變量的初始化。bash的初始化文件叫做 profile。每個使用bash的用戶都有一個 .profile文件在他的用戶目錄里。bash在每次啟動時都讀取這個文件,并執行所有包含的命令。
下面的代碼是缺省的.profile文件的內容。這個文件的位置在 /etc目錄。如果你想設置自己的bash 的話把它拷到你的用戶目錄里(如果還沒有的話)并命名為.profile。
posted on 2006-01-17 20:00
EricWong 閱讀(351)
評論(0) 編輯 收藏 所屬分類:
Linux