1. 程式人生 > >二十三、shell介紹、命令歷史、命令補全和別名、通配符、輸入輸出重定向

二十三、shell介紹、命令歷史、命令補全和別名、通配符、輸入輸出重定向

shell簡介 命令歷史介紹 通配符 輸入輸出重定向

二十三、shell介紹、命令歷史、命令補全和別名、通配符、輸入輸出重定向

一、shell介紹

shell是系統跟計算機硬件交互使用的中間介質,它只是系統的一個工具。shell和計算機硬件之間還有一層東西——系統內核。若把計算機硬件比作人的軀體,那系統內核就是大腦,shell就是五官。用戶直接面對的不是計算機硬件而是shell,用戶把指令告訴shell,然後shell再傳輸給系統內核,接著內核再去支配計算機硬件去執行各種操作。

shell是一個命令解釋器,提供用戶和機器之間的交互。

每個用戶都可以有自己特定的shell。

centos7默認的shell為bash(Bourne Agin Shell)

系統裏還有zsh、ksh的shell,有細節差異。

shell還有自己特定的語法,比如邏輯判斷、循環。

二、命令歷史

history命令 查看命令歷史

/root/.bash_history 所在路徑

可以使用該命令查看存了多少條,該文件最大存一千條。

該命令由一個環境變量給它配置:HISTSIZE。可以echo $HISTSIZE查看到為1000,代表最大存1000條命令,這是系統內置的環境變量。出來的第1000條以後的命令,沒有存入命令歷史,暫時存在了內存中。

# history -c 把內存裏命令歷史清空,不能把配置文件給清空

只有退出當前終端的時候,命令才會存到配置文件裏面去,在終端裏的時候就是存在了內存的命令歷史裏。

定義環境變量HISTSIZE的配置文件:/etc/profile

進入後可以直接查找HISTSIZE即可,將數據可以更改為自己想定義的量。

更改保存後,必須執行# source /etc/profile命令,否則該變量不會生效,或者重新進終端也行。

# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 使命令歷史有時間顯示。只在當前終端生效。Y:年份;m:月份;d:日期;H:小時;M:分鐘;S:秒鐘。

若想永久生效,將它寫入到配置文件/etc/profile中,放到HISTSIZE=1000下面一行。寫到配置文件後,保存退出,再重新進終端就可以驗證命令歷史是不是有時間顯示。

# chattr +a ~/.bash_history

永久保存,使命令歷史的配置文件直接追加不能刪除。若不正常退出,那命令就不會正常的保存到命令歷史裏面。

# !!命令歷史裏的最後一條命令

# !n n後跟數字,可以再執行一遍命令歷史裏的第n條命令。

# !echo 從後往前在命令歷史裏找以echo開頭的命令再執行一次,如!tree,等。

三、命令補全和別名

命令補全 tab鍵,敲一下補全,敲兩下搜索出以該命令開頭的2個以上的選項。可以補全命令和文件路徑。

命令參數補全:centos7支持,需要# yum install -y bash-completion。安裝這個包。centos6僅僅支持命令本身的補全,安裝完後還需要重啟系統才行。

命令參數如systemctl restart network.service。

# alias restartnet="systemctl restart network.service"

將這條長命令做一個別名。再使用時敲別名即可。

unalias解除別名。

別名位置:用戶家目錄下的.bashrc下和/etc/profile.d/下。自定義的別名在.bashrc下。

四、通配符

* 表示通配,不分字符,不分幾個

? 表示匹配一個字符,如ls ?.txt,會將.txt的文件全部列出來。

[ ] 示例:ls [0-3].txt或ls [123456].txt。寫一個範圍。

{ } 和[ ]類似,但是這個{ }裏要加逗號,如{1,2,3,4}

五、輸入輸出重定向

> 輸出重定向

> 把前面命令的輸出輸入到後面的文件裏面去。一個大於號會把後面的文件刪除掉將前面的輸出覆蓋後面的文件。所以一般用兩個>>,追加的意思,不會把原來的文件刪除。

2>,把命令產生的錯誤信息指定的輸入到一個文件去。2>>,錯誤信息追加重定向。

>+2>=&>,將正確和錯誤的信息輸出到後面的文件裏去。用&>表示即可。

< 輸入重定向,>的反向用法。左邊必須是命令,不能是文件反向輸入到文件。


二十三、shell介紹、命令歷史、命令補全和別名、通配符、輸入輸出重定向