8.1 shell介紹
1. shell是一個指令解釋器,提供使用者和機器之前的交換
2. 每個使用者都可以有自己特定的shell
3. CentOS7預設shell是bash(Bourne Agin Shell); shell還有zsh、ksh等
zsh、ksh這兩種shell指令沒有安裝,
可以用yum list搜尋下這兩個指令的安裝包:
[root@hao-01 ~]# yum list |grep zsh
[root@hao-01 ~]# yum list |grep ksh
4. shell有自己的特定文法,比如邏輯判斷、循環
8.2 指令曆史
1. 檢視指令曆史内所有指令:
[root@hao-01 ~]# history
2. 檢視指令曆史存放的檔案路徑(使用者夾目錄.bash_history):
ls /使用者夾目錄/.bash_history
[root@hao-01 ~]# ls /root/.bash_history
注意:非正常指令退出終端,本次輸入過的指令,不會儲存到這個檔案裡,
再次打開終端,指令曆史裡也找不到(不完整)!!!
3. 檢視指令曆史存放檔案儲存的指令最大數值:
[root@hao-01 ~]# echo $HISTSIZE
4. 修改 指令曆史存放檔案儲存的指令最大數值:
[root@hao-01 ~]# vi /etc/profile
修改存儲最大數值:HISTSIZE=最大數值(數字)
5. 即刻生效 /etc/profile的修改:
[root@hao-01 ~]# source /etc/profile
6. 環境變量,指令曆史指令标記 年月日,時分秒(隻限目前終端生效!) :
[root@hao-01 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
7. 修改 指令曆史指令标記的日期時間(永久生效的!) :
添加:指令曆史指令标記日期時間的環境變量: HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
8. 即刻生效 /etc/profile的修改:
9. 檢視指令曆史内所有指令:
10. 給.bash_history存放曆史指令檔案添加特殊a權限(避免被修改删除):
chattr +a /使用者夾目錄/.bash_history
[root@hao-01 ~]# chattr +a /root/.bash_history
11. 執行上一條指令:!!
[root@hao-01 ~]# !!
12. 執行指令曆史編号對應的指令:
!指令曆史指令編号
[root@hao-01 ~]# !978
13. 執行以ls開頭,最近執行過得指令:
[root@hao-01 ~]# !ls
8.3 指令補全和别名
1. 敲一下 Tab鍵,參數可補全,需要安裝bash-completion包:
[root@hao-01 ~]# yum install -y bash-completion
2. 重新開機系統(生效):
[root@hao-01 ~]# reboot
3. 敲一下 Tab鍵: 自動補全指令、路徑 、centos7還可以補全參數
4. 敲兩下 Tab鍵: 列出以輸入的指令為開頭的多個指令
5. 設定 自定義别名指令 :
alias 自定義的别名指令='原指令'
[root@hao-01 ~]# alias haols='ls'
6. 列出所有别名指令(alias) :
[root@hao-01 ~]# alias
7. 檢視 自定義的alias(别名指令)存放檔案:
ls /使用者夾目錄/.bashrc
[root@hao-01 ~]# ls /root/.bashrc
8. 檢視 别名指令存放腳步所在目錄:
[root@hao-01 ~]# ls /etc/profile.d/
9. 取消(删除) 自定義别名指令:
unalias 自定義的别名指令
[root@hao-01 ~]# unalias haols
8.4 通配符
1. 目前目錄列出,包含.txt的檔案(*表示多個任意的字元) :
[root@hao-01 ~]# ls *.txt
[root@hao-01 ~]# ls *txt
2. 目前目錄列出,(比對)所有1開頭的檔案或目錄 :
[root@hao-01 ~]# ls 1*
3. 目前目錄列出, 包含.txt檔案(?表示一個任意的字元) :
[root@hao-01 ~]# ls ?.txt
4. 目前目錄列出,[]内範圍數字包含.txt的檔案(數字最大範圍0-9) :
[root@hao-01 ~]# ls [0-9].txt
比對出指定數字包含.txt的檔案:
[root@hao-01 ~]# ls [09].txt
5. 目前目錄列出,[]内範圍字母包含.txt的檔案(字母範圍 a-z或A-Z) :
[root@hao-01 ~]# ls [a-z].txt
比對出指定字母包含.txt的檔案:
[root@hao-01 ~]# ls [az].txt
6. 目前目錄列出,[]内範圍數字和字母包含.txt的文 :
[root@hao-01 ~]# ls [0-9a-z].txt
7. 目前目錄列出,[]内數字開頭帶有.txt的檔案 :
(方括号隻支援單數,數字最大到9)注意:方括号每個字元之間可不加逗号分割!!!)
[root@hao-01 ~]# ls [1,2,3,4,11,22,33,44].txt
8. 目前目錄列出,{}内數字開頭帶有.txt的檔案(花括号支援多位字元) :
注意:花括号每個字元之間必須加逗号分割!
[root@hao-01 ~]# ls {1,2,3,4,11,22,33,44}.txt
8.5 輸入輸出重定向
輸出:指令結果,輸出到右邊檔案
1. 輸出重定向:注意:>(一個大于号)後面檔案原有内容會被删除)
前面指令的輸出結果,輸出到後面檔案(原有内容被删): 前面指令 > 後面檔案
[root@hao-01 ~]# cat 1.txt > 2.txt
2. 輸出追加重定向:注意:>>(兩個大于号)後面檔案原有内容不會被删除)
前面指令的輸出結果,追加到 >後面檔案(原有内容不會删): 前面指令 >> 後面檔案
[root@hao-01 ~]# cat 1.txt >> 2.txt
3. 輸出錯誤指令輸出重定向:
錯誤指令的輸出結果,輸出到後面檔案(原有内容被删):前面錯誤指令 2> 後面檔案
[root@hao-01 ~]# cataa 1.txt 2> 2.txt
[root@hao-01 ~]# cat 2.txt
4. 輸出錯誤指令追加重定向:
錯誤指令的輸出結果,追加到後面檔案(原有内容不會删):前面錯誤的指令 2>> 後面檔案
[root@hao-01 ~]# cataa 1.txt 2>> 2.txt
輸入:檔案内容,輸入到左邊指令
1. 把1.txt内容,輸入到wc -l指令執行:
指令 < 檔案
[root@hao-01 ~]# wc -l < 2.txt
本文轉自 主内安詳 51CTO部落格,原文連結:http://blog.51cto.com/zhuneianxiang/2059488,如需轉載請自行聯系原作者