Linux學習第4天
Linux內部命令和外部命令
內部命令:實際上是shell程序的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程序識別并在shell程序內部完成運行,通常在linux系統加載運行時shell就被加載并駐留在系統內存中。內部命令是寫在bashy源碼里面的,其執行速度比外部命令快,因為解析內部命令shell不需要創建子進程
外部命令:是linux系統中的實用程序部分,因為實用程序的功能通常都比較強大,所以其包含的程序量也會很大,在系統加載時并不隨系統一起被加載到內存中,而是在需要時才將其調用內存。通常外部命令的實體并不包含在shell中,但是其命令執行過程是由shell程序控制的。shell程序管理外部命令執行的路徑查找、加載存放,并控制命令的執行。外部命令是在bash之外額外安裝的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等??赏ㄟ^“echo $PATH”命令查看外部命令的存儲路徑
type 可以用來查看一個命令是內部命令還是外部命令
語法
type(選項)(參數)
選項
-t:輸出“file”、“alias”或者“builtin”,分別表示給定的指令為“外部指令”、“命令別名”或者“內部指令”;
-p:如果給出的指令為外部指令,則顯示其絕對路徑; -a:在環境變量“PATH”指定的路徑中,顯示給定指令的信息,包括命令別名
Hash緩存表
linux系統下會有一個hash表,當你剛開機時這個hash表為空,每當你執行過一條命令時,hash表會記錄下這條命令的路徑,就相當于緩存一樣。第一次執行命令shell解釋器默認的會從PATH路徑下尋找該命令的路徑,當你第二次使用該命令時,shell解釋器首先會查看hash表,沒有該命令才會去PATH路徑下尋找
語法
hash [-l] [-r] [-p <path> <name>] [-t <command>]
選項
-l |
顯示哈希表,包括路徑 |
-r |
清除哈希表 |
-p <path> <name> |
向哈希表中增加內容 |
-t <command> |
顯示指定命令的完整路徑 |
alias別名命令
alias命令用來設置指令的別名。我們可以使用該命令可以將一些較長的命令進行簡化。使用alias時,用戶必須使用單引號''將原來的命令引起來,防止特殊字符導致錯誤。 alias命令的作用只局限于該次登入的操作。若要每次登入都能夠使用這些命令別名,則可將相應的alias命令存放到bash的初始化文件/etc/bashrc中
語法
alias(選項)(參數)
選項
-p:打印已經設置的命令別名
參數
命令別名設置:定義命令別名,格式為 命令別名=‘實際命令’
alias 的基本使用方法
alias 新的命令='原命令 –選項/參數
history命令
history命令用于顯示指定數目的指令命令,讀取歷史命令文件中的目錄到歷史命令緩沖區和將歷史命令緩沖區中的目錄寫入命令文件 該命令單獨使用時,僅顯示歷史命令,在命令行中,可以使用符號!執行指定序號的歷史命令。例如,要執行第2個歷史命令,則輸入!2。歷史命令是被保存在內存中的,當退出或者登錄shell時,會自動保存或讀取。在內存中,歷史命令僅能夠存儲1000條歷史命令,該數量是由環境變量HISTSIZE進行控制
語法
history(選項)(參數)
選項
-c:清空當前歷史命令;
-a:將歷史命令緩沖區中命令寫入歷史命令文件中;
-r:將歷史命令文件中的命令讀入當前歷史命令緩沖區;
-w:將當前歷史命令緩沖區命令寫入歷史命令文件中。
使用歷史命令的一些快捷鍵
Ctrl+R 搜索歷史
Ctrl+R 是我經常使用的一個快捷鍵。此快捷鍵讓你對命令歷史進行搜索,對于想要重復執行某個命令的時候非常有用。當找到命令后,通常再按回車鍵就可以執行該命令。如果想對找到的命令進行調整后再執行,則可以按一下左或右方向鍵。
快速重復執行上一條命令
1. 使用上方向鍵,并回車執行。
2. 按 !! 并回車執行。
3. 輸入 !-1 并回車執行。
4. 按 Ctrl+P 并回車執行
重復執行第 4 條命令,那么可以執行 !4
如:[root@localhost ~]# history
1 hisrory
2 history
3 cat
4 echo 1
5 haitort
6 history
[root@localhost ~]# !4
echo 1
1
HISTSIZE :控制命令歷史記錄的條數
如:[root@localhost ~]# HISTSIZE=10
[root@localhost ~]# history
1 hisrory
2 history
3 cat
4 echo 1
5 haitort
6 history
7 echo 1
8 HISTSIZE
9 HISTSIZE=10
10 history
使用HISTFILE更改歷史文件存儲
vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior
使用 HISTCONTROL 從命令歷史中剔除連續重復的條目
[root@localhost ~]# export HISTCONTROL=ignoredups
[root@localhost ~]# pwd
/root
[root@localhost ~]# pwd
27 export HISTCONTROL=ignoredups
28 pwd
29 history
[root@localhost ~]# pwd
/root
[root@localhost ~]# history
使用 HISTCONTROL 清除整個命令歷史中的重復條目上例中的 ignoredups 只能剔除連續的重復條目。要清除整個命令歷史中的重復條目,可以將 HISTCONTROL 設置成 erasedups:
export HISTCONTROL=ignoredups
[root@localhost ~]# history
2 echo
3 history
[root@localhost ~]# echo
[root@localhost ~]# history
2 echo
3 history
使用 HISTIGNORE 忽略歷史中的特定命令
# export HISTIGNORE=”pwd:ls:ls -ltr:”
# pwd
# ls
# ls -ltr
# service httpd stop
# history | tail -3
79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 service httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]
原創文章,作者:mxl,如若轉載,請注明出處:http://www.www58058.com/53510