Linux的Shell編程——Shell內嵌的命令

Linux的Shell編程——Shell內嵌的命令

摘要:本文主要學習了Shell的經常使用內建命令。shell

alias命令

alias命令能夠爲指定命令定義一個別名。編程

基本語法

查看全部別名:vim

1 [root@localhost ~]# alias

設置別名:bash

1 [root@localhost ~]# alias 別名=原命令(有空格須要使用引號包裹)

刪除別名:編輯器

1 [root@localhost ~]# unalias 別名

執行和別名相同的命令

使用命令的絕對路徑:學習

1 [root@localhost ~]# /usr/bin/vim test

切換到命令所在的目錄,在命令前添加「./」:spa

1 [root@localhost ~]# ./vim ~/test

在命令前面添加「\」:操作系統

1 [root@localhost ~]# \vim test

讓別名永久有效

咱們經過alias命令設置的別名,僅限於在當前的Shell中使用,若是系統重啓了,那麼新設置的別名就失效了。命令行

若是想讓別名永久有效的話,就須要把全部的別名設置方案加入到家錄下的.alias文件中(若是系統中沒有這個文件,你能夠建立一個),而後在.bashrc文件中增長這樣一段代碼:code

1 # Aliases
2 if [ -f ~/.alias ]; then
3   . ~/.alias
4 fi

這樣設置後,不管怎樣重啓系統,都不會影響設置的別名啦。

echo命令

echo命令能夠將指定字符串打印到屏幕。

基本語法

1 [root@localhost ~]# echo [選項] 輸出的內容

選項說明

1 -n:表示輸出以後不換行。
2 -e:表示對於轉義字符按對應的方式進行處理。

使用舉例

1 [root@localhost ~]# echo 'Hello Word'
2 Hello Word
3 [root@localhost ~]# 

source命令

source命令用來讀取並執行指定文件中的命令(在當前shell環境中)。

source命令也稱爲「點命令」,也就是一個點符號「.」,是bash的內部命令。

source命令一般用於從新執行剛修改的初始化文件,使之當即生效,而沒必要註銷並從新登陸。

基本語法

1 [root@localhost ~]#source filename
2 [root@localhost ~]#. filename

使用source filename與sh filename及./filename執行腳本的區別

當shell腳本具備可執行權限時,用 sh filename 與 ./filename 執行腳本是沒有區別的。 ./filename 是由於當前目錄沒有在PATH中,因此「.」是用來表示當前目錄的。

執行 sh filename 會從新創建一個子shell,在子shell中執行腳本里面的語句,該子shell繼承父shell的環境變量,但子shell新建的、改變的變量不會被帶回父shell,除非使用export。

命令 source filename 其實只是簡單地讀取腳本里面的語句依次在當前shell裏面執行,沒有創建新的子shell。那麼腳本里面全部新建、改變變量的語句都會保存在當前shell裏面。

fc命令

使用fc命令能夠從歷史記錄中選擇命令列表。

基本語法

編輯上一條命令並執行:

1 [root@localhost ~]# fc

打開一個編輯器去修改或從新執行之前輸入的命令:

1 fc [-r] [-e Editor] [First] [Last]

生成一個之前輸入的命令的列表:

1 fc -l [-n] [-r] [First] [Last]

生成帶執行時間的之前輸入的命令的列表:

1 fc -t [-n] [-r] [First] [Last]

選項說明

1 -e Editor:使用指定的編輯器編輯命令。Editor參數應是一個命令名稱。該命令用PATH環境變量指定位置。當沒有指定-e標誌時,環境變量FCEDIT中的值被用做缺省值。若是環境變量FCEDIT是空值或沒有設置,則使用ed編輯器。
2 -l:列出了歷史文件中的命令。不調用編輯器去修改它們。按照First和Last參數所指定的順序寫命令,就象-r標誌所做用的,在每個命令的前面有一個命令編號。
3 -n當與-l標誌一塊兒使用時,隱藏命令編號。
4 -r逆轉所列出命令的順序(當使用-l標誌)或者逆轉所編輯的命令順序(當沒有指定-l標誌時)。
5 -t在歷史文件中列出命令及其執行時間。工做過程與-l標誌相似,可是還顯示命令的執行時間。
6 First和Last:選擇要列出或編輯的命令。HISTSIZE環境變量值肯定了可以訪問到的之前所輸入命令的數量。
7 First參數和Last參數必須具備如下數值中的一個:
8 [+]Number:表示一個特定的命令編號。-l標誌能夠顯示命令編號。缺省值爲一個+字符。
9 -Number:表示一個之前執行的命令,由存儲在歷史列表中的命令編號指定。例如,-1指出了前一個剛執行過的命令。

使用舉例

1 [root@localhost ~]# fc
2 echo 'Hello Word ...'
3 Hello Word ...
4 [root@localhost ~]# fc -l -1
5 811     fc -l -5
6 [root@localhost ~]# 

history命令

history命令用於顯示歷史記錄和執行過的指令命令。系統默認保留1000條。

history命令讀取歷史命令文件中的目錄到歷史命令緩衝區和將歷史命令緩衝區中的目錄寫入命令文件。該命令單獨使用時,僅顯示歷史命令,在命令行中,可使用符號!執行指定序號的歷史命令。例如,要執行第2個歷史命令,則輸入!2。

history命令是被保存在內存中的,當退出或者登陸shell時,會自動保存或讀取。在內存中,歷史命令僅可以存儲1000條歷史命令,該數量是由環境變量HISTSIZE進行控制。默認是不顯示命令的執行時間,命令的執行時間,history已經記錄,只是沒有顯示。

如想查詢某個用戶在系統上執行了什麼命令,可使用root用戶身份登陸系統,檢查Home目錄下的用戶主目錄下的「.bash_history」文件,該文件記錄了用戶所使用的命令和歷史信息。

顯示執行歷史記錄時間

默認狀況下,history並不記錄命令的執行時間,分析起來很困難。咱們可使用HISTTIMEFORMAT在歷史中顯示TIMESTAMP。

把 export HISTTIMEFORMAT='%F %T ' 命令加入到~/.bashrc中便可在登陸後自動開啓history時間戳了。添加完成後,執行 source .bashrc 讓其生效。僅針對當前帳號有效。

基本語法

1 [root@localhost ~]# history [選項]

選項說明

1 -c:清空命令歷史。
2 -d n:刪除歷史中指定的命令,n表示命令號。
3 n:顯示最近的n條歷史。
4 -a:追加本次會話新執行的命令歷史列表至歷史文件,由於多終端因此若是想看當前都發生了什麼操做就能夠執行-a進行查看。
5 -n:讀歷史文件(本地數據)中未讀過的行到歷史列表(內存數據)。
6 -r:讀歷史文件(本地數據)附加到歷史列表(內存數據)。
7 -w:保存歷史列表(內存數據)到指定的歷史文件(本地數據)。
8 -s:展開歷史參數成一行,附加在歷史列表後。用於僞造命令歷史。

使用舉例

1 [root@localhost ~]# history 3
2   823  history 5
3   824  history 7
4   825  history 3
5 [root@localhost ~]# 

jobs命令

jobs命令能夠用來查看當前終端放入後臺的工做,工做管理的名字也來源於jobs命令。

基本語法

1 [root@localhost ~]# jobs [選項]

選項說明

1 -l:列出進程的PID號。
2 -p:只列出進程的PID號。
3 -r:只列出運行中的進程。
4 -s:只列出已中止的進程。
5 -n:只列出上次發出通知後改變了狀態的進程。

bg命令

bg命令用於把前臺工做放到後臺執行。

基本語法

1 [root@localhost ~]# bg %進程號

選項說明

注意,在使用此命令時,%能夠省略。

fg命令

fg命令用於把後臺工做恢復到前臺執行。

基本語法

1 [root@localhost ~]# fg %進程號

選項說明

注意,在使用此命令時,%能夠省略,但若將%和進程號所有省略,則此命令會將帶有+號的工做恢復到前臺。

kill命令

kill命令會向操做系統內核發送一個信號(可能是終止信號)和目標進程的PID,而後系統內核根據收到的信號類型,對指定進程進行相應的操做。

基本語法

1 [root@localhost ~]# kill [選項] 進程號

選項說明

1 -0:表明EXIT,程序退出時收到該信息。
2 -1:表明HUP,掛掉電話線或終端鏈接的掛起信號,這個信號也會形成某些進程在沒有終止的狀況下從新初始化。
3 -2:表明INT,表示結束進程,但並非強制性的,經常使用的「Ctrl+C」組合鍵發出就是一個「kill -2」的信號。
4 -3:表明QUIT,表示退出。
5 -9:表明KILL,殺死進程,即強制結束進程。
6 -11:表明SEGV,段錯誤。
7 -15:表明TERM,正常結束進程,是kill命令的默認信號。
相關文章
相關標籤/搜索