一、 背景
人與計算機交互界面分爲圖形界面(GUI,graphic user interface)和命令行(CLI,command line interface),本文介紹的shell 屬於命令行形式,它其實是一種基於操作系統的應用,用於人機交互。命令行界面的優點在於穩定,簡潔高效,缺點是學習成本較高。
二、Shell介紹
shell是Linux系統用戶界面,它提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並送入內核去執行。shell也被稱爲Linux的命令解釋器。
Bash (Bourne Again SHell)是GNU組織發行的工具軟件,是Linux標準shell
三、Bash
在Bash下輸入命令後敲回車,shell程序自動尋找鍵入命令所對應的可執行程序或代碼,並由其分析後提交給內核分配資源將其運行起來
shell可執行命令分爲兩類,
內部命令:shell程序自帶的命令,在系統啓動時被加載到內存當中
外部命令:Linux系統實用程序,執行時,shell根據$PATH定義的程序存放路徑尋址執行,並記錄到內存中
命令格式
#COMMAND [OPTIONS]...[ARGUMENTS]...
OPTIONS :用於啓用或關閉命令某些功能
ARGUMENTS :命令作用的對象
比如,
rm -f /etc/issue
命令補全,路徑補全
bash根據PATH變量環境變量定義的路徑,自左向右在每個路徑下搜尋以給定命令名的文件。使用TAB鍵,用戶給定的字符串只有唯一一條命令時補全,不唯一時,再次按TAB給出列表。
路徑補全,把用戶給出的字符串當做路徑開頭,並在上級目錄下搜尋以指定字符串開頭的文件名,補全機制如上。
命令的執行結果狀態
變量${#?}記錄上一次命令執行結果狀態:
0: 成功
1-255:失敗
當前命令行shell類型查看
echo $SHELL /bin/bash
命令提示符prompt
[root@localhost~]# [user@localhost~]$
#表示管理員
$表示普通用戶
查看命令提示符格式
echo $PS1 [\u@\h \W]\$
查看命令類型type
type cd cd is a shell builtin #表示內部命令 type cat cat is /bin/cat #表示外部命令
查看已緩存命令hash
hash hits command 3 /bin/cat 2 /usr/bin/man
四、bash的命令歷史
使用history命令可查看內存中記錄的執行的命令歷史,當shell退出時會寫入~./bash_history,登陸時讀取該文件內容至內存中。
調用歷史命令的常用方法
上下方向鍵
!num :調用history命令看到的對應序號的命令
!string:調用最近一次以string開頭的命令
!?string:調用最近一次包含string的命令
鍵入ctrl+r:搜索歷史命令
調用歷史參數的常用方法
按下ESC鬆開,然後鍵入 . :調用上條命令最後一個參數
!$:調用上條命令最後一個參數
!^:調用上條命令第一個參數
!n:調用上條命令第n個參數
!*:調用上條命令全部參數
history命令環境變量
HISTSIZE:命令歷史保存的命令最大數
HISTFILE:指定命令文件路徑
HISTFILESIZE:歷史文件保存的命令最大數
HISTTIMEFORMAT:“+%F +%T ”可顯示時間格式
HISTCONTROL變量參數解釋如下
ignoredups:不保留重複命令,連續且相同方爲重複
ignorespace:不保留以空白開頭的命令
ignoreboth:以上兩項同時生效
erasedups:刪除重複命令
export 變量=“ ” :針對當前shell生效
變量存入/etc/profile 或 ~/bash_profile 可永久生效
五、bash快捷鍵
Ctrl+l:清屏
Ctrl+a:光標移至開頭
Ctrl+e:光標移至尾部
Ctrl+u:刪除至開頭
Ctrl+k:刪除至尾部
Ctrl+c:中斷當前命令
Ctrl+z:殺死當前命令