天天看點

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

shell是作業系統中重要的應用,尤其對linux這種指令行模式的作業系統,shell具有重要的意義。

shell是一個指令解釋器,提供使用者和機器之間的互動。每次我們登入系統後,出現的界面就是shell,相當于我們在界面輸入指令,shell把我們輸入的内容轉換成系統能夠了解的内容傳遞給系統去執行。shell支援特定的文法,有點像c語言,支援邏輯判斷,if while語句。

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

這就是基本的shell。

centos7預設的shell是bash,系統中還支援其他類型的shell,比如zsh、ksh。

centos7系統中目前使用者輸入的指令都儲存在使用者的家目錄下,比如root使用者指令就存在/root/.bash_history檔案中。

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

這個檔案能儲存的指令的數量由HISTSIZE變量決定。這個變量初始值為1000

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

每次退出終端時,你敲過的指令就會儲存在/root/.bash_history檔案中。

HISTSIZE變量值的設定在/etc/profile中,這個檔案中能夠更改很多系統的參數,包括記錄指令的數量,記錄指令的格式等等。

1、修改系統記錄的指令數量

在/etc/profile檔案中操作,用vi或者vim打開,定位到46行(順便複習下vim指令,46j)

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

更改框中數值為你想要的數值,比如說5000

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

儲存退出,用source指令重載下下 系統的profile使改動生效

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

看下結果,搞定!

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

2、修改記錄内容,記錄每條指令執行的時間

分兩種情況,一種是僅對目前終端生效,斷開後失效。

指令:<code>HISTTIMEFORMAT="%Y%m%d %H:%M:%S"</code>

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

永久在/root/.bash_history增加這個内容需要更改/etc/profile檔案,操作如下:

跟前面一個例子一樣,在/etc/profile檔案中操作,用vi或者vim打開,定位到46行(順便複習下vim指令,46j)

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

在HISTSIZE行下加入“HISTTIMEFORMAT="%Y%m%d %H:%M:%S"”内容

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向
Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

斷開連接配接重登下系統,看結果,搞定!

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

3、永久儲存指令的曆史紀錄

隻要給目前使用者的家目錄中的/root/.bash_history檔案加上+a權限即可,即使你設定了HISTSIZE的大小,他仍然會記錄你輸入的所有指令。

指令:chattr +a ~/.bash_history 

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

4、執行history記錄中最後一條指令

指令:!!(兩個感歎号)

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

5、運作第XX條指令

指令:!X(數字)

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

6、執行曆史紀錄中最近的一條以條關鍵字開頭的那條曆史指令

比如我要執行最近一條init開頭的指令,輸入!init 他就會執行history記錄中最近的那條。可以看到是init 0.

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向
Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

1、tab補全指令

我們敲指令時可以按Tab鍵

比如說我們按ls這時按兩下Tab鍵他就會把所有ls開頭的指令全部列出來

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

2、tab補全指令參數

需要安裝“bash-completion”包才能支援

yum安裝

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

重新開機電腦(不然不生效)

檢查下安裝情況,生效了

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

3、指令的别名(alias)

别名功能也是系統shell的重要應用

檢視系統已定義的alias

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

4、自定義自己的别名指令

每個使用者都有自己的别名配置檔案,預設在~/.bashrc檔案中,還有一些系統定義的别名,在/etc/peofile.d下。

示例:

1)将重新開機網絡指令做别名

指令:`alias restartnet='systemctl restart network.service'

2)檢視使用者自定義的alias

在檔案~/.bashrc中看

指令:vim ~/.bashrc

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

3)檢視系統定義的一些别名

指令:ls etc/profile.d

我們檢視其中一個,比如colorgrep.sh

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

4)取消自定義的别名

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

(一)通配符

系統中包含了很多通配符,常見的有

:表示通配,可以代表文字

?:表示一個任意的字元,但是不能代表數字

[] :任選方括号裡的任意一個字元

{}:比對大括号裡的任意字元,隻是選項間要加逗号

在一個檔案夾下建立一些檔案示範各個通配符的用法

本身檔案夾中檔案

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

1、ls .txt

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

2、ls ?.txt(注意這裡要用英文的問号,中文輸入法的問号系統不認)

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

3、ls [123a].txt

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

4、ls {1,2,a}.txt

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

(二)輸入輸出重定向

重定向主要應用在編寫shell腳本時,我們可以把shell執行的結果區分輸出到不同的檔案中

,輸出重定向 &lt;,輸入重定向,很少用 &gt;,追加重定向(重定向表示不删除前面的内容) &lt;&lt;,追加輸入重定向() 2&gt;,标準錯誤輸出重定向 2&gt;&gt;,錯誤追加重定向 +2&gt;==&amp;&gt;,全部重定向,即把正确錯誤資訊全部輸出到1個檔案中 &amp;&gt;&gt;全部追加重定向 指令 &gt; 1.txt 2.txt 還可以把正确和錯誤的資訊分别輸出到不同的檔案

示例

1、把指令執行的結果輸入到1.txt中

指令 df -h &gt; 1.txt

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

2、把指令執行的正确結果和錯誤結果分别輸出

指令 tar -cjvf 1tar.bz2 2.txt 3.txt b.txt &gt;1.txt 2&gt;a.txt

Linux系統 shell基礎(一)一、什麼是shell二、曆史變量(HISTSIZE)介紹及其參數三、指令補全與别名四、通配符、輸入輸出重定向

 本文轉自 whytl 51CTO部落格,原文連結:http://blog.51cto.com/11934539/2059372

繼續閱讀