unix tìm lệnh trên cmder.exe trong windows


10

Tôi đã cài đặt trình giả lập shell cmder cho Windows.

Hoạt động tốt nhưng tôi không thể sử dụng lệnh find của Unix. Rõ ràng khi tôi gõ:

'find .'

trong thiết bị đầu cuối, nó cố gắng sử dụng TÌM KIẾM của Windows và xuất ra lỗi này:

FIND: Parameter format not correct

Tôi thực sự muốn sử dụng find, bất kỳ gợi ý về cách làm cho nó hoạt động?


1
Bạn sẽ cần phải tạo bất kỳ thư mục nào findxuất hiện trước C:\Windows\System32(nơi Windows tìm thấy sự sống) trong PATHbiến môi trường. Điều này thường được coi là không phải là một ý tưởng tuyệt vời để thực hiện trên toàn cầu vì nó có xu hướng gây nhầm lẫn cho các chương trình khác mong đợi một môi trường Windows tiêu chuẩn. Thay vào đó, bạn nên xem liệu bạn có thể đặt tập lệnh khởi động trong Cmder hay không và làm cho tập lệnh thực hiện một cái gì đó giống nhưset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob

Tôi không biết cmder, nhưng trong Linux / Unix which -a findsẽ hiển thị tất cả các chương trình có thể thực thi bằng lệnh find. Xác định Unix find. Sau đó sử dụng đường dẫn đầy đủ của nó hoặc sắp xếp lại thứ tự các PATHthư mục hoặc đặt bí danh, nếu cmderhỗ trợ này; bạn cũng có thể đổi tên Windows find.exethành wfind.exe. Nếu nó mô phỏng bash, thì bạn có thể sử dụng trong xây dựng type -a find.
AFH



@AFH which -a findtrở lại /c/WINDOWS/system32/find /usr/bin/find. Thật không may, mặc dù, chạy /usr/bin/findnăng suất The system cannot find the path specified.. Có vẻ như đường dẫn kiểu windows thực sự là cần thiết ở đây. Chạy typesẽ khởi chạy các cửa sổ typevà nó xuất hiện cmderkhông cung cấp phiên bản giống như unix.
simlev

Câu trả lời:


11

Giải pháp đơn giản nhất là tạo bí danh để findthực thi trong cmderthư mục cài đặt:

λ which find
/c/WINDOWS/system32/find
λ find --help
FIND: FIND: Parameter format not correct
λ alias find=C:\Files\Programs\cmder\vendor\git-for-windows\usr\bin\find.exe $*
λ find --help
Usage: /usr/bin/find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

Tôi có thể đề nghị bạn cũng thử Cygwin , trong số những thứ khác, findhoạt động ra khỏi hộp. Đó là những gì tôi đã sử dụng để xác định vị trí của cmder-supplied find.exe.

Kudos để @ Bob@AFH để lấy ý kiến sâu sắc của họ, và để @ Lưu Vĩnh Phúc cho thấy một giải pháp dead-đơn giản:

đổi tên * nix findthành tên khác nhưfnd.exe

Điều này thực sự có thể được ưa thích hơn là tạo ra một bí danh, vì các cmderbí danh không hoạt động trong Windows 10 trừ khi Use legacy consoleđược chọn trong cmdcác thuộc tính (xem cách thực hiện).


Cám ơn vì sự gợi ý. Có vẻ là cách tốt nhất để đi. Tôi thường sử dụng cygwin khi ở trên windows nhưng vì lý do làm việc nên tôi buộc phải cmder ngay bây giờ. Tôi sẽ thử càng sớm càng tốt!
Heisenorms

@Heisenorms cmdercó lợi thế rõ ràng là có thể mang theo và không cần cài đặt để được thực hiện bởi người dùng đặc quyền.
simlev

bạn cũng có thể chỉ cần đổi tên * nix findthành một tên khác nhưfnd.exe
phuclv

Tôi đã đổi tên phiên bản unix, để tránh sửa đổi các công cụ gốc của windows. Nhưng cảm ơn, thứ tôi thực sự thiếu là thư mục chứa các lệnh đó và câu trả lời của bạn đã giúp tôi.
Heisenorms

Không phải gnu thường được gọi là gfind trên các hệ thống không phải là gnu sao?

4

Cmder\vendor\git-for-windows\usr\binđược thêm vào PATH bởi Cmder\vendor\init.bat. Thật không may, nó được thêm vào cuối PATH, vì vậy find.exe của Windows được tìm thấy đầu tiên.

May mắn thay, nó dễ dàng để sửa chữa. Chỉ cần thêm dòng này vào bên trong Cmder\config\user-profile.cmd:

set "PATH=%GIT_INSTALL_ROOT%\usr\bin;%PATH%"


0

Tôi đã cài đặt smartgit trong windows

Sau đó, tôi thêm C: \ Program Files (x86) \ SmartGit \ git \ bin (thư mục smartgit của tôi) vào môi trường đường dẫn

nhấn win + r nhập bash. trong bash shell, bạn có thể sử dụng lệnh find. trong Cmder bạn cũng có thể gõ bash để sử dụng nó

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.