1. 程式人生 > >5周第3次課 shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出重定向

5周第3次課 shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出重定向

linux中shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出重定向

1.shell介紹

shell 是一個命令解釋器,提供用戶和機器之間的交互。它支持特定語法,邏輯判斷、循環。比如,我們登陸的終端,它其實就是一個 shell,供我們和機器交互。

Linux 下面有很多 shell,每個用戶都可以有自己特定的 shell。
CentOS7默認shell是bash(Bourne Agin Shell),還有 zsh ksh 等 shell。


2.命令歷史

history 記錄命令歷史

2.1 具體存放位置:

/root/.bash_history 默認1000條

2.2 查看當前 history 支持存儲的數量:

echo $HISTSIZE

2.3 history記錄的數量

vim /etc/profile

修改HISTSIZE後面的數字即可
source /etc/profile 更新系統變量或者重進終端

2.4 清空內存中的命令歷史

內存中的歷史命令只在退出終端時保存到.bash_history 中去
history -c

2.5 設置命令歷史中加入運行時間

[root@centos701 ~]#HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"    ##設置 history 的格式變量[root@centos701 ~]#echo $HISTTIMEFORMAT          ##查看變量是否生效%Y/%m/%d %H:%M:%S
[root@centos701 ~]history      ##再次運行命令,發現多了時間信息,設置成功
 1001  2017/11/15 20:14:38HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
 1002  2017/11/15 20:14:57echo $HISTTIMEFORMAT

永久生效:將HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"這條加入/etc/profile文件,最好和HISTSIZE放在一起,然後退出終端重進即可。

2.6 設置 history 記錄防刪除

通過設置隱藏權限(a權限),能讓命令歷史不被其他人刪除,以便於以後排錯和查找事件

[root@centos701 ~]# chattr +a ~/.bash_history

這樣設置後,所有用戶的命令歷史都會記錄,其他用戶只能追加,不能刪除。
非正常退出終端,命令歷史記錄會不全

2.7 關於命令歷史的技巧

命令作用
!!執行命令歷史中最後一條命令(即上一次的命令)
!n執行命令歷史中指定條目的命令
!word 如:!echo執行命令歷史中離當前時間最近的,以 echo 開頭的命令。

3.命令補全和別名

Liunx 系統中可以利用 tab 鍵來進行命令補全,也可以進行路徑的補全。同時,在 CentOS7中可以做到參數的補全,比較實用!

3.1 命令和參數補全

命令補全

次數場景與效果
1不存在相同開頭命令/文件,按1下就可以補齊
2存在開頭相同命令/文件,且大於2個時,需要按2下,才能出現待選例表,

參數補全

從 CentOS7開始,tab 鍵支持命令和參數雙重補全,在補全參數時,用法和補全命令一樣,但前提需要安裝一個軟件bash-completion

[root@centos701 ~]# yum install -y bash-completion
[root@centos701 ~]# init 6  或者 reboot

重啟完成後,就可以體驗參數的補全了!

3.2 別名

Linux中支持將一組命令+參數的組合通過 alias設置成特定字符組合,通過執行組合字符來達到輸入對應正常命令和參數的目的,提高使用人員的效率。

3.2.1 當前用戶已有別名查看

alias

[root@centos701 ~]# alias
alias cp=‘cp -i‘alias egrep=‘egrep --color=auto‘alias fgrep=‘fgrep --color=auto‘alias grep=‘grep --color=auto‘alias l.=‘ls -d .* --color=auto‘alias ll=‘ls -l --color=auto‘alias ls=‘ls --color=auto‘......................
......................
3.2.2 設置alias的幾個常見位置
  1. 每個用戶家目錄的 .bashrc文件

  2. 目錄/etc/porfile.d/中也有很多特定 alias 的定義文件

3.2.3 設置和取消別名 alias

以重啟網絡 systemctl restart network.service這條命令和參數來舉例

設置別名

alias [自定義別名]=`正常執行命令+參數`

[root@centos701 ~]#alias sysrenet=`systemctl restart network.service`
[root@centos701 ~]#sysrenet        ##別名同樣支持補全

取消別名

unalias [自定義別名]

[root@centos701 ~]# unalias sysrenet[root@centos701 ~]# sysrenet-bash: sysrenet: 未找到命令

4. 通配符

符號作用舉例說明
*表示任意多個字符(0-多個)ls test**表示後面不論接幾個字符都接受(沒有字符也匹配)
?表示任意單個字符ls test?;ls test????表示後面當且僅當接1個字符時才匹配;???表示一定要接3個字符
[ ]中間為範圍和組合字符cp test[1~5] /tmptest1, test2, test3, test4, test5若存在,則復制到/tmp目錄下
{ }中間表示一個或多個字符,多個時用“,”隔開ll {*.log,*.txt}查詢以.log和.txt結尾的文件。

5.輸入輸出重定向

說明:預先在當前目錄創建1.txt文件,並在其中輸入兩行隨機字符。
命令在左 文件在右

符號作用特點舉例說明
輸入重定向



<右側內容輸入到左邊
wc -l < 1.txt將右側1.txt的內容輸入到左邊供命令調用,即計算1.txt文本內容的行數
單個輸出重定向



>正確輸出重定向覆蓋原有內容cat 1.txt>2.txt將左側正確的結果以覆蓋的方式輸出到2.txt中
>>正確輸出追加重定向保留原有內容cat 1.txt>>2.txt將左側正確的結果以追加的方式輸出到2.txt 中
2>錯誤輸出重定向覆蓋原有內容lsaaa 2>2.txt將左側錯誤的結果以覆蓋的方式輸出到2.txt 中
2>>錯誤輸出追加重定向保留原有內容lsaaa 2>>2.txt將左側錯誤的結果以追加的方式輸出到2.txt 中
合並輸出重定向



&>=>+2>正確和錯誤輸出重定向覆蓋原有內容ls [12].txt kkk.txt &>c.txt將左側正確和錯誤的結果都輸出到 c.txt 文件
&>>=>>+2>>正確和錯誤輸出追加重定向保留原有內容ls [12].txt kkk.txt &>>c.txt將左側正確和錯誤的結果都追加輸出到 c.txt 文件
拆分輸出重定向



> 2>正確和錯誤輸出重定向覆蓋原有內容ls [12].txt sasasa.txt>ab.txt 2>cd.txt將左側正確的結果重定向輸出到 ab.txt 中,將錯誤的結果重定向輸出到 cd.txt 中
>> 2>>正確和錯誤輸出追加重定向保留原有內容ls [12].txt sasasa.txt>>ab.txt 2>>cd.txt將左側正確的結果以追加的方式輸出到 ab.txt 中,將錯誤的結果以追加的方式輸出到 cd.txt 中


5周第3次課 shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出重定向