Bash Shell命令流程

2022-07-01 21:39:12 字數 1498 閱讀 7903

2.什麼是內部命令,什麼是外部命令

3.如何檢查使用者輸入的命令是內部命令還是外部命令*

#cd命令屬於shell內部命令

[root@linux-node1 ~]# type -a cd

cd is a shell builtin

cd is /usr/bin/cd

#ping屬於外部命令, 同時會列印當前命令路徑

[root@web ~]# type -a ping

ping is /bin/ping

4.如果是外接命令,bash可以通過查詢path變數,獲取該命令的絕對路徑。

#列印當前環境變數目錄

[root@web ~]# echo $path

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

ps: path由多個路徑組成,每個路徑值之間用冒號間隔,對這些路徑的增加和刪除操作都將影響到bash直譯器對linux命令的查詢

5.如果是外接命令還會涉及到乙個記憶體快取,也就是說,當我們出現重複執行相同的命令,會通過快取調取執行,也就意味著不會搜尋path路徑。

#表快取命令所在位置

[root@web ~]# hash

hits command

1 /usr/bin/tty

3 /sbin/ifconfig

#已快取命令,如果移動位置會導致無法找到該命令

[root@web ~]# mv /sbin/ifconfig /bin/

[root@web ~]# ifconfig

-bash: /sbin/ifconfig: no such file or directory

#刪除快取過的ifconfig命令, 即可執行

[root@web ~]# hash -d ifconfig

[root@web ~]# ifconfig

#當然可以清空快取表

[root@web ~]# hash -r

#注意: 命令快取hash需要注意如下情況:

1.只要執行外部命令1次就會對該命令進行快取

2.如果將命令移動了位置,該如何執行

a.使用絕對路徑執行

b.刪除hash表的快取指令

6.命令執行流程總結: 當我們執行了乙個ping命令之後, 整個命令執行的流程步驟如下:

1) 檢查執行的命令是否使用的是絕對路徑執行的。

2) 檢查ping命令是否存在alias別名

3) 檢查ping命令是內部命令還是外部命令

4) 如果是內部命令bash直接執行,如果是外部命令,首先檢查hash快取,存在則直接調取

5) 如果該命令不存在hash快取,則通過path路徑進行逐行查詢該命令所在的位置

6) 如果path路徑沒有查詢到該命令所在的路徑,則返回錯誤碼。command not found

基本的bash shell 命令

linux man 頁面格式 name顯示命令的名稱和簡介 synopsis顯示命令的格式 description描述每個命令的選項 author 該命令開發人員資訊 reporting bugs提交bug報告途徑 see also推薦檢視相似命令 ps 命令 bsd風格的引數,前面不見破折線 gn...

Bash Shell 的管道命令

1 cut 命令選取 cut d 分隔字元 f fields d 後面接分隔字元。用 f一起使用 f 根據 d的分隔字元將一段資訊分割成為數段 c 以字元的單位取出固定字元區間 eg echo path cut d f 5 以 作為分隔,取第五段字元 2 grep 上面cut命令是在一行資訊其中取出...

bash shell常用命令

提示符 在linux系統中有兩個環境變數用來控制命令列提示符的格式 ps1 預設命令列提示符格式 ps2 後續命令列提示符格式 bash shell提示符,所有特殊字元都是從反斜線 開始,使用者要自定義提示符,需給ps1變數賦乙個新的字串,如 sky linux host w t u 0 20 30...