Bash shell(一)-Bash shell功能簡介

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.