天天看點

Linux的使用者接口

Linux的使用者接口

作業系統為使用者提供了兩種接口:

第1種是指令接口,使用者利用這些指令來組織和控制作業的執行,或者對計算機系統進行管理。

第2種是程式接口,程式設計人員使用他們來請求作業系統服務。

指令接口為:CLI(指令行界面)和GUI(圖形使用者界面),TUI(文本使用者界面)。

什麼是Shell?

想要聽音樂需要什麼?

首先需要聲霸卡

作業系統的核心可以支援這個聲霸卡(有相應的聲霸卡驅動程式)

使用者發出播放音樂的指令

必須發出指令,硬體才會工作。如果可以直接同硬體溝通,那麼不需要核心。否則,使用者的指令必須先發送給核心,然後核心再去控制硬體。shell正是使用者與核心溝通的平台:

使用者可以通過shell給核心發送指令

核心也可以把指令執行的過程或者結果資訊發送到shell給使用者看。

Shell為使用者提供了輸入指令和參數,并且可得到指令執行結果的環境。

Shell作為作業系統的外殼,為使用者提供使用作業系統的接口,是指令語言、指令解釋程式及程式設計語言的統稱。

BASH Shell

早年的Unix年代,Unix發展者衆多,是以shell有很多不同版本,例如常聽到的 Bourne Shell (sh) 、在Sun中預設的C Shell、 商業上常用的K SHell以及TCSH 等,每一種Shell都各有其特點。

Linux 使用的是Bourne Again Shell(簡稱 bash),這個 Shell是Bourne Shell的增強版本,也是基于GNU的架構下發展出來的。

BASH Shell的特點:

指令記憶能力

Linux可以記憶以前輸入過的指令,隻要使用上下鍵就可以找到以前執行的指令來執行。

這些指令按照先後順序記錄在使用者Home目錄下的隐藏檔案.bash_history中

.bash_history裡面記錄了上一次登入以前執行過的指令,本次登入執行的指令都儲存在記憶體中,隻有成功登出之後,記憶體資料才會重新整理到.bash_history檔案中

bash執行指令時,不會立刻将指令寫入曆史指令檔案,而是先存放在記憶體的緩沖區中,該緩沖區被稱為曆史指令清單,等bash退出再将曆史指令清單寫入曆史指令檔案,

可以使用 bash 的内部指令 history ,來顯示和編輯曆史指令。

文法1:history [n] 

功能:當 history 指令沒有參數,将顯示整個曆史指令清單的内容。如果使用 n 參數,将顯示最後 n 個曆史指令。

文法2:history [-a|n|r|w] [filename]

history 指令各選項及其功能說明見表。

選項 功能

-a 把目前的曆史指令記錄追加到曆史指令檔案中

-c 清空曆史指令清單

-n 将曆史指令檔案中的内容加入到目前曆史指令清單中

-r 将曆史指令檔案中的内容更新(替換)目前曆史指令清單

-w 把目前曆史指令清單的内容寫入曆史指令檔案,并且覆寫曆史指令檔案的原來内容

filename  如果 filename 選項沒有被指定,history 指令将使用環境變量HISTFILE指定的檔案名

指令别名與曆史:

執行曆史指令的方法

方法1:!number

執行曆史指令中編号為number的那個指令

方法2:!command

執行曆史指令中最近一次以command開頭的指令

方法3:!!

執行上一條指令

指令補全補全功能

如果在執行指令的時候不想按下太多的按鍵(例如指令pcprofiledump),在輸入了 pcprofile 之後,再按下 [Tab] 鍵的話,那麼 bash 馬上會自動的将後面的dump接上來。

如果有重複的指令,那麼按下兩次 [Tab] 将會把所有重複的指令列出來。

直接在提示字元後面連按兩次 <tab> 鍵,則系統會将所有可以使用的指令都列出來。

例如,如果想要知道目前系統裡面,所有以b開頭的指令呢?就是按下 b 之後,連按兩次<tab>就ok。

檔案名稱補全功能

如果用 vi 來讀取某個檔案,例如 /etc/man.config 這個檔案,那麼可以輸入 vi /etc/man之後,直接按下 <tab> 鍵,該檔案名稱就會被自動的補上。

同樣,出現檔案多個比對項時,可以按下兩個TAB鍵來顯示所有比對項。

這樣大大增加了指令輸入的正确率。

指令别名設定功能

假如我需要知道某個目錄底下的所有檔案資訊(包含隐藏檔案)及所有的檔案屬性,那麼我就必須要輸入ls -al 這樣的指令。

每次都輸入多麻煩!

可以通過為自己經常使用的指令(包括參數)定義别名來避免過多輸入。

例如:alias lm='ls -al' (注意=兩邊不要有空格)

那麼以後lm就等于執行ls -al

直接輸入alias,可以顯示目前以及定義好的所有别名

文法:alias [别名]=[指令名稱]

功能:設定指令的别名,如果不加任何參數,僅輸入alias指令,将列出目前所有的别名設定。alias指令僅對該次登入系統有效,如果希望每次登入系統都能夠使用該指令别名,可以編輯~/.bashrc檔案(root使用者是/root/.bashrc,普通使用者是/home/*/.bashrc),按照如下格式添加一行指令:

alias 别名="要替換的終端指令"

儲存.bashrc檔案,登出,再次登入系統,就可以使用指令别名了。

執行個體: 設定指令别名

執行不加任何參數的alias指令,将列出目前所有的别名設定,如下所示。

[root@localhost ~]# alias

alias cp='cp -i'

alias l.='ls -d .* --color=tty'

alias ll='ls -l --color=tty'

alias ls='ls --color=tty'

alias mv='mv -i'

alias rm='rm -i'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

#alias showhome=‘ls -l /home’,為“ls -l /home”指令設定别名showhome,

使用showhome指令,再執行unalias showhome指令,取消别名設定,此時showhome已經不是指令了。

繼續閱讀