【 type 】 コマンドがどう解釈されるかを調べる 【 Linuxコマンドまとめ 】 | Linux Fan

【 type 】 コマンドがどう解釈されるかを調べる 【 Linuxコマンドまとめ 】

2018年7月19日

「Linuxコマンドまとめ」カテゴリでは、Linuxのコマンドについて、基本的な実行例とオプションを分かりやすくまとめます。

type」は「コマンドがどのように解釈されるか」を調べるコマンドです。
コマンドの絶対パスを調べる時に、よく使われます。

なお「type」は、Bashが処理を行う「内部コマンド(ビルトインコマンド)」です。

typeコマンドの基本的な使い方

type」コマンドの基本書式は、以下の通りです。

type オプション コマンド名 [コマンド名...]

以下の例では、「cal」コマンドについて調べています。

$ type cal
cal は /usr/bin/cal です

cal」コマンドを実行すると、プログラムファイル「/usr/bin/cal」が実行されることが分かりました。

以下の例では、「source」コマンドについて調べています。

$ type source
source はシェル組み込み関数です

source」コマンドは、シェル自身が実行する「組み込み関数(内部コマンド)」であることが分かりました。

以下の例では、「ll」コマンドについて調べています。

$ type ll
ll は `ls -alF' のエイリアスです

ll」コマンドは、「ls -alF」の別名(エイリアス)であることが分かりました。

以下の例では、「for」について調べています。

$ type for
for はシェルの予約語です

for」は、シェルの予約語であることが分かりました。

typeコマンドの主なオプション

-t
「alias(エイリアス)」「keyword(予約語)」「function(関数)」「builtin(内部コマンド)」「file(実行ファイル)」「空文字列(見つからない)」のいずれかを出力する
-p
タイプが「file(実行ファイル)」の時のみ実行ファイルの絶対パスを出力する(それ以外のタイプの場合は何も出力しない)
-P
どのタイプであっても実行ファイルの絶対パスを検索して出力する(見つからなければ出力しない)
-a
一致するすべてのエイリアス、内部コマンド、関数、実行ファイルを出力する

実行例

$ type ls
ls は `ls --color=auto' のエイリアスです

# エイリアスなので「alias」と出力される
$ type -t ls
alias

# エイリアスだが「-P」オプションをつけるとファイルパスが出力される
$ type -P ls
/bin/ls

# 「-a」でエイリアスとファイルパスの両方に一致することが分かる
$ type -a ls
ls は `ls --color=auto' のエイリアスです
ls は /bin/ls です

typeコマンドのヘルプ

type: type [-afptP] name [name ...]
    Display information about command type.
    
    For each NAME, indicate how it would be interpreted if used as a
    command name.
    
    Options:
      -a	display all locations containing an executable named NAME;
    		includes aliases, builtins, and functions, if and only if
    		the `-p' option is not also used
      -f	suppress shell function lookup
      -P	force a PATH search for each NAME, even if it is an alias,
    		builtin, or function, and returns the name of the disk file
    		that would be executed
      -p	returns either the name of the disk file that would be executed,
    		or nothing if `type -t NAME' would not return `file'
      -t	output a single word which is one of `alias', `keyword',
    		`function', `builtin', `file' or `', if NAME is an alias,
    		shell reserved word, shell function, shell builtin, disk file,
    		or not found, respectively
    
    Arguments:
      NAME	Command name to be interpreted.
    
    Exit Status:
    Returns success if all of the NAMEs are found; fails if any are not found.

typeコマンドのマニュアル

type [-aftpP] name [name ...]
       オプションなしの場合には、各 name をコマンド名として使ったときに、それがどのように解釈されるかを示します。 -t オプションを使うと、  name  がエイリアス、シェルの予約
       語、関数、 組み込みコマンド、ディスク上のファイルのいずれかの場合、 type はそれぞれ alias, keyword, function, builtin, file という文字列を出力します。 name が見つか
       らない場合は何も出力されず、偽の終了ステータスが返されます。 -p オプションを使うと、 type は name をコマンド名として指定した場合に実行されるディスクファイルの名前を
       返します。  ただし、 ``type -t name'' が file を返さない場合は、何も返しません。 -P オプションを使うと、 ``type -t name'' が file を返さない場合でも name を PATH か
       ら探します。 コマンドがハッシュされている場合、 -p や -P はハッシュされている値を表示します。 この場合、表示されるのは、必ずしも PATH 中で最初に現われるファイルとは
       限りません。  -a オプションを使うと、 type は name という名前の実行ファイルがある場所を全て出力します。 -p オプションが同時に使われていない場合に限り、 エイリアスや
       関数も出力されます。 -a を使うときには、ハッシュされているコマンドの表は参照されません。 -f オプションを使うと、 組み込みコマンド command と同じように、シェル関数を
       探しません。 type は、すべての引き数が見つかれば真を返し、 いずれかが見つからなければ偽を返します。