PowerShell tương đương với lệnh `` `Unix?


69

PowerShell có tương đương với whichlệnh được tìm thấy trong hầu hết (nếu không phải tất cả) shell Unix không?

Có một số lần tôi muốn biết vị trí của thứ gì đó tôi đang chạy từ dòng lệnh. Trong Unix tôi chỉ cần làm which <command>, và nó cho tôi biết. Tôi không thể tìm thấy một tương đương trong PowerShell.

Câu trả lời:


71

Điều này đã được hỏi và trả lời trên Stack Overflow: Equivalent của * Nix 'which' trong PowerShell?

Bí danh đầu tiên tôi tạo ra khi tôi bắt đầu tùy chỉnh hồ sơ của mình trong PowerShell là 'cái đó'.

Bí danh mới có lệnh

Để thêm nó vào hồ sơ của bạn, gõ này:

"` nNew-Alias ​​mà nhận lệnh "| bổ sung nội dung $ hồ sơ

`N ở đầu dòng cuối cùng là để đảm bảo nó sẽ bắt đầu như một dòng mới.


35

Kể từ PowerShell 3.0, bạn có thể làm

(Get-Command cmd).Path

Điều này cũng có lợi ích so với vanilla Get-Command trả lại a System.Stringđể bạn có được đầu ra một dòng * nixy sạch như bạn có thể sử dụng. Sử dụng bí danh gcm, chúng ta có thể đưa nó xuống còn 11 ký tự.

(gcm cmd).Path

4
Nếu Get-Commandtìm thấy nhiều kết quả, nó sẽ trả về một mảng. Ngoài ra, nếu lệnh mà nó tìm thấy không phải là tệp thực thi, Paththì không xác định ( $null). Điều này làm cho câu trả lời ở đây không thực tế để sử dụng chung mà không sửa đổi nặng. Để có một ví dụ tốt về cả hai trường hợp này, hãy thử Get-Command where.
jpmc26

1
Đây phải là câu trả lời được chấp nhận vì nó thực sự cho bạn biết Powershell tương đương với lệnh * NIX wherethay vì dạy bạn cách đặt bí danh trên Powershell, đây không phải là tiêu đề của câu hỏi.
mastazi

3
@mastazi: Nhưng điều đó không cho dựng sẵn, mà là một hồi quy so với ví dụ zsh 's which. (nhân tiện where, thực ra là một tiện ích Windows có thể thực hiện một số điều khác nhau, một trong số đó gần như là tìm kiếm một lệnh dọc theo PATH.) Ngoài ra, không có sai với câu trả lời giải thích cách làm những gì được hỏi cũng khác, một chút liên quan nhiều hơn được xây dựng trên đó.
SamB

7

Cũng đã trả lời vào năm 2008: Có tương đương với 'cái nào' trên dòng lệnh Windows không?

Hãy thử wherelệnh nếu bạn đã cài đặt Bộ tài nguyên.

Phần quan trọng nhất của câu trả lời:

Windows Server 2003 trở lên cung cấp WHERElệnh thực hiện một số thao tác, mặc dù nó phù hợp với tất cả các loại tệp, không chỉ các lệnh thực thi.

[bắn tỉa]

Trong Windows PowerShell, bạn phải nhập where.exe.


3
function which([string]$cmd) {gcm -ErrorAction "SilentlyContinue" $cmd | ft Definition}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.