2013年10月22日 星期二

[Linux] Bash shell introduction


「Bourne Again SHell」簡稱為「bash」,是Linux distributions的標準shell,base on 「Bourne shell」且加強延伸的版本,所以若入門級建議先學習bash,即使之後使用不同的distributions,也能輕鬆上手囉!



Bash的優點


1. 命令編修能力 (history):能記憶使用過的指令
這個功能真的很好用,且很常使用到,只要按「上下鍵」就可以向上/下尋找輸入過的指令。通常可用在查詢執行步驟、或是要重複下達相同或類似的指令時,可以直接按上下鍵切換執行,真的很方便。

※這些紀錄則是被存放在 .bash_history的檔案內,~/.bash_history 記錄的是前一次登入以前所執行過的指令, 而至於這一次登入所執行的指令都被暫存在記憶體中,當你成功的登出系統後,該指令記憶才會記錄到 .bash_history 當中。
※這個功能也有缺點,倘若主機被駭客入侵時,他只要查閱這個檔案就可以知道曾經被下過哪接指令了。


2. 命令與檔案補全功能 (善用[tab]鍵):可將尚未打完的命令或檔案名稱補全
這個功能也是很夯,在輸入指令或檔名時,有時候真的又臭又長,key檔名也很容易造成手誤,這時候就很需要[tab]鍵來輔助了(和櫻木花道的左手一樣)
優點:少key很多字、資料正確性

如何執行呢?
  • [Tab] 接在一串指令的第一個字的後面,則為命令補全
  • [Tab] 接在一串指令的第二個字以後時,則為「檔案補齊」

3. 命令別名設定功能(alias):即為自己設定一個新的命令名稱,用來取代原來的指令列
第一次知道這個功能,所以心得待補,先貼上鳥哥哥的示範教學。
而且還可以取代原來的指令碼,鳥哥哥示範的是將 rm (刪除資料)這個指令取代為 「rm -i」(-i:表示移除前再次確認),降低勿刪檔案的機會。(詳細範例)


4. 工作控制、前景背景控制:
使用前、背景的控制可以讓工作進行的更為順利。
至於工作控制(jobs)的用途則更廣, 可以讓我們隨時將工作丟到背景中執行,而不怕不小心使用了 [Ctrl] + c 來停掉該程序。
也可以在單一登入的環境中,達到多工的目的。
這個功能我也還沒使用過,使用心得待補。(詳細介紹)


5. 程式化腳本(shell scripts):將常使用的一連串指令寫在同一個檔案中
對這塊的著墨較少,最常使用是在須對系統下一串連續指令時,為避免順序或輸入錯誤,會將這些指令寫入在一個檔案中,通常是針對常態性會執行的指令列(例如系統管理或是維護...),這樣只要執行此檔案就可不用老是重複那些指令步驟了,省去許多麻煩。
Ex:備份或倒入資料庫時,也可將過程一連串指令寫入檔案,之後僅須執行此檔案即可完成備份

鳥哥哥:「可以將你平時管理系統常需要下達的連續指令寫成一個檔案, 該檔案並且可以透過對談互動式的方式來進行主機的偵測工作」、「也可以藉由 shell 提供的環境變數及相關指令來進行設計」(詳細介紹)


6. 萬用字元 (wildcard):支援萬用字元幫助使用者查詢跟下達指令
舉例來說,想要知道 /usr/bin 底下有多少以 X 為開頭的檔案嗎?使用:『 ls -l /usr/bin/X* 』就能夠知道囉~此外,還有其他可供利用的萬用字元。(引述鳥哥哥範例)
是個很常使用到的查詢功能,詳細範例會再詳細描述。


Bash shell 的 type指令

「透過 type 這個指令我們可以知道每個指令是否為 bash 的內建指令。 此外,由於利用 type 搜尋後面的名稱時,如果後面接的名稱並不能以執行檔的狀態被找到, 那麼該名稱是不會被顯示出來的。也就是說, type 主要在找出『執行檔』而不是一般檔案檔名。所以,這個 type 也可以用來作為類似 which 指令的用途找指令用的!」(引述鳥哥哥範例)


大致了解Bash shell之後,就可以準備來操作bash了 >.*

參考資料
[1] http://linux.vbird.org/linux_basic/0320bash.php

沒有留言:

張貼留言