Wie erstelle ich ls in der Windows-Eingabeaufforderung?

114

Ich möchte ls in der Windows-Eingabeaufforderung verwenden und den Befehl dir ausführen lassen.

Wie kann ich das machen?

aF.
quelle
4
Einige der Antworten sind sehr interessant, aber was genau ist mit dem Befehl 'dir' falsch?
Matt Donnan
3
@ MattDonnan Ich bin nur an ls gewöhnt und mache ein lustiges Gesicht, wenn ich es unter Windows mache. Nicht mehr ^^
aF.
1
@ DavidHeffernan, weil es in Windows nicht existiert?
aF.
1
Sicher tut es das. Ich benutze es jeden Tag.
David Heffernan
1
@aF. Ich verwende Windows 7, aber ich führe ls auf jeder Windows-Version aus. Ich sage nicht, dass Windows mit ls geliefert wird, nur dass es Open Source ist und gute Windows-Ports hat. Es ist trivial, es unter Windows auszuführen. Schau dir GnuWin32 an.
David Heffernan

Antworten:

117

Du könntest:

  • Erstellen Sie eine Batch-Datei mit dem Namen ls.batund lassen Sie sie nur den dirBefehl enthalten
  • Fügen Sie das Verzeichnis, in dem die ls.batDatei vorhanden ist, zu Ihrer PATHUmgebungsvariablen hinzu

Sie können dann lsan einer Eingabeaufforderung ausführen .

hmjd
quelle
8
Warum nicht die Datei ls.bat in den Ordner system32 legen, damit Sie den PFAD nicht hinzufügen müssen
David 天宇 Wong
2
@ David 天宇 Wong, es ist sehr wahrscheinlich, dass der Benutzer keinen Schreibzugriff auf diesen Ordner hat.
hmjd
2
funktioniert das noch, wenn du es mit args verwendest : ls dir? Ich denke , man müßte das ändern ls.batargs zu handhaben ... oder Sie könnten versuchen Aliase: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius
Ich mag: @echo off \ ndir / w% 1%, um näher an ls Format zu kommen
mrcrowl
ausgezeichnete Antwort, es sollte nicht möglich sein, dies zu kommentieren
;-)
247

Sie können diese Frage mit einem einfachen Befehl lösen:

echo @dir %* > %systemroot%\system32\ls.bat

Stellen Sie sicher, dass Sie zuerst cmd.exeals Administrator ausgeführt werden, wenn Sie sich in Vista und höher befinden

secghost
quelle
14
Ich wünschte, ich könnte dies mehr als einmal bewerten. Hat wunderbar funktioniert.
MrHappyAsthma
4
Dies ist besser, da Sie weiterhin die Verzeichnisoptionen verwenden können.
Ajon
17
Ich würde empfehlen, dir %*stattdessen zu verwenden, damit eine beliebige Anzahl von Befehlszeilenargumenten über ls.bat an dir übergeben werden kann. Andernfalls dir %1können Sie bei Verwendung des ls-Skripts höchstens ein Argument verwenden.
Adaline Simonian
2
@Vartan Es ist eine Schande, dass Ihr Kommentar der erste unter dem Schwellenwert "Mehr anzeigen" ist. Hoffentlich wird @secghost dies eines Tages sehen und ihre Antwort ändern. Ich möchte hinzufügen, dass das Tun @dir %*auch die zusätzliche Zeile entfernt, so dass es noch identischer ist mitdir
Captain Man
1
@ CaptainMan Oh, ja! Völlig vergessen @; Eine raffinierte Syntax, um ein Durcheinander der Ausgabe zu vermeiden. Es wäre jedoch viel einfacher, wenn Windows POSIX-kompatibel wäre. Zumindest können wir träumen.
Adaline Simonian
36

Es ist eine alte Frage, aber fürs Protokoll:

http://gnuwin32.sourceforge.net/packages/coreutils.htm

Gibt dir ls und noch viel mehr!

sipi
quelle
7
+1 ls *und dir *mache nicht das Gleiche, also ist Aliasing Dir ein bisschen Hosen.
Pete Kirkham
2
Dies ist die beste Antwort. Ignorieren Sie die Abstimmung und tun Sie dies.
wahnsinniger Igel
Vergessen Sie nicht C:\Program Files (x86)\GnuWin32\bin, Ihrem Pfad hinzuzufügen
omikes
18

Der einfachste Weg, den ich gefunden habe, ist:

  1. Installieren Sie Git für Windows
  2. Fügen Sie das binVerzeichnis von Git zu Ihrer Pfadvariablen hinzu. Meins befand sich in C:\Program Files\Git\usr\bin.
  3. Starten Sie eine Eingabeaufforderung und genießen Sie die lsganze Pracht.
Varagrawal
quelle
3
Großartiger Vorschlag, der Zugriff auf die volle Funktionalität lsaller optionalen Argumente bietet . Nur ein kleines Update, ich habe die neueste Version von Git für Windows installiert und die ls.exe kann jetzt in C: \ Programme \ Git \ usr \ bin
phil
Ja, oder starten Sie einfach bash.exe im git-Ordner (anstelle von cmd) und genießen Sie eine ~ vollständige Shell (mit ls).
Johan
Git Bash ist schrecklich, ich mag die
Pfadoption
16

Ich habe eine Lösung, aber es ist schmutzig:

Erstellen Sie eine Datei mit dem Namen ls.bat, die nur "dir" enthält.

Legen Sie es in C: \ windows \ system32 (oder einem beliebigen Verzeichnis in PATH env var) ab.

Das (sollte) funktioniert!

Bearbeiten: Etwas konsistenteres: /superuser/49170/create-an-alias-in-windows-xp

STM
quelle
9

Wenn Sie Node.js auf Ihrem System installiert haben , können Sie es aus Cash installieren , einer Bibliothek, die ich für Linux-Befehle unter Windows geschrieben habe:

npm install cash-ls -g
drei
quelle
Die beste Lösung aller Zeiten für Linux-Benutzer unter Windows npm install cash-global -g. Wäre toll ls -lals ll(LL) auch hinzuzufügen .
user2925656
Es ist ein Retter Kumpel
HebleV
6

Die Windows-Eingabeaufforderung für Vista / 7 ermöglicht symbolische NTFS-Links. Führen Sie dann cmd.exe als Administrator aus:

mklink ls %System%\dir.exe

Richten Sie dann Ihre PATH-Umgebungsvariable so ein, dass sie den Speicherort des gerade erstellten Links enthält.

Wenn Sie mehr als nur den Befehl 'ls' möchten, sollten Sie sich mit cygwin befassen .

EDIT- Nur realisiert dir.exeist kein separates Programm, also funktioniert das nicht wirklich. Aber mklinkund Cygwin sind gute Dinge zu wissen.

Buster
quelle
+1, ich habe vergessen zu sagen, dass das Windows XP war, aber das ist gut für Windows Vista / 7 :)
aF.
4

+1 im obigen Beitrag, in dem vorgeschlagen wird, git für Windows zu installieren und das Verzeichnis bin zu Ihren Pfadvariablen hinzuzufügen.

Auf andere Weise habe ich touch, ls und viele andere UNIX-Befehle erhalten, die in cmd.exe auf meinen Windows 8- und Windows 7-Computern funktionieren.

Gehen Sie zur folgenden Site, um Cygwin zu installieren

https://www.cygwin.com/install.html

Installieren Sie die 32- oder 64-Bit-Version für Ihr System. Die Standardeinstellungen und Pakete sollten das enthalten, was Sie benötigen, damit Sie nichts ändern müssen, sobald Sie zum Paketbildschirm gelangen.

Kopieren Sie nach der Installation den Cygwin-Ordnerpfad in Ihre Umgebungspfadvariablen. Beispielsweise; Wenn Sie cygwin in C: \ Cygwin installiert haben, fügen Sie Ihren Umgebungssystempfadvariablen Folgendes hinzu:

; C: \ Cygwin \ bin

Auf meinem System habe ich die 64-Bit-Version installiert und der Standardordnername und -pfad war C: \ cygwin64. Daher habe ich meinen Pfadvariablen für die Systemumgebung Folgendes hinzugefügt:

; C: \ cygwin64 \ bin

Starten Sie Ihr Terminal neu, wenn es geöffnet ist. Geben Sie dann ls ein und Sie sehen eine Verzeichnisliste.

Beachten Sie Folgendes, wenn Sie mit dem Festlegen von PATH-Umgebungsvariablen nicht vertraut sind:

Superuser Link 1

Superuser Link 2

jtlindsey
quelle
3

Wenn Sie nur möchten, dass cmd lsals Alias ​​für erkannt wird dir, können Sie den doskeyBefehl verwenden (aus dieser Antwort im Superuser ).

Dies ändert nichts an der ursprünglichen Behandlung der Befehlszeilenparameter des Befehls dir.

devio
quelle
3

Sie können auch cygwin verwenden und den Befehl ls direkt zusammen mit allen anderen Unix-Befehlszeilentools verwenden, an die Sie möglicherweise gewöhnt sind .

Nerdtron
quelle
3

Mein ls.bat war unten

@dir %*

das kann cli args übertragen

ls /b
ls /w

Legen Sie es in% windir% oder einem beliebigen Verzeichnis in Ihrer% PATH% -Variablen ab.

Stellen Sie einfach sicher, dass Sie die Datei mit ANSI-Codierung speichern :)

IlPADlI
quelle
2

Ich empfehle das folgende Rezept.

  1. Verwenden Sie DOSKEYund $*, um Ihren lsBefehl zu erstellen .
  2. Machen Sie den Befehl dauerhaft, indem Sie ihn in einer .bat / .cmd-Datei aufzeichnen und den Pfad der Datei zur Registrierung hinzufügen.

Beispielsweise kann Ihr Befehl
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*für Befehle, die Argumente annehmen, nützlich sein. Zum Beispiel möchte ich hier in der Lage sein zu tun sublime my_code.c.

Die Registrierung für cmd befindet sich unter HKEY_CURRENT_USER -> Software -> Microsoft -> Befehlsprozessor. Erstellen Sie einen Eintrag mit Zeichenfolgenwert namens AutoRun mit dem vollständigen Pfad der Datei (nicht des enthaltenen Ordners), z %USERPROFILE%\custom_command.cmd. Jedes Mal, wenn cmd ausgeführt wird, wird Ihr Befehl geladen!

Sie können der Batch-Datei auch weitere nützliche Dinge hinzufügen. Siehe hier für eine Beispiel - Vorlage.

Argyll
quelle
2

Eine andere Lösung , die für mich gearbeitet , ist die Verwendung UnxUtils , die mehrere Dienstprogramme von ausführbaren Dateien hinzufügt (einschließlich ls, sedund grep).

Verwendung: Quellcode herunterladen . Entpacken. Fügen Sie den UnxUtils\usr\local\wbinPfad zur Windows-PATH-Variablen hinzu. Starten Sie eine neue CMD-Instanz.

Vogel
quelle
0

Sicherlich würde ls nicht als Unix-Befehl für die Stapel funktionieren. Wenn Sie% 1 auf -l oder -a usw. und alle Kombinationen davon prüfen, würde es funktionieren ...

docowhocool
quelle
0

Sie können dieser Anleitung folgen: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : pass /K path/to/custom/init_cmd.batauf Ihren "Shell - Start" -Befehl.

Ich verwende ConsoleZ als Shell-Wrapper. In meinem Fall finde ich die Setup-Option unter "Registerkarten". Dann setze ich den Shell-Pfad "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" so .

Wo C:\cmd_init.batist das Batch-Skript, das meine Makros enthält? Ich würde Folgendes tun:

@echo off

doskey ls=dir /b
rem other macro stuff..

Entschuldigung für die Formatierung und andere Fehler, dies ist meine erste Antwort hier. Ich hoffe, es hilft!

jred_kai
quelle
0

Jemand, der Linux Subsystem für Windows verwendet, könnte lsvon der Linux-Bash aus aufrufen . Der folgende Befehl erstellt den lsBefehl in System32:

echo @bash -c "ls %*" > %systemroot%\system32\ls.bat

(Die Linux-Subsystemfunktion muss zuerst aktiviert / installiert werden.)

A. Markóczy
quelle
-2

Hier ist mein C # -Quellcode und meine Binärdatei .

Fügen Sie einfach irgendwo ls.exe hinzu und fügen Sie den Pfad zur Umgebungsvariablen path hinzu.

user3880586
quelle
Eine Binärdatei ist nicht erforderlich. Verwenden Sie einfach einen Symlink oder eine Bat-Datei.
Christopher Schneider