查看命令是否是別名
linux命令往往有默認的選項和參數,而這些默認的選項或者參數往往是通過別名來實現的。
如rm命令,就是rm -i的別名。
如何查看某條命令是不是別名呢,可以通過alias或者type來查看
alias 命令
type 命令
如下
[root@localhost vagrant]# alias rm alias rm='rm -i' [root@localhost vagrant]# type rm rm is aliased to `rm -i' [root@localhost vagrant]#
創建別名
alias 別名='命令 選項'
alias rm='rm -i'
刪除別名
unalias 別名
unalias rm
[root@localhost vagrant]# alias rm //查看rm是否是別名 alias rm='rm -i' [root@localhost vagrant]# type rm //查看rm是否是別名 rm is aliased to `rm -i' [root@localhost vagrant]# unalias rm //刪除別名rm [root@localhost vagrant]# alias rm //再查看rm是不是別名 bash: alias: rm: not found //別名rm不存在 [root@localhost vagrant]# type rm rm is /bin/rm [root@localhost vagrant]# alias rm='rm -i' //創建別名 [root@localhost vagrant]# alias rm //再查看rm是不是別名 alias rm='rm -i' [root@localhost vagrant]#
結論: 命令的別名和命令本身可以重名,當有別名時,首先會執行別名而不是命令本身。
命令的默認選項往往是通過創建同名別名來實現的,通過查看別名便可知道命令的默認選項
命令的執行
我們執行某條命令時,有時會輸入完整的命令路徑,而有時只是簡單的輸入命令
完整的命令路徑其實就是命令的執行文件,這種情況下會直接執行文件
而簡單的輸入命令則有兩種情況,如果是內部命令,則直接直接從內存中讀取並執行,
如果不是內部命令,及外部命名,則會在PATH 變量包含的多個路徑中逐個查找,直到找到並執行,找不到則提示該命令不存在。
內部命令和外部命令
內部命令由 Shell 自帶,會隨着系統啟動,可以直接從內存中讀取;內部命令指的是解釋器內部的命令,會被直接執行;
而外部命令僅是在系統中有對應的可執行文件,執行時需要讀取該文件。
上面說的直接輸入可執行文件的路徑和在PATH變量的路徑中查找命令的可執行文件都屬於外部命令
判斷內部命令和外部命令
type 命令
[root@localhost vagrant]# type pwd //內部命令 pwd is a shell builtin [root@localhost vagrant]# type top //外部命令 top is /bin/top