1. 程式人生 > >shell介紹 命令歷史 命令補全和別名 輸入輸出重定向

shell介紹 命令歷史 命令補全和別名 輸入輸出重定向

258866

shell介紹

shell是一個命令解釋器,提供用戶與機器之間的交互
例如我們遠程登錄的工具,它其實就是一個shell

centos默認的shell是bash(Bourne Agin Shell)
·

命令歷史

history命令
命令歷史存在用戶家目錄下的.bash_history,如root用戶就是/root/.bash_history
·
history可以查看命令歷史,.bash_history文件了裏最多可以存1000條,它是由環境變量HISTSIZE決定的,不過history有時候也會查看到超過1000條的命令歷史,不過那是沒有寫進文件裏的,還存在於內存中
·
history -c可以把當前內存裏的命令歷史清空,但是並不會刪除.bash_history文件裏存的命令歷史。

技術分享圖片
·
當你退出終端的時候系統會把內存裏的命令歷史存到.bash_history文件裏。
·
當然我們可以更改.bash_history文件的1000條數限制,只需要編輯/etc/profile,把裏面HISTSIZE這一行後的1000改一下,然後source /etc/profile刷新一下,或者重新進一下終端即可生效。
技術分享圖片
技術分享圖片
技術分享圖片
·
我們也可以讓history出來的歷史命令顯示時間,使用如下命令,定義HISTTIMEFORMAT變量為後面的格式,不過它只在當前窗口當前終端裏生效。
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
技術分享圖片
·
如果想要讓它在其他窗口並且一直生效,可以編輯/etc/profile文件,這行命令放到HISTSIZE這一行下面,之後source /etc/profile刷新一下,或者重新進一下終端即可生效。
技術分享圖片
`
如果想要永久保存你的命令歷史,不想別人刪除,可以給它加一個特殊權限a,即使有最大1000條的限制,也是可以保存超過1000條的。
技術分享圖片
·
不過如果你不是正常退出終端,你敲過的命令歷史就會保存的不全。
想要使用命令歷史的最後一條命令,也就是你使用的上一條命令可以用!!
想要使用命令歷史的多少行命令,那就可以使用!加行數
想要使用命令歷史裏最後一個以xx開頭的命令可以使用!加xx
·

命令補全和別名

在打命令的時候按tab鍵可以自動補全,可以補全文件,也可以補全命令,如你打了文件名的一半然後按一下tab鍵系統可以自動幫你補全剩下的一半。
不過有一種情款就是有兩個及以上的文件都是以你打出來的部分文件名開頭的,這時候按一下tab就沒有用了,這時候我們可以按兩下,系統會顯示出所有以你打出來的部分文件名開頭的文件。

技術分享圖片
·
然後你可以找到你要打的文件名,繼續輸入,直到沒有其他以你輸出的部分文件名開頭的文件,再按一下tab就可補全了。
·
在centos7裏tab還可以補全命令的參數,不過需要安裝一個bash-completion包,然後重啟系統才能生效。
技術分享圖片
·
我們先看沒有安裝bash-completion時我們使用systemctl restart network.service命令tab的情況
技術分享圖片
·
tab是沒有反應的
我們安裝bash-completion,然後重啟再試下
技術分享圖片
·
這時tab已經可以tab出來了
·
我們還可以給較長的命令設置別名,使用alias命令,如我們把systemctl restart network.service別名設置成restartnet,之後我們就可以使用restartnet命令代替了。
技術分享圖片
·
直接運行alias可以查看系統中所有的別名。這些別名存在於用戶家目錄下的.bashrc文件(自定義的alias)以及/etc/profile.d/目錄下的文件裏。
技術分享圖片
·
取消別名使用unalias加別名
技術分享圖片
·

通配符

用法
技術分享圖片表示查看當前目錄下名字中以.txt結尾的所有文件或目錄。
·
技術分享圖片表示查看當前目錄下名字中含有txt的文件或目錄。
·
技術分享圖片表示查看當前目錄下名字以1開頭的文件或目錄
·
?用法
查看當前目錄下文件名是一個字符加.txt的文件(?表示一個任意的字符)
技術分享圖片
·
[數字-數字]用法(方括號 [ ] )
查看當前目錄下設定數字範圍內的所有以.txt結尾的文件(同時也支持字母如a-z或A-Z)
技術分享圖片
·
技術分享圖片
·
查看當前目錄下以1、2、3開頭的,然後以.txt結尾的文件(123可以無順序 隨便輸)
技術分享圖片
·
{字符、字符、字符}(花括號 { } )
類似於[123],字符之間是或者的關系,(花括號裏邊,需要用英文逗號隔開)
技術分享圖片
·

輸入輸出重定向

把前面的命令的輸出輸入到後面的文件裏面去,下圖就是把1.txt裏的內容覆蓋到2.txt裏。(會把原本2.txt裏的內容刪掉)

cat 1.txt >2.txt

技術分享圖片
·
>把前面的命令的輸出追加到後面的文件裏面去,下圖就是把1.txt裏的內容追加到2.txt裏(不會把原本2.txt裏的內容刪掉)

cat 1.txt >> 2.txt

技術分享圖片
·
2>把前面的命令產生的錯誤信息輸入到後面的文件裏去。
技術分享圖片
·
2>>把前面的命令產生的錯誤信息追加到後面的文件裏去。
技術分享圖片
·
&>把前面的命令產生的正確信息以及錯誤信息都輸入到後面的文件裏去。(同樣也支持追加,使用&>>)
技術分享圖片
·
把前面的命令產生的正確信息以及錯誤信息分別輸入到後面的兩個文件裏去可以使用
技術分享圖片
·
<把右邊文件的內容輸入到左邊的命令裏去,如下我們查看1.txt內容的行數。(<的左側必須要是命令)
技術分享圖片

shell介紹 命令歷史 命令補全和別名 輸入輸出重定向