Linux上可運行的Shell有很多種,例如sh、csh、ksh、bash、tcsh、zsh等,不同的Shell可能在軟件下載和部分命令上有所不同。目前大多數Linux上默認的Shell是bash。
在bash中,用#和$區分root用戶和普通用戶:
[root@promote ~]# //root用戶
[hadoop@promote ~]$ //普通用戶
1.bash命令行快捷鍵
有時候可能一條命令會很長,刪除和修改都會很麻煩,bash提供了一系列的快捷鍵來進行快速操作:
Ctrl+A :跳到行首
Ctrl+E :跳到行尾
Ctrl+U :刪除當前光標所在位置至行首的內容
Ctrl+K :刪除當前光標所在位置至行尾的內容
Ctrl+L :清屏
Ctrl+C :停止執行
2.命令補全
在bash中,可以使用Tab鍵進行命令補全,連續按兩次Tab鍵可以查看那些命令可以進行補全。
3.命令歷史
bash中執行過的命令會緩存到內存中,正常退出時會保存到相應的配置文件。
使用history命令查看曾執行過的命令。有幾個與命令歷史相關的環境變量:
HISTFILE :配置文件路徑
HISTSIZE :最大緩存數
HISTFILESIZE :配置文件中可保存的命令數
HISTCONTROL :命令歷史記錄設置
ignorespace :以空白字符開頭的命令不會記錄
ignoredups :忽略重複的命令
ignoreboth :以上兩者都生效
history的一些選項:
-c:清空緩存中的命令歷史
-w: 保存緩存中的命令歷史至配置文件
-a: 追加緩存中的命令歷史至配置文件
-d N:刪除第N條命令
-d N M:從地N條開始刪除M條命令
一些配合命令歷史執行的命令:
!N :執行命令歷史中的第N條
!! :執行上一條命令
!-N :執行倒數第N條命令
!STR :執行最近一條以STR開頭的命令
4.bash文件通配符
文件通配符是一些特殊的字符,可以進行文件名匹配,其不表示字面意義,每個通配符都具有特殊意義:
* :匹配任意長度的任意字符字符
? :匹配任意單個字符
[] :匹配指定範圍內的任意單個字符,如:
a[xyz]b會匹配axb ayb azb
[[:alpha:]] = [a-zA-Z]
[[:digit:]] = [0-9]
[[:lower:]] = [a-z]
[[:upper:]] = [A-Z]
[[:space:]] = 空白字符
[[:alnum:]] = [a-zA-Z0-9]
[[:punct:]] = 可打印字符
[^] :取反,例如
[^a-z] : 不匹配小寫字母一次
5.bash變量
在bash中,變量可以分爲本地變量、環境變量、特殊變量和位置變量。
5.1本地變量
本地變量的作用範圍僅限與本bash,對其他bash和子bash無效。
可以使用echo命令查看變量值:
echo $HISTSIZE
echo的幾個常用選項:
-n:不換行顯示
-e:使用轉義字符
對於變量的類型,bash中默認全部是字符型,當需要使用不同類型的變量時,可以使用declare命令declare [options] VAR
options:
-i:聲明變量爲整型
-r:聲明爲只讀變量 等價於 readonly VAR[=VALUE]
-n:聲明爲數組
當然,對於一般的變量而言,可以不使用declare,直接進行賦值使用就行,即“拿來就用”。
對於釋放變量,使用unset命令即可。
變量的引用:${VAR},花括號一般可以省略,但有些場合下不能省。
5.2環境變量
環境變量的作用範圍是當前bash和其子bash。
將本地變量聲明爲環境變量或直接聲明環境變量:
export VAR[=VALUE]
或
declare -x VAR[=VALUE]
查看當前bash的環境變量:printenv和export命令。部分系統環境變量解釋:
HOSTNAME :當前主機名
SHELL :當前用戶shell路徑
HISTFILE :配置文件路徑
HISTSIZE :最大緩存數
HISTFILESIZE :配置文件中可保存的命令數
HISTCONTROL :命令歷史記錄設置
OLPWD :上一次路徑
PWD :當前路徑
USER :當前用戶
MAIL :當前用戶郵件緩衝隊列
PATH :path中包含的文件路徑
PS1 :命令提示符顯示的東西
PS2 :續航符符號
5.3特殊變量和位置變量
特殊變量和位置變量大部分都與shell編程有關。
特殊變量:
$? :保存着上一條命令的執行情況,0爲成功,非零爲失敗
$# :保存shell編程中用戶輸入的參數個數
$*和$@ :參數列表
位置變量:
$1 $2 $3... 分別保存用戶輸入的第N條參數,$0保存的是當前命令的絕對路徑
5.4bash中引號的使用
單引號(''):表示強引用,即其中的所有內容都會被認爲是原字符串,不會進行變量替換。
雙引號(""):弱引用,會進行變量替換。
反引號(``):返回命令的執行結果,實現命令替換。例如:
makedir "file-`data +%T`"
data是獲取當前時間的命令。
6.bash中的配置文件簡介
讀取順序:
交互式:/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bahsrc --> /etc/bashrc
非交互式:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*
profile類:與環境變量的設定和運行腳本有關
bashrc類:與本地變量設定和設定命令別名有關