26期20180628 shell 命令操作 通配符 輸出輸入重定向
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 命令操作 通配符 輸出輸入重定向