Jak utworzyć ls w wierszu poleceń systemu Windows?

114

Chcę użyć ls w wierszu poleceń systemu Windows i uruchomić polecenie dir.

Jak mogę to zrobić?

aF.
źródło
4
Niektóre odpowiedzi są dość interesujące, ale co właściwie jest nie tak z poleceniem „dir”?
Matt Donnan,
3
@MattDonnan Jestem przyzwyczajony do ls i robię śmieszną minę, kiedy robię to w oknie. Już nie ^^
aF.
1
@DavidHeffernan, ponieważ nie istnieje w systemie Windows?
aF.
1
Jasne, że tak. Używam tego codziennie.
David Heffernan
1
@aF. Używam Windows 7, ale uruchamiam ls na dowolnej wersji Windows. Nie mówię, że Windows jest wyposażony w ls, tylko że jest open source i ma dobre porty Windows, to trywialne, aby go uruchomić w systemie Windows. Spójrz na GnuWin32.
David Heffernan

Odpowiedzi:

117

Mógłbyś:

  • utwórz plik wsadowy o nazwie ls.bati niech zawiera dirtylko polecenie
  • dodaj katalog, w którym ls.batplik istnieje, do PATHzmiennej środowiskowej

Możesz następnie wykonać lsz wiersza polecenia.

hmjd
źródło
8
dlaczego nie umieścić ls.bat w folderze system32, aby nie trzeba było dodawać PATH
David 天宇 Wong
2
@David 天宇 Wong, jest bardzo możliwe, że użytkownik nie ma prawa do zapisu w tym folderze.
hmjd
2
to działa nadal, jeśli używasz go z argumentami: ls dir? Myślę, że musiałbyś zmodyfikować, ls.bataby obsługiwać argumenty ... lub możesz wypróbować aliasy: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius
Podoba mi się: @echo off \ ndir / w% 1%, aby zbliżyć się do formatu ls
mrcrowl
świetna odpowiedź, nie można tego komentować ;-)
Bamboomy
248

Możesz rozwiązać to pytanie za pomocą jednego prostego polecenia:

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

Jeśli korzystasz cmd.exez Vista i nowszych , najpierw uruchom jako administrator

secghost
źródło
14
Chciałbym móc to ocenić więcej niż raz. Pracował cudownie.
MrHappyAsthma
4
Jest to lepsze, ponieważ nadal możesz używać opcji dir.
ajon
17
dir %*Zalecałbym użycie zamiast tego, aby umożliwić przekazywanie dowolnej liczby argumentów wiersza poleceń do katalogu dir przez ls.bat. W przeciwnym razie, używając dir %1, możesz użyć co najwyżej jednego argumentu, gdy używasz skryptu ls.
Adaline Simonian
2
@Vartan szkoda, że ​​Twój komentarz jest pierwszy poniżej progu „pokaż więcej”. Miejmy nadzieję, że @secghost zobaczy to i kiedyś zmodyfikuje swoją odpowiedź. Chciałbym dodać, że @dir %*spowoduje to również usunięcie dodatkowej linii, dzięki czemu jest jeszcze bardziej identyczny zdir
Kapitan Man
1
@CaptainMan Oh, yeah! Całkowicie zapomniałem o @; sprytna składnia do użycia, aby uniknąć bałaganu na wyjściu. Chociaż byłoby o wiele łatwiej, gdyby system Windows był zgodny z POSIX. Przynajmniej możemy marzyć.
Adaline Simonian
36

To stare pytanie, ale dla przypomnienia:

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

Daje ci ls i dużo więcej!

sipi
źródło
7
+1 ls *i dir *nie rób tego samego, więc aliasing dir to trochę spodni.
Pete Kirkham
2
To najlepsza odpowiedź. Zignoruj ​​głosowanie i zrób to.
obłąkany jeż
nie zapomnij dodać C:\Program Files (x86)\GnuWin32\bindo swojej ścieżki
omikes
18

Najłatwiejszy sposób, jaki znalazłem, to:

  1. zainstalować Git dla Windows
  2. Dodaj binkatalog Git do zmiennej Path. Mój znajdował się wC:\Program Files\Git\usr\bin .
  3. Uruchom wiersz poleceń i ciesz się lsw całej okazałości.
varagrawal
źródło
3
Świetna propozycja dająca dostęp do pełnej funkcjonalności lsi wszystkich jej opcjonalnych argumentów. Tylko niewielka aktualizacja, zainstalowałem najnowszą wersję git dla systemu Windows, a ls.exe można teraz znaleźć w C: \ Program Files \ Git \ usr \ bin
phil
Tak, lub po prostu uruchom bash.exe w folderze git (zamiast cmd) i ciesz się ~ pełną powłoką (z ls).
Johan
git bash jest ohydny, podoba mi się opcja ścieżki
omikes
16

Mam rozwiązanie ale jest brudne:

Utwórz plik o nazwie ls.bat zawierający tylko „dir”.

Umieść go w C: \ windows \ system32 (lub w dowolnym katalogu w PATH env var).

To (powinno) działać!

Edycja: Coś bardziej spójnego: /superuser/49170/create-an-alias-in-windows-xp

STM
źródło
9

Jeśli masz zainstalowany Node.js w swoim systemie, możesz zainstalować go z Cash , biblioteki, którą napisałem dla poleceń Linuksa w systemie Windows:

npm install cash-ls -g
dthree
źródło
Najlepszym rozwiązaniem kiedykolwiek użytkownik Linuksa na oknach npm install cash-global -g. Byłoby wspaniale dodać również ls -ljako ll(LL).
user2925656
To wybawiciel
HebleV
6

Wiersz polecenia systemu Windows dla Vista / 7 pozwoli na dowiązania symboliczne NTFS, uruchom cmd.exe jako administrator, a następnie:

mklink ls %System%\dir.exe

Następnie skonfiguruj zmienną środowiskową PATH, aby zawierała lokalizację właśnie utworzonego łącza.

Jeśli chcesz czegoś więcej niż tylko polecenie „ls”, powinieneś przyjrzeć się cygwin .

EDYCJA - Właśnie sobie sprawę, że dir.exenie jest oddzielnym programem, więc to tak naprawdę nie działa. Ale mklinki cygwin to dobre rzeczy, o których warto wiedzieć.

buster
źródło
+1, zapomniałem powiedzieć, że to Windows XP, ale to jest dobre dla Windows Vista / 7 :)
aF.
4

+1 w poście powyżej sugeruje zainstalowanie git dla Windows i dodanie katalogu bin do zmiennych ścieżki.

Innym sposobem, w jaki uzyskałem kontakt, ls i wiele innych poleceń UNIX działających w cmd.exe na moich komputerach z systemem Windows 8 i Windows 7.

Przejdź do następującej witryny, aby zainstalować Cygwin

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

Zainstaluj wersję 32- lub 64-bitową dla swojego systemu. Domyślne ustawienia i pakiety powinny zawierać to, czego potrzebujesz, więc nie musisz niczego zmieniać, gdy dojdziesz do ekranu pakietów.

Po instalacji skopiuj ścieżkę do folderu Cygwin do zmiennych ścieżki środowiskowej. Na przykład; jeśli zainstalowałeś cygwin w C: \ Cygwin, dodasz następujące zmienne do zmiennych ścieżki systemu:

; C: \ Cygwin \ bin

W moim systemie zainstalowałem wersję 64-bitową, a domyślna nazwa i ścieżka folderu to C: \ cygwin64. Dlatego dodałem następujące elementy do zmiennych ścieżki środowiska systemu:

; C: \ cygwin64 \ bin

Uruchom ponownie terminal, jeśli jest otwarty. Następnie wpisz ls, a zobaczysz listę katalogów.

Jeśli nie wiesz, jak ustawiać zmienne środowiskowe PATH, zapoznaj się z poniższymi informacjami:

Łącze superużytkownika 1

Superuser Link 2

jtlindsey
źródło
3

Jeśli chcesz, aby cmd było rozpoznawane lsjako alias dla dir, możesz użyć doskeypolecenia (z tej odpowiedzi na superużytkowniku ).

Nie zmienia to pierwotnej obsługi parametrów wiersza poleceń polecenia dir.

devio
źródło
3

możesz także użyć cygwin i po prostu użyć polecenia ls bezpośrednio wraz ze wszystkimi innymi narzędziami wiersza poleceń unix, do których możesz być przyzwyczajony.

Nerdtron
źródło
3

mój ls.bat był poniżej

@dir %*

które mogą przenosić argumenty kliknięć

ls /b
ls /w

umieść go w% windir% lub w dowolnym katalogu w zmiennej% PATH%.

Tylko pamiętaj, aby zapisać plik z kodowaniem ANSI :)

IlPADlI
źródło
2

Polecam następujący przepis.

  1. Użyj DOSKEYi, $*aby utworzyćls polecenie.
  2. Utrwal polecenie, zapisując je w pliku .bat / .cmd i dodaj ścieżkę do pliku do rejestru.

Na przykład, twoje polecenie może wyglądać tak, jakby
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*było przydatne w przypadku poleceń, które przyjmują argumenty. Na przykład tutaj lubię móc to zrobićsublime my_code.c .

Rejestr dla cmd znajduje się pod adresem HKEY_CURRENT_USER -> Oprogramowanie -> Microsoft -> Command Processor. Utwórz wpis o wartości ciągu o nazwie AutoRun z pełną ścieżką pliku (bez folderu zawierającego), taką jak%USERPROFILE%\custom_command.cmd . Następnie za każdym razem, gdy uruchomisz cmd, Twoje polecenie zostanie załadowane!

Możesz dodać więcej przydatnych rzeczy do pliku wsadowego. Zobacz tutaj przykładowy szablon.

Argyll
źródło
2

Innym rozwiązaniem, który pracował dla mnie jest użycie UnxUtils , co dodaje wiele narzędzi z plików wykonywalnych (włącznie ls, sedorazgrep ).

Sposób użycia: pobierz kod źródłowy . Rozsunąć suwak. Dodaj UnxUtils\usr\local\wbinścieżkę do zmiennej PATH systemu Windows. Uruchom nową instancję CMD.

Ptak
źródło
0

Z pewnością ls nie działałby jako polecenie unixowe dla partii. Jeśli zaznaczysz% 1 dla -l lub -a itd. I wszystkie ich kombinacje, zadziała ...

docowhocool
źródło
0

Możesz postępować zgodnie z tym przewodnikiem: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : przejdź /K path/to/custom/init_cmd.batdo polecenia „uruchamiania powłoki”.

Używam ConsoleZ jako mojego opakowania powłoki, więc w moim przypadku mogę znaleźć opcję konfiguracji w "zakładkach", a następnie ustawiam ścieżkę powłoki na "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" taką .

Gdzie C:\cmd_init.batjest skrypt wsadowy zawierający moje makra, oto co chciałbym zrobić:

@echo off

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

Przepraszam za formatowanie i inne błędy, odpowiadam tutaj po raz pierwszy. Mam nadzieję, że to pomoże!

jred_kai
źródło
0

Ktoś, kto używa Linux Subsystem for Windows, może zadzwonić lsz Linux bash. Następujące polecenie tworzy lspolecenie w System32:

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

(Funkcja podsystemu Linux musi być najpierw włączona / zainstalowana)

A. Markóczy
źródło
-2

Oto mój kod źródłowy C # i plik binarny .

Po prostu dodaj gdzieś ls.exe i dodaj ścieżkę do zmiennej środowiskowej ścieżki.

user3880586
źródło
Plik binarny jest niepotrzebny. Po prostu użyj linku symbolicznego lub pliku bat.
Christopher Schneider