Linux基礎學習-Bash Shell簡介

Bash shell系列裏,由變量談起,先講到環境變量的功能與修改的問題, 然後會繼續提到歷史指令的運用。接下來,就會談一下『數據流重導向』這個重要概念, 最後就是管線命令的利用!



一  Bash shell簡介


管理整個硬件的其實是核心 (kernel),一般使用者 (user) 則是以 shell 來跟核心溝通~ 

我們常常提到的 shell 其實是比較狹隘的定義,一般來說,在 Linux 裏頭,所謂的 shell 就是指 BASH 這個文字模式的 shell 。但是,廣義的 shell 也可以是 KDE 之類的圖形接口控制軟件呢! 因爲他也可以幫我們與 kernel 進行溝通。

那麼我們來了解一下 Linux 使用的是哪一個 shell 呢?檢查一下 /etc/shells 這個檔案,至少就有底下這幾個可以用的 shells:

    /bin/sh (已經被 /bin/bash 所取代)
    /bin/bash (就是 Linux 預設的 shell)
    /bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,兼容於 bash)
    /bin/tcsh (整合 C Shell ,提供更多的功能)
    /bin/csh (已經被 /bin/tcsh 所取代)
    /bin/zsh (基於 ksh 發展出來的,功能更強大的 shell)

我這個使用者預設會取得哪一個 shell 啊?!

還記得我們在 首次進入 Linux -- 以文字方式登入 那個章節當中提到的登入動作吧?當我登入的時候,系統就會給我一個 shell 讓我來工作了。 而這個登入取得的 shell 就記錄在 /etc/passwd 這個檔案內!這個檔案的內容是啥?

[root@linux ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
.....(中間省略).....



二  Bash shell 功能簡介


chap1    BASH 主要的優點有底下幾個:


1) 命令編修能力(類似 DOS 的 doskey 功能):

『記憶使用過的指令!』 指令列按『上下鍵』就可以找到前一個輸入的指令!記錄的檔案在你的家目錄的.bash_history ! ~/.bash_history 記錄的是前一次登入以前所執行過的指令, 這一次登入所執行的指令都被暫存在暫內存中,當您成功的註銷系統後,該指令記憶纔會記錄到 .bash_history 當中! 


2) 命令與檔案補全功能:

    [Tab] 接在一串指令的第一個字的後面,則爲命令補全;
    [Tab] 接在一串指令的第二個字以後時,則爲『檔案補齊』!

    如果我想要知道我的環境中,所有可以執行的指令有幾個? 就直接在 bash 的提示字符後面輸入兩個 [tab][tab] 就能夠輸出所有的可執行指令了。 


3) 命令別名(alias)設定功能:

    alias lm='ls -al'


4) 工作控制(jobs)、前景背景控制:

    資源管理章節中會再提及


5) Shell scripts 的強大功能:

在 DOS 年代還記得將一堆指令寫在一起的所謂的『批次檔』吧?在 Linux 底下的 shell scripts 則發揮的更爲強大的功能,可以將您日常生活當中常需要下達的連續指令寫成一個檔案, 該檔案並且可以透過對談交互式的方式來進行主機的偵測工作!整個設計下來幾乎就是一個小型的程序語言了!以前在 DOS 底下需要程序語言才能寫的東西,在 Linux 底下使用簡單的 shell scripts 就可以幫你達成了


6) 萬用字符!

舉例來說,想要知道 /usr/X11R6/bin 底下有多少以 xt 爲開頭的檔案嗎?ls -l /usr/X11R6/bin/xt* 就能夠知道囉~此外,還有其它可供利用的萬用字符, 這些都能夠加快使用者的操作.



chap2  內建命令: type

爲了方便 shell 的操作,其實 bash 已經『內建』了很多指令了,例如 cd , 還有例如 umask 等等的指令, 那我怎麼知道這個指令是來自於外部指令(指的是其它非 bash 套件所提供的指令) 或是內建在 bash 當中的呢:


[root@linux ~]# type [-tpa] name

參數:
:不加任何參數時,則 type 會顯示出那個 name 是外部指令還是 bash 內建的指令!

-t :當加入 -t 參數時,type 會將 name 以底下這些字眼顯示出他的意義:
file :表示爲外部指令;
alias :表示該指令爲命令別名所設定的名稱;
builtin :表示該指令爲 bash 內建的指令功能;

-p :如果後面接的 name 爲指令時,會顯示完整文件名(外部指令)或顯示爲內建指令;
-a :會將由 PATH 變量定義的路徑中,將所有含有 name 的指令都列出來,包含 alias


範例一:查詢一下 ls 這個指令是否爲 bash 內建?
[root@linux ~]# type ls
ls is aliased to `ls --color=tty'
# 沒有加上任何參數,僅列出 ls 這個指令的最主要使用情況
[root@linux ~]# type -t ls
alias
# -t 參數則僅列出 ls 這個指令的最主要使用情況說明
[root@linux ~]# type -a ls
ls is aliased to `ls --color=tty'
ls is /bin/ls
# 利用所有方法找出來的 ls 相關信息都會被列出來!


範例二:那麼 cd 呢?
[root@linux ~]# type cd
cd is a shell builtin
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章