1. 程式人生 > >26期20180628 shell 命令操作 通配符 輸出輸入重定向

26期20180628 shell 命令操作 通配符 輸出輸入重定向

重新 a-z 安裝 AC ott fff 當前 sof itl

6月28日任務

8.1 shell介紹

8.2 命令歷史

8.3 命令補全和別名

8.4 通配符

8.5 輸入輸出重定向





shell介紹


技術分享圖片

Shell腳本只是一個表現,所謂的shell是一個命令解釋器,用戶和機器的一個交互


Shell我們主要使用的是bash shell 另外還有zsh ksh等

yum list |grep zsh

yum list |grep ksh

技術分享圖片


history查看歷史命令

-c 是清空內存的命令歷史


其實所有的歷史命令都存在一個文件裏

/root/.bash_histroy這個文件裏

技術分享圖片

默認的存放條數是1000,可以修改,如果只是修改環境變量的話 $HISTSIZE =10000,但是最終還是要到環境變量的文件中去進行修改

這個文件是 /etc/profile

這裏面可以修改存儲的個數,比如$HISTSIZE=10000改成10000條

也可以增加記錄中使用命令的時間 比如$HISTTIMEFORMAT

HISTTIMEFORMAT="%Y/%m/%d %H:%M:$s |" (註意在文件裏寫的時候就不要加$了)

這樣就定義了顯示的時間格式

技術分享圖片

但是修改完之後要麽是退出當前用戶,要麽是需要source 這個文件才可以生效

技術分享圖片

可以使用echo $HISTSIZE $HISTTIMEFORMAT顯示定義的值


技術分享圖片

技術分享圖片


如果不想丟失歷史記錄怎麽辦呢?

有辦法。

現在已經定義了可以存放的歷史命令的個數,如果超了就會覆蓋,那我們直接可以追加模式 echo$?可以看到上一步運行的是否有錯誤

技術分享圖片

history顯示歷史命令之後

有一些命令可以快速使用之前的命令

!! 上一條命令

!數字 運行第X條命令

!word 倒著往上找第一個以word開頭的命令

技術分享圖片

技術分享圖片


命令補全和別名

技術分享圖片


tab鍵 一個的話敲一下補全 兩個以及以上就會顯示出來

centos 支持命令參數補全 默認還是不支持的 需要安裝一個包 bash-completion 後重啟系統

技術分享圖片

技術分享圖片


alias別名 給命令重新起名字

如果有的命令比較長 可以把命令做別名

alias 別名=‘原來的命令’

技術分享圖片


直接alias可以看到系統裏所有的別名,也包括自己的定義的

技術分享圖片

這些別名的定義在什麽地方呢?

用戶家目錄下的.bashrc中

目錄 etc/profile.d下的幾個文件中


如何取消自定義的別名?

unalias 別名




通配符


*

[0-2] =[012]


[0-3a-zA-Z] 中間不用加任何的標點符號


{1,2,3,} =[1-3]區別是有逗號



輸入輸出重定向

> 前面的輸出作為後面的輸入 覆蓋 前面文件內容不會受影響

>> 前面的輸出作為後面的輸入 追加 前面的文件內容不會受到影響


技術分享圖片


2>是將前面命令的錯誤信息保存到後面的文件中 當然了2>>是追加

如果前面的是正確的會把後面的文件內容覆蓋

技術分享圖片


>+2 == &> 覆蓋 >>追加

技術分享圖片


還可以分開把正確的和錯誤的寫入文件 > 2>

技術分享圖片


<叫做輸入重定向 很少用到

是把右邊內容重定向到左邊命令

比如 wc word count -l line 查看行數

把1.txt的內容重定向查看行數

技術分享圖片


但是不能把右邊文本內容輸出到左邊文件中,左邊必須是命令


26期20180628 shell 命令操作 通配符 輸出輸入重定向