shell是什麼?linux
1)shell是一個命令解釋器,用於用戶和計算機linux系統之間的交互shell
2)shell是一種編程語言,由若干bash命令組成,並支持特定語法,好比邏輯判斷、循環等結構,函數等編程
3)每一個用戶均可以有本身的shell,如zsh,ksh等,centos7默認shell是bash centos
2. 命令歷史緩存
命令歷史命令:historybash
命令歷史文件:~/.bash_history,歷史命令保存在該文件中編程語言
永久保存歷史命令:chattr +a ~/.bash_historyide
1)顯示執行過的歷史命令函數
# history 或centos7
# cat ~/.bash_history
2)命令歷史的環境變量
HISTSIZE 默認值1000,內存中命令緩存的數量;通常在/etc/profile環境變量配置文件中配置才能永久生效
HISTFILE 指定記錄歷史命令的文件
HISTTIMEFORMAT 定義歷史命令的格式
3)執行命令歷史中的命令
# !n(中間沒空格) 執行命令歷史中的第n條命令
# !-n 執行倒數第n條命令
# !! 執行上一條命令
# !str 執行以str開頭的命令
3. 命令補全和命令別名
1)命令補全:tab鍵敲一下 ,敲兩下顯示全部相關的命令
參數補全:必須安裝bash-completion包
2)命令別名:alias命令,給命令從新起一個簡潔容易記的名字
unalias命令,取消命令別名
3)命令別名存放的配置文件
alias命令是臨時生效的,要是alias命令永久生效,必須存放到對應的環境變量配置文件中
某個用戶的命令別名配置文件:~/.bashrc
全部用戶的命令別名配置文件:/etc/profile.d目錄下的文件
4. 通配符
* 任意長度的任意字符
? 任意單個字符
[ ] 指定範圍內的任意單個字符
如:[abc] 表示abc中的任意一個字符
[0-9] 表示0到9中的任意一個字符
{ } 指定範圍內的任意單個字符
如:{1,2,3} 表示1 2 3中的任意一個字符
注意:[a-z] 表示全部英文字符,不區分大小寫
5. 輸入輸出重定向
> 輸出重定向
>> 追加輸出重定向
2> 錯誤輸出重定向
2>> 錯誤追加輸出重定向
< 標準輸入重定向
舉例:正確和錯誤都輸出到a.txt 即&>>a.txt
正確輸出到1.txt 錯誤輸出到a.txt 即 >1.txt 2>a.txt
6. 管道符和做業控制
管道符| : 把前面命令的輸出結果做爲後面命令的標準輸入
做業控制:
ctrl+z 把當前做業放在後臺,並暫停
jobs 列出當先後臺的做業及做業狀態
fg 把後臺做業調到前臺,並運行
bg 把後臺的做業調到後臺,並運行
& 把當前做業放在後臺,並運行
7. shell變量和環境變量
環境變量:系統的,如PATH,HOME,PWD,LOGNAME等
shell變量:用戶自定義的 如:a=1
1)env 查看環境變量
set 查看環境變量和shell變量
2)變量名規則:
字母、數字和下劃線,首位不能爲數字
3)變量值
當變量值有特殊符號時,必須用單引號括起來
4)定義shell局部變量,只在當前shell中生效
a=1
5)定義shell全局變量,在當前shell和子shell中都生效
export a=1
6)取消定義的shell變量
unset a
8. 環境變量配置文件
/etc/profile 全部用戶,用戶登錄時執行
/etc/bashrc 全部用戶, 用戶不用登錄,執行shell時就生效
~/.bash_profile 當前用戶的環境變量配置文件
~/.bashrc 當前用戶的環境變量配置文件,~/.bash_profile會調用該配置文件
~/.bash_history 命令歷史的配置文件
~/.bash_logout 當前用戶退出時生效
環境變量PS1
\u 表示當前用戶
\h 表示主機名
\W 表示當前目錄的最後一層目錄
\w 表示當前目錄的全路徑
$ 命令提示符
/etc/bashrc