type

顯示指定命令的類型。

概要

1 type [-afptP] name [name ...]

主要用途

  • 顯示要查找的命令的信息。
  • 控制查找範圍和行爲。
  • 顯示要查找的命令優先級最高的類型。

選項

1-a:在環境變量PATH中查找並顯示所有包含name的可執行文件路徑;當'-p'選項沒有同時給出時,如果在別名、關鍵字,函數,內建的信息中存在name,則一併顯示。
2-f:排除對shell函數的查找。
3-p:如果name在執行'type -t name'返回的不是'file',那麼什麼也不返回;否則會在環境變量PATH中查找並返回可執行文件路徑。
4-P:即使要查找的name是別名、內建、函數中的一個,仍然會在環境變量PATH中查找並返回可執行文件路徑。
5-t:根據name的類型返回一個單詞(別名,關鍵字,函數,內建,文件),否則返回空值。

參數

name:要查找的命令,可以爲多個。

返回值

當指定的命令可以找到時返回成功,如果有沒找到的返回失敗。

例子

1接下來要用到的例子假設'~/.bashrc'文件定義了以下的內容:
2
3alias ls='ls --color=auto'
4mybash(){ vim ~/.bashrc; }
5
6而且執行環境裏沒有使用enable禁用內建命令。
 1type -a mybash
 2# 輸出
 3mybash is a function
 4mybash ()
 5{
 6    vim ~/.bashrc
 7}
 8
 9type -a -f mybash
10# 輸出(因爲排除了函數,所以報錯)
11bash: type: mybash: not found
12
13type -a -p mybash
14# 輸出爲空(因爲排除了函數,所以什麼也不返回)
15
16type -a ls
17# 輸出
18ls is aliased to `ls --color=suto'
19ls is /usr/bin/ls
20ls is /bin/ls
21
22type -a -p ls
23# 輸出
24/usr/bin/ls
25/bin/ls
 1# '-f'不會影響'-P'的範圍,'-f'不建議和'-p'使用。
 2# 注意:printf同時是內建命令以及可執行文件(GNU coreutils),優先作爲內建處理。
 3
 4type -p printf
 5# 輸出爲空
 6
 7type -P printf
 8# 輸出
 9/usr/bin/printf
10/bin/printf
 1# 如果有多個類型,那麼輸出優先級最高的類型。
 2
 3type -t ls
 4# 輸出
 5alias
 6
 7type -t for
 8# 輸出(bash關鍵字)
 9keyword
10
11type -t mybash
12# 輸出
13function
14
15type -t -f mybash
16# 輸出空值
17
18type -t printf
19# 輸出(bash內建優先級高)
20builtin
21
22type -t chmod
23# 輸出
24file

注意

  1. 該命令是bash內建命令,相關的幫助信息請查看help命令。

  2. 命令優先級問題請查看builtin命令。

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: