unix find command pada cmder.exe di windows

10

Saya menginstal emulator shell cmder untuk Windows.

Bekerja dengan baik tetapi saya tidak bisa menggunakan perintah find Unix. Ternyata saat saya mengetik:

'find .'

di terminal ia mencoba menggunakan FIND Windows dan menampilkan kesalahan ini:

FIND: Parameter format not correct

Saya benar-benar ingin menggunakan find, ada petunjuk tentang cara membuatnya bekerja?

Heisenbug
sumber
1
Anda harus membuat direktori mana saja findyang muncul sebelumnya C:\Windows\System32(di mana Windows 'menemukan nyawa) dalam PATHvariabel lingkungan. Ini umumnya dianggap bukan ide bagus untuk dilakukan secara global karena cenderung membingungkan program lain yang mengharapkan lingkungan Windows standar. Sebaliknya, Anda harus melihat apakah Anda dapat mengatur skrip startup di Cmder, dan membuat skrip melakukan sesuatu sepertiset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob
Saya tidak tahu cmder, tetapi di Linux / Unix which -a findakan menampilkan semua program yang bisa dijalankan dengan perintah find. Identifikasi Unix find. Kemudian gunakan path lengkapnya, atau atur ulang urutan PATHdirektori, atau atur alias, jika cmdermendukung ini; Anda juga bisa mengganti nama Windows find.exemenjadi wfind.exe. Jika mengemulasi bash, maka Anda dapat menggunakan built-in type -a find.
AFH
@AFH which -a findkembali /c/WINDOWS/system32/find /usr/bin/find. Sayangnya, meskipun, menjalankan /usr/bin/findhasil The system cannot find the path specified.. Tampaknya jalur gaya windows yang sebenarnya diperlukan di sini. Menjalankan typemeluncurkan windows type, dan tampaknya cmdertidak menyediakan versi seperti unix.
simlev

Jawaban:

11

Solusi paling sederhana adalah membuat alias ke findexecutable di dalam cmderfolder instalasi:

λ 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]

Bolehkah saya menyarankan Anda juga mencoba Cygwin di mana, di antaranya, findberhasil di luar kotak. Itulah yang saya gunakan untuk memastikan lokasi cmder-supplied find.exe.

Kudos to @ Bob dan @AFH atas komentar penuh wawasan mereka, dan kepada @ Lưu Vĩnh Phúc karena menyarankan solusi sederhana lain:

ganti nama * nix finddengan nama lain sepertifnd.exe

Ini mungkin sebenarnya lebih disukai daripada membuat alias, karena cmderalias tidak berfungsi di Windows 10 kecuali Use legacy consoledipilih di cmdproperti (lihat bagaimana melakukannya).

simlev
sumber
Terima kasih untuk sarannya. Sepertinya cara terbaik untuk pergi. Saya biasanya menggunakan cygwin ketika di windows tetapi untuk alasan kerja saya terpaksa mengalah sekarang. Saya akan mencoba ini secepatnya!
Heisenbug
@Heisenbug cmdermemiliki keuntungan yang jelas sebagai perangkat portabel dan tidak memerlukan instalasi untuk dilakukan oleh pengguna yang memiliki hak istimewa.
simlev
Anda juga dapat dengan mudah mengubah nama * nix findmenjadi nama lain sepertifnd.exe
phuclv
Saya mengganti nama versi unix, untuk menghindari memodifikasi barang bawaan windows. Tapi terima kasih, yang benar-benar saya lewatkan adalah folder tempat perintah itu disimpan dan jawaban Anda membantu saya.
Heisenbug
Bukankah gnu ditemukan biasanya disebut gfind pada sistem non-gnu?
4

Cmder\vendor\git-for-windows\usr\binditambahkan ke PATH oleh Cmder\vendor\init.bat. Sayangnya, ini ditambahkan pada akhir PATH, sehingga Windows.exe ditemukan pertama kali.

Untungnya, itu mudah diperbaiki. Cukup tambahkan baris ini di dalam Cmder\config\user-profile.cmd:

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

Jerem
sumber
0

Saya telah menginstal smartgit di windows

Kemudian saya menambahkan C: \ Program Files (x86) \ SmartGit \ git \ bin (folder smartgit saya) ke lingkungan path

tekan win + r enter bash. di bash shell Anda dapat menggunakan perintah find. di Cmder Anda juga bisa mengetikkan bash untuk menggunakannya

lovebanyi
sumber