Linux系統 shell基礎(一)

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

一、什麼是shell

shell是一個命令解釋器,提供用戶和機器之間的交互。每次我們登錄系統後,出現的界面就是shell,相當於我們在界面輸入命令,shell把我們輸入的內容轉換成系統能夠理解的內容傳遞給系統去執行。shell支持特定的語法,有點像c語言,支持邏輯判斷,if while語句。
Linux系統 shell基礎(一)
這就是基本的shell。
centos7默認的shell是bash,系統中還支持其他類型的shell,比如zsh、ksh。

二、歷史變量(HISTSIZE)介紹及其參數

centos7系統中當前用戶輸入的命令都儲存在用戶的家目錄下,比如root用戶命令就存在/root/.bash_history文件中。
Linux系統 shell基礎(一)
這個文件能儲存的命令的數量由HISTSIZE變量決定。這個變量初始值爲1000
Linux系統 shell基礎(一)
每次退出終端時,你敲過的命令就會保存在/root/.bash_history文件中。
HISTSIZE變量值的設置在/etc/profile中,這個文件中能夠更改很多系統的參數,包括記錄命令的數量,記錄命令的格式等等。

1、修改系統記錄的命令數量
在/etc/profile文件中操作,用vi或者vim打開,定位到46行(順便複習下vim命令,46j)
Linux系統 shell基礎(一)
更改框中數值爲你想要的數值,比如說5000
Linux系統 shell基礎(一)
保存退出,用source命令重載下下 系統的profile使改動生效
Linux系統 shell基礎(一)
看下結果,搞定!
Linux系統 shell基礎(一)

2、修改記錄內容,記錄每條命令執行的時間
分兩種情況,一種是僅對當前終端生效,斷開後失效。
命令:HISTTIMEFORMAT="%Y%m%d %H:%M:%S"
Linux系統 shell基礎(一)

永久在/root/.bash_history增加這個內容需要更改/etc/profile文件,操作如下:
跟前面一個例子一樣,在/etc/profile文件中操作,用vi或者vim打開,定位到46行(順便複習下vim命令,46j)
Linux系統 shell基礎(一)
在HISTSIZE行下加入“HISTTIMEFORMAT="%Y%m%d %H:%M:%S"”內容
Linux系統 shell基礎(一)
保存退出,用source命令重載下下 系統的profile使改動生效
Linux系統 shell基礎(一)
斷開連接重登下系統,看結果,搞定!
Linux系統 shell基礎(一)

3、永久保存命令的歷史紀錄
只要給當前用戶的家目錄中的/root/.bash_history文件加上+a權限即可,即使你設定了HISTSIZE的大小,他仍然會記錄你輸入的所有命令。
命令:chattr +a ~/.bash_history
Linux系統 shell基礎(一)

4、執行history記錄中最後一條命令
命令:!!(兩個感嘆號)
Linux系統 shell基礎(一)

5、運行第XX條命令
命令:!X(數字)
Linux系統 shell基礎(一)

6、執行歷史紀錄中最近的一條以條關鍵字開頭的那條歷史命令
比如我要執行最近一條init開頭的命令,輸入!init 他就會執行history記錄中最近的那條。可以看到是init 0.
Linux系統 shell基礎(一)
Linux系統 shell基礎(一)

三、命令補全與別名

1、tab補全命令
我們敲命令時可以按Tab鍵
比如說我們按ls這時按兩下Tab鍵他就會把所有ls開頭的命令全部列出來
Linux系統 shell基礎(一)

2、tab補全命令參數
需要安裝“bash-completion”包才能支持
yum安裝
Linux系統 shell基礎(一)
重啓電腦(不然不生效)
檢查下安裝情況,生效了
Linux系統 shell基礎(一)

3、命令的別名(alias)
別名功能也是系統shell的重要應用
查看系統已定義的alias
Linux系統 shell基礎(一)

4、自定義自己的別名命令
每個用戶都有自己的別名配置文件,默認在~/.bashrc文件中,還有一些系統定義的別名,在/etc/peofile.d下。
示例:
1)將重啓網絡命令做別名
命令:`alias restartnet='systemctl restart network.service'
2)查看用戶自定義的alias
在文件~/.bashrc中看
命令:vim ~/.bashrc
Linux系統 shell基礎(一)
3)查看系統定義的一些別名
命令:ls etc/profile.d
我們查看其中一個,比如colorgrep.sh
Linux系統 shell基礎(一)
4)取消自定義的別名
Linux系統 shell基礎(一)

四、通配符、輸入輸出重定向

(一)通配符
系統中包含了很多通配符,常見的有
:表示通配,可以代表文字
?:表示一個任意的字符,但是不能代表數字
[] :任選方括號裏的任意一個字符
{}:匹配大括號裏的任意字符,只是選項間要加逗號
示例:
在一個文件夾下新建一些文件演示各個通配符的用法
本身文件夾中文件
Linux系統 shell基礎(一)
1、ls
.txt
Linux系統 shell基礎(一)
2、ls ?.txt(注意這裏要用英文的問號,中文輸入法的問號系統不認)
Linux系統 shell基礎(一)
3、ls [123a].txt
Linux系統 shell基礎(一)
4、ls {1,2,a}.txt
Linux系統 shell基礎(一)

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

,輸出重定向
<,輸入重定向,很少用

,追加重定向(重定向表示不刪除前面的內容)
<<,追加輸入重定向()
2>,標準錯誤輸出重定向
2>>,錯誤追加重定向
+2>==&>,全部重定向,即把正確錯誤信息全部輸出到1個文件中
&>>全部追加重定向
命令 > 1.txt 2.txt 還可以把正確和錯誤的信息分別輸出到不同的文件

示例
1、把命令執行的結果輸入到1.txt中
命令 df -h > 1.txt
Linux系統 shell基礎(一)
2、把命令執行的正確結果和錯誤結果分別輸出
命令 tar -cjvf 1tar.bz2 2.txt 3.txt b.txt >1.txt 2>a.txt
Linux系統 shell基礎(一)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章