Unixの `which`コマンドに相当するPowerShell


69

PowerShellには、whichほとんどの(すべてではないにしても)Unixシェルにあるコマンドと同等のものがありますか?

コマンドラインから実行している何かの場所を知りたいことが何度もあります。Unixでは、を行うだけwhich <command>で、それがわかります。PowerShellで同等のものを見つけることができません。

回答:


71

これは、スタックオーバーフローに関する質問と回答です。PowerShellの* Nix 'which'コマンドと同等ですか?

PowerShellで自分のプロファイルをカスタマイズし始めたときに作成した最初のエイリアスは「これ」でした。

コマンドを取得する新しいエイリアス

これをプロファイルに追加するには、次を入力します。

「 `nNew-Alias which get-command」| add-content $ profile

最後の行の先頭にある `nは、新しい行として開始することを保証するためのものです。


35

PowerShell 3.0では、次のことができます

(Get-Command cmd).Path

これは、System.String通常のGet-Commandよりもaを返す利点があるので、慣れているようなきれいな* nixy単一行出力を取得できます。gcmエイリアスを使用すると、11文字まで減らすことができます。

(gcm cmd).Path

4
Get-Command複数の結果が見つかった場合、配列を返します。さらに、見つかったコマンドが実行可能ファイルでPathはない場合、未定義($null)です。このため、ここでの答えは、大幅な変更を加えない一般的な使用には実用的ではありません。これら両方のケースの良い例については、を試してくださいGet-Command where
jpmc26

1
これはwhere、質問のタイトルではないPowershellにエイリアスを設定する方法を教えるのではなく、* NIXコマンドに相当するPowershellを実際に教えてくれるので、受け入れられた答えでなければなりません。
マスタジ

3
@mastazi:しかし、それは例えばに比べ回帰である、組み込みコマンドで失敗したのzshさんwhich。(whereちなみに、実際には、Windowsの異なるものの数、のいずれかの操作を行いできるユーティリティ大まかに沿ってコマンドを探して近似するがPATH。)また、ありません、何も頼まれたものを行う方法について説明し答えを間違っとはまた、その上に構築されたもう少し複雑なもの。
SamB

7

2008年の回答:Windowsのコマンドラインに「which」に相当するものはありますか?

whereリソースキットをインストールした場合は、コマンドを試してください。

答えの最も重要な部分:

Windows Server 2003以降WHEREは、実行可能なコマンドだけでなく、すべての種類のファイルに一致しますが、一部の機能を実行するコマンドを提供します。

[をちょきちょきと切る]

Windows PowerShellでは、と入力する必要がありますwhere.exe


3
function which([string]$cmd) {gcm -ErrorAction "SilentlyContinue" $cmd | ft Definition}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.