Unix-Befehl find auf cmder.exe in Windows


10

Ich habe den Cmder Shell Emulator für Windows installiert .

Funktioniert gut, aber ich kann den Befehl find von Unix nicht verwenden. Anscheinend, wenn ich tippe:

'find .'

Im Terminal wird versucht, Windows FIND zu verwenden und diesen Fehler auszugeben:

FIND: Parameter format not correct

Ich würde wirklich gerne find verwenden, einen Hinweis darauf, wie es funktioniert?


1
Sie müssten festlegen, welches Verzeichnis findsich zuvor C:\Windows\System32in der PATHUmgebungsvariablen befindet (in dem Windows gefunden wird) . Dies wird im Allgemeinen als keine gute Idee angesehen, da dies andere Programme verwirrt, die eine Standard-Windows-Umgebung erwarten. Vielmehr sollten Sie sehen, ob Sie ein Startskript in Cmder festlegen und das Skript so etwas wieset PATH=C:\path\to\folder\with\unix\find;%PATH%
Bob

Ich weiß es nicht cmder, aber unter Linux / Unix which -a findwerden alle Programme angezeigt, die mit dem Befehl find ausgeführt werden könnten. Identifizieren Sie das Unix find. Verwenden Sie dann den vollständigen Pfad oder ordnen Sie die Reihenfolge der PATHVerzeichnisse neu an, oder legen Sie einen Alias ​​fest, falls dies cmderunterstützt wird. Sie können auch die Windows umbenennen find.exezu wfind.exe. Wenn es emuliert bash, können Sie das eingebaute verwenden type -a find.
AFH



@AFH which -a findkehrt zurück /c/WINDOWS/system32/find /usr/bin/find. Leider laufen die /usr/bin/findRenditen The system cannot find the path specified.. Es scheint, dass hier der eigentliche Windows-Pfad benötigt wird. Durch Ausführen werden typedie Fenster gestartet type, und es wird anscheinend cmdernicht die Unix-ähnliche Version bereitgestellt.
Simlev

Antworten:


11

Die einfachste Lösung besteht darin, einen Alias ​​für die findausführbare Datei im cmderInstallationsordner zu erstellen :

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

Darf ich vorschlagen, dass Sie auch Cygwin ausprobieren, wo es unter anderem sofortfind funktioniert. Das ist es, was ich verwendet habe, um den Ort der cmderLieferung zu bestimmen find.exe.

Ein großes Lob an @Bob und @AFH für ihre aufschlussreichen Kommentare und an @ Lưu Vĩnh Phúc für den Vorschlag einer weiteren absolut einfachen Lösung:

Benennen Sie das * nix findin einen anderen Namen umfnd.exe

Dies könnte tatsächlich preferrable über einen Aliasnamen erstellen, weil cmderAliase in Windows 10 nicht arbeiten , es sei denn Use legacy consolein ausgewählt ist cmdEigenschaften (siehe , wie man es tun).


Danke für den Vorschlag. Scheint der beste Weg zu sein. Normalerweise benutze ich Cygwin unter Windows, aber aus beruflichen Gründen bin ich gezwungen, mich gerade zu bewegen. Ich werde es so schnell wie möglich versuchen!
Heisenbug

@ Heisenbug cmderhat den offensichtlichen Vorteil, dass es portabel ist und keine Installation durch einen privilegierten Benutzer erforderlich ist.
Simlev

Sie können das * nix auch einfach findin einen anderen Namen umbenennen wiefnd.exe
phuclv

Ich habe die Unix-Version umbenannt, um zu vermeiden, dass Windows native Inhalte geändert werden. Aber danke, was mir wirklich gefehlt hat, war der Ordner, in dem diese Befehle gespeichert wurden, und Ihre Antwort hat mir geholfen.
Heisenbug

Wird gnu find auf Nicht-gnu-Systemen nicht normalerweise gfind genannt?

4

Cmder\vendor\git-for-windows\usr\binwird dem PFAD durch hinzugefügt Cmder\vendor\init.bat. Leider wird es am Ende des PFADS hinzugefügt , sodass die find.exe von Windows zuerst gefunden wird.

Zum Glück ist es einfach zu beheben. Fügen Sie einfach diese Zeile hinzu Cmder\config\user-profile.cmd:

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


0

Ich habe Smartgit in Windows installiert

Dann füge ich C: \ Programme (x86) \ SmartGit \ git \ bin (mein Smartgit-Ordner) zur Pfadumgebung hinzu

Drücken Sie win + r, um Bash einzugeben. In der Bash-Shell können Sie den Befehl find verwenden. In Cmder können Sie auch bash eingeben, um es zu verwenden

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.