中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

bash基礎(chǔ)知識有哪些

2018-09-03    來源:愛站科技

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

  大家知道bash基礎(chǔ)知識有哪些嗎?下面就由愛站頻道的小編給小伙伴們仔細(xì)講解一下吧,感興趣的朋友跟小編一起來了解一下吧!

  Linux 下最常用的 shell,bash。bash(Bourne Again Shell) 是 Linux 的缺省 shell,并被大多數(shù)用戶所使用,在本文中你將學(xué)會:

  什么是shell

  Linux上最常見的shell

  命令補(bǔ)齊(Command-line completion)和通配

  命令歷史記錄(Command history)和別名

  重定向和管道

  改變提示符

  進(jìn)程控制(Job control)

  如何用戶化配置你的bash shell

  另外你還將看到一些最常用的bash命令和內(nèi)存變量的用法,讀完本文后你將能更快和更有效地使用bash。

  Shells in a Nutshell

  什么是shell?總之這個詞好象總是出現(xiàn)在 Linux 里,但很多新用戶并不清楚它的明確的含義。本節(jié)將給出一個確切的解釋并說明為什么在Linux中它顯得如此的重要。

  什么是Shell?

  shell是你(用戶)和Linux(或者更準(zhǔn)確的說,是你和Linux內(nèi)核)之間的接口程序。你在提示符下輸入的每個命令都由shell先解釋然后傳給Linux內(nèi)核。

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

  注意: 如果你熟悉m$-dos,你將認(rèn)出這很象DOS 用戶和 COMMAND.COM之間的關(guān)系。唯

  一的區(qū)別是command.com 的功能遠(yuǎn)不能和shell 相提并論。

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

  shell 是一個命令語言解釋器(command-language interpreter)。擁有自己內(nèi)建的 shell 命令集。此外,shell也能被系統(tǒng)中其他有效的Linux 實用程序和應(yīng)用程序(utilities and application programs)所調(diào)用。

  不論何時你鍵入一個命令,它都被Linux shell所解釋。一些命令,比如打印當(dāng)前工作目錄命令(pwd),是包含在Linux bash內(nèi)部的(就象DOS的內(nèi)部命令)。其他命令,比如拷貝命令(cp)和移動命令(rm),是存在于文件系統(tǒng)中某個目錄下的單獨的程序。而對用戶來說,你不知道(或者可能不關(guān)心)一個命令是建立在shell內(nèi)部還是一個單獨的程序。

  附圖展示了 shell 是如何執(zhí)行命令解釋的,shell 首先檢查命令是否是內(nèi)部命令,不是的話再檢查是否是一個應(yīng)用程序,這里的應(yīng)用程序可以是Linux本身的實用程序,比如ls 和 rm,也可以是購買的商業(yè)程序,比如 xv,或者是公用軟件(public domain software),就象 ghostview。然后shell試著在搜索路徑里尋找這些應(yīng)用程序。搜索路徑是一個能找到可執(zhí)行程序的目錄列表。如果你鍵入的命令不是一個內(nèi)部命令并且在路徑里沒有找到這個可執(zhí)行文件,將會顯示一條錯誤信息。而如果命令被成功的找到的話,shell的內(nèi)部命令或應(yīng)用程序?qū)⒈环纸鉃橄到y(tǒng)調(diào)用并傳給Linux內(nèi)核。

  shell的另一個重要特性是它自身就是一個解釋型的程序設(shè)計語言,shell 程序設(shè)計語言支持在高級語言里所能見到的絕大多數(shù)程序控制結(jié)構(gòu),比如循環(huán),函數(shù),變量和數(shù)組。shell 編程語言很易學(xué),并且一旦掌握后它將成為你的得力工具。任何在提示符下能鍵入的命令也能放到一個可執(zhí)行的shell程序里,這意味著用shell語言能簡單地重復(fù)執(zhí)行某一任務(wù)。bash入門基礎(chǔ)

  shell 如何啟動

  shell在你成功地登錄進(jìn)入系統(tǒng)后啟動,并始終作為你與系統(tǒng)內(nèi)核的交互手段直至你退出系統(tǒng)。你系統(tǒng)上的每位用戶都有一個缺省的shell。每個用戶的缺省shell在系統(tǒng)里的passwd文件里被指定,該文件的路徑是/etc/passwd。passwd文件里還包含有其他東西:每個人的用戶ID號,一個口令加密后的拷貝和用戶登錄后立即執(zhí)行的程序,(注:為了加強(qiáng)安全性,現(xiàn)在的系統(tǒng)一般都把加密的口令放在另一個文件--shadow中,而passwd中存放口令的部分以一個x字符代替)雖然沒有嚴(yán)格規(guī)定這個程序必須是某個Linux shell,但大多數(shù)情況下都如此。

  最常用的shell

  在Linux 和 UNIX系統(tǒng)里可以使用多種不同的shell可以使用。最常用的幾種是 Bourne shell (sh), C shell (csh), 和 Korn shell (ksh)。三種shell 都有它們的優(yōu)點和缺點。Bourne shell 的作者是 Steven Bourne。它是 UNIX 最初使用的shell 并且在每種 UNIX 上都可以使用。Bourne shell 在 shell 編程方面相當(dāng)優(yōu)秀,但在處理與用戶的交互方面作得不如其他幾種 shell。

  C shell 由 Bill Joy 所寫,它更多的考慮了用戶界面的友好性。它支持象命令補(bǔ)齊(command-line completion)等一些 Bourne shell 所不支持的特性。普遍認(rèn)為C shell 的編程接口做的不如 Bourne shell, 但 C shell 被很多 C 程序員使用因為 C shell的語法和 C語言的很相似,這也是C shell名稱的由來。

  Korn shell (ksh) 由 Dave Korn 所寫。它集合了C shell 和 Bourne shell 的優(yōu)點并且和 Bourne shell 完全兼容。

  除了這些 shell 以外,許多其他的 shell 程序吸收了這些原來的 shell 程序的優(yōu)點而成為新的 shell 。在 Linux 上常見的有 tcsh (csh 的擴(kuò)展),Bourne Again shell(bash, sh 的擴(kuò)展), 和Public Domain Korn shell (pdksh, ksh 的擴(kuò)展)。bash 是大多數(shù)Linux 系統(tǒng)的缺省 shell。

  The Bourne Again Shell

  Bourne Again shell (bash), 正如它的名字所暗示的,是 Bourne shell 的擴(kuò)展。bash 與 Bourne shell 完全向后兼容,并且在 Bourne shell 的基礎(chǔ)上增加和增強(qiáng)了很多特性。bash 也包含了很多 C 和 Korn shell 里的優(yōu)點。bash 有很靈活和強(qiáng)大的編程接口,同時又有很友好的用戶界面。

  為什么要用 bash 來代替 sh 呢?Bourne shell 最大的缺點在于它處理用戶的輸入方面。在 Bourne shell 里鍵入命令會很麻煩,尤其當(dāng)你鍵入很多相似的命令時。而 bash 準(zhǔn)備了幾種特性使命令的輸入變得更容易。

  命令補(bǔ)齊(Command-Line Completion)

  通常你在 bash (或任何其他的 shell)下輸入命令時你不必把命令輸全 shell 就能判斷出你所要輸入的命令。例如,假定當(dāng)前的工作目錄包含以下的文件和子目錄:

  News/ bin/ games/ mail/ samplefile test/

  如果你要進(jìn)入 test 子目錄,你將會輸入以下的命令:

  cd test

  這個命令能夠滿足你的需要,但 bash還提供了稍微不同的方法來完成同樣的事。因為 test 是當(dāng)前目錄里唯一以字母 t開頭的子目錄,bash在你只輸入字母 t后就能判斷出你要做什么了:

  cd t

  在你鍵入那個字母后,唯一的可能就是 test 。想讓 bash 幫你結(jié)束命令的話,按下 Tab 鍵:

  cd t

  當(dāng)你這樣做以后,bash 將幫你補(bǔ)齊命令并顯示在屏幕上。但在你按下回車鍵以前命令并沒有被執(zhí)行,bash 會讓你檢驗補(bǔ)齊的命令是否是你真正需要的。在輸入象這樣短的命令時你也許看不出它的價值所在,甚至在命令很短時還會簡慢輸入的速度,但是當(dāng)你要輸入的命令有點長時,你會發(fā)現(xiàn)這個特性是多么的美好。

  但是當(dāng)目錄里有不止一個以字母 t 開頭的文件時會發(fā)生什么情況呢?在你使用命令補(bǔ)齊時會有問題,讓我們看看下面的情況,當(dāng)前目錄里有下列內(nèi)容:

  News/ bin/  mail/ samplefile  test/ tools/ working/

  現(xiàn)在這個目錄里有兩個以字母 t 開頭的文件。假設(shè)你仍然想進(jìn)入 test 子目錄,如何使用命令補(bǔ)齊呢?如果你象先前那樣鍵入:

  cd t

  bash 將不知道你到底想進(jìn)入哪個子目錄,因為給出的信息并不唯一。如果你這樣做了的話,bash 將發(fā)出一聲蜂鳴提醒你沒有足夠的信息來補(bǔ)齊你的命令。蜂鳴之后bash 并不改變輸入的命令,這將使你能在原來的基礎(chǔ)上再輸入更多的信息,在這個例子中你僅需再鍵入一個 e 并再按一下 Tab 鍵,這時 bash 就有足夠的信息來完成你的命令了: cd test

  當(dāng)你輸入命令時不論何時按下 Tab 鍵,bash 都將盡其所能地試圖補(bǔ)齊命令,不行的話會發(fā)出蜂鳴來提醒你需要更多的信息。你需要鍵入更多的字符,并再次按下 Tab 鍵,重復(fù)這個過程直至你期望的命令出現(xiàn)。

  通配符

  另一個使命令輸入變得更簡單的方法是在命令中使用通配符。bash 支持三種通配符:

  *   匹配任何字符和任何數(shù)目的字符

  ?   匹配任何單字符

  [...] 匹配任何包含在括號里的單字符

  * 通配符的使用有些象命令補(bǔ)齊。例如,假設(shè)當(dāng)前目錄包含以下文件:

  News/ bin/  games/  mail/ samplefile  test/

  如果你想進(jìn)入 test 目錄,你將鍵入 cd test, 或者你想用命令補(bǔ)齊:

  cd t

  現(xiàn)在有第三種方法來做同樣的事。因為僅有一個文件以字母 t 開頭,你也能用 * 通配符來進(jìn)入該目錄。鍵入下列命令:

  cd t*

  * 匹配任何字符和任何數(shù)目的字符,所以 shell 將把 t* 替換為 test(當(dāng)前目錄里唯一和通配方案匹配的文件)。當(dāng)前目錄里只有一個文件以字母 t 開頭的話這將是可靠的。但是如果當(dāng)前目錄里有不止一個文件以字母 t 開頭,shell 將試著進(jìn)入第一個符合匹配方案的目錄,這個目錄是以字母表排序的第一個目錄,這個目錄也許是也許不是你所期望的。

  通配符 * 的一個更實際的用途是通配你要執(zhí)行的命令中的多個名字相似的文件。例如,假設(shè)當(dāng)前目錄里包含以下文件:

  ch1.doc  ch2.doc  ch3.doc chimp config  mail/ test/ tools/

  如果你需要打印所有擴(kuò)展名是 .doc 的文件,你能使用象這樣

  以上所述就是小編給大家總結(jié)的關(guān)于bash基礎(chǔ)知識全部內(nèi)容了,希望能夠幫助到大家。

標(biāo)簽: linux 安全 搜索

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:linux配置文件正確方法

下一篇:ros配置以及安裝教程