毎日1つのLinuxのwhichコマンド


私たちはよくlinuxでファイルを検索しますが、どこに置いたのか分かりません.次のコマンドを使用して検索できます.
whichは実行可能なファイルの場所を表示します.
whereisはファイルの場所を表示します.
locateはデータベースと協力してファイルの場所を表示します.
findは実際にハードディスク(HDD)クエリーファイル名を検索します. 
whichコマンドの役割は、PATH変数で指定されたパスでシステムコマンドの位置を検索し、最初の検索結果を返すことです.すなわち,whichコマンドを用いると,あるシステムコマンドが存在するか,どの位置のコマンドが実行されているかを見ることができる.
1.コマンド形式:
which実行可能ファイル名
2.コマンド機能:
which命令は、PATH変数によって指定されたパスでシステム命令の位置を検索し、最初の検索結果を返します.
3.コマンドパラメータ:
-nファイル名の長さを指定します.指定した長さは、すべてのファイルの中で最も長いファイル名以上でなければなりません.
-pは-nパラメータと同じですが、ここではファイルを含むパスです.
-w出力時の段幅を指定します.
-Vバージョン情報を表示
--skip-alias別名の表示を禁止
4.使用例:
インスタンス1:ファイルの検索、コマンドパスの表示
コマンド:
 which pwd
出力:
[BEGIN] 2015/12/29 21:01:42
[root@localhost ~]# which pwd
/bin/pwd
[root@localhost ~]# which useradd
/usr/sbin/useradd

[END] 2015/12/29 21:02:32

説明:
whichは、使用者が設定したPATH変数内のディレクトリに基づいて実行可能なファイルを検索します!だから、異なるPATH構成内容で見つけたコマンドはもちろん違います!
例2:whichでwhichを見つける
コマンド:
 which which
出力:
[BEGIN] 2015/12/29 21:05:31
[root@localhost ~]# 
[root@localhost ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
	/usr/bin/which

[END] 2015/12/29 21:05:58

説明:
なんと2つのwhichがあり、そのうちの1つはaliasです.これはいわゆる『命令別名』です.whichを入力すると、後で続く命令を待つという意味です.
例3:cdというコマンドを見つける
コマンド:
  which cd
出力:
[BEGIN] 2015/12/29 21:13:49
[root@localhost ~]# 
[root@localhost ~]# which cd
/usr/bin/which: no cd in (/usr/local/mysql/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin)

[END] 2015/12/29 21:14:03

cdというよく使われるコマンドが見つからないなんて!どうしてですか.これはcdがbash内建の命令だからです!しかしwhichはデフォルトでPATH内の仕様のディレクトリを探しているので、もちろん見つからないに違いありません!