Come creare ls nel prompt dei comandi di Windows?


114

Voglio usare ls nel prompt dei comandi di Windows e fargli eseguire il comando dir.

Come lo posso fare?


4
Alcune delle risposte sono piuttosto interessanti, ma cosa c'è esattamente di sbagliato nel comando "dir"?
Matt Donnan

3
@ MattDonnan Sono abituato a ls e faccio una faccia buffa quando lo faccio su Windows. Non più ^^
aF.

1
@DavidHeffernan perché non esiste in Windows?
aF.

1
Certo che lo fa. Lo uso tutti i giorni.
David Heffernan

1
@aF. Sto usando Windows 7, ma eseguo ls su qualsiasi versione di Windows. Non sto dicendo che Windows viene fornito con ls, solo che essendo open source e avendo buone porte Windows, è banale eseguirlo su Windows. Guarda GnuWin32.
David Heffernan,

Risposte:


117

Potresti:

  • creare un file batch chiamato ls.bat e fare in modo che contenga dirsolo il comando
  • aggiungi la directory in cui ls.batesiste il file alla tua PATHvariabile d'ambiente

È quindi possibile eseguire lsda un prompt dei comandi.


8
perché non mettere ls.bat nella cartella system32 in modo da non dover aggiungere il PERCORSO
David 天宇 Wong

2
@David 天宇 Wong, è molto probabile che l'utente non abbia accesso in scrittura a quella cartella.
hmjd

2
fa questo lavoro ancora se lo si utilizza con args: ls dir? Penso che dovresti modificare ls.batper gestire gli argomenti ... oppure potresti provare gli alias: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius

Mi piace: @echo off \ ndir / w% 1% per avvicinarsi al formato ls
mrcrowl

ottima risposta, non dovrebbe essere possibile commentare su questo ;-)
Bamboomy

248

Puoi risolvere questa domanda con un semplice comando:

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

Assicurati di eseguire cmd.exeprima come amministratore se sei su Vista e versioni successive


14
Vorrei poterlo valutare più di una volta. Ha funzionato meravigliosamente.
MrHappyAsthma

4
È meglio perché puoi ancora usare le opzioni dir.
ajon

17
Consiglierei dir %*invece di usare per consentire il passaggio di un numero qualsiasi di argomenti della riga di comando a dir tramite ls.bat. Altrimenti, usando dir %1, al massimo puoi usare solo un argomento quando usi lo script ls.
Adaline Simonian

2
@Vartan è un peccato che il tuo commento sia il primo sotto la soglia "mostra di più". Si spera che @secghost lo vedrà e un giorno modificherà la sua risposta. Vorrei aggiungere che l'operazione @dir %*rimuoverà anche la linea extra, quindi è ancora più identica adir
Captain Man

1
@CaptainMan Oh, sì! Totalmente dimenticato @; nifty bit di sintassi da usare per evitare un pasticcio di output. Tuttavia, sarebbe molto più semplice se Windows fosse conforme a POSIX. Almeno possiamo sognare.
Adaline Simonian


18

Il modo più semplice che ho trovato è:

  1. Installa Git per Windows
  2. Aggiungi la bindirectory di Git alla tua variabile Path. Il mio si trovava a C:\Program Files\Git\usr\bin.
  3. Avvia un prompt dei comandi e divertiti lsin tutto il suo splendore.

3
Ottimo suggerimento che dà accesso alla piena funzionalità di lse tutti i suoi argomenti opzionali. Solo un leggero aggiornamento, ho installato l'ultima versione di git per Windows e ls.exe ora può essere trovato in C: \ Programmi \ Git \ usr \ bin
phil

Sì, o avvia semplicemente bash.exe nella cartella git (invece di cmd) e goditi una shell ~ completa (con ls).
Johan

git bash è orribile, mi piace l'opzione path
omikes

16

Ho una soluzione ma è sporca:

Crea un file chiamato ls.bat contenente solo "dir".

Mettilo in C: \ windows \ system32 (o qualsiasi directory in PATH env var).

Questo (dovrebbe) funziona!

Modifica: qualcosa di più coerente: /superuser/49170/create-an-alias-in-windows-xp


9

Se hai Node.js installato sul tuo sistema, puoi installarlo da Cash , una libreria che ho scritto per i comandi Linux su Windows:

npm install cash-ls -g

migliore soluzione in assoluto per utenti Linux su Windows, npm install cash-global -g. Sarebbe bello aggiungere anche ls -lcome ll(LL).
user2925656

È un salvatore compagno
HebleV

6

Il prompt dei comandi di Windows per Vista / 7 consentirà collegamenti simbolici NTFS, eseguire cmd.exe come amministratore quindi:

mklink ls %System%\dir.exe

Quindi imposta la tua variabile d'ambiente PATH per includere la posizione del collegamento appena creato.

Se vuoi qualcosa di più del comando "ls", dovresti esaminare cygwin .

EDIT- Ho appena realizzato che dir.exenon è un programma separato, quindi questo non funziona davvero. Ma mklinke cygwin sono cose buone da sapere.


+1, ho dimenticato di dire che era Windows XP ma va bene per Windows Vista / 7 :)
aF.

4

+1 sul post sopra che suggerisce di installare git per Windows e aggiungere la directory bin alle variabili del percorso.

Un altro modo in cui ho ottenuto touch, ls e molti altri comandi UNIX che funzionano in cmd.exe sulle mie macchine Windows 8 e Windows 7.

Vai al seguente sito per installare Cygwin

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

Installa la versione a 32 o 64 bit per il tuo sistema. Le impostazioni ei pacchetti predefiniti dovrebbero includere ciò di cui hai bisogno in modo da non dover modificare nulla una volta arrivato alla schermata dei pacchetti.

Dopo l'installazione, copia il percorso della cartella Cygwin nelle variabili del percorso dell'ambiente. Per esempio; se hai installato cygwin in C: \ Cygwin, aggiungerai quanto segue alle variabili del percorso di sistema dell'ambiente:

; C: \ Cygwin \ bin

Sul mio sistema ho installato la versione a 64 bit e il nome e il percorso della cartella di default erano C: \ cygwin64. Quindi ho aggiunto quanto segue alle variabili del percorso dell'ambiente di sistema:

; C: \ cygwin64 \ bin

Riavvia il tuo terminale se è aperto. Quindi digita ls e vedrai un elenco di directory.

Vedere quanto segue se non si ha familiarità con l'impostazione delle variabili d'ambiente PATH:

Collegamento superutente 1

Superuser Link 2


3

Se vuoi solo che cmd riconosca lscome alias per dir, puoi usare il doskeycomando (da questa risposta su superuser ).

Ciò non modifica la gestione dei parametri della riga di comando originale del comando dir.


3

potresti anche usare cygwin e usare semplicemente il comando ls direttamente insieme a tutti gli altri strumenti a riga di comando unix a cui potresti essere abituato.


3

il mio ls.bat era sotto

@dir %*

che può trasferire gli argomenti cli

ls /b
ls /w

mettilo in% windir% o in qualsiasi directory nella tua variabile% PATH%.

Assicurati solo di salvare il file con la codifica ANSI :)


2

Consiglio la seguente ricetta.

  1. Usa DOSKEYe $*per creare il tuo lscomando.
  2. Rendi persistente il comando registrandolo in un file .bat / .cmd e aggiungi il percorso del file al registro.

Ad esempio, il tuo comando potrebbe sembrare
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*utile per i comandi che accettano argomenti. Ad esempio, qui mi piace essere in grado di fare sublime my_code.c.

Il registro di cmd si trova in HKEY_CURRENT_USER -> Software -> Microsoft -> Command Processor. Crea una voce con valori di stringa chiamata AutoRun con il percorso completo del file (non la cartella che lo contiene) come%USERPROFILE%\custom_command.cmd . Quindi ogni volta che cmd viene eseguito, il tuo comando verrà caricato!

Puoi anche aggiungere elementi più utili al file batch. Vedi qui per un modello di esempio.


2

Un'altra soluzione che ha funzionato per me è quello di utilizzare UnxUtils , che aggiunge molteplici utilità da file eseguibili (tra cui ls, sed, e grep).

Per usare: scarica il codice sorgente . Unzip. Aggiungi il UnxUtils\usr\local\wbinpercorso alla variabile PATH di Windows. Avvia una nuova istanza CMD.


0

Sicuramente ls non funzionerebbe come comando unix per i batch. Se controlli% 1 per -l o -a ecc. E tutte le loro combinazioni, funzionerebbe ...


0

Puoi seguire questa guida: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : superato/K path/to/custom/init_cmd.bat al comando di "avvio della shell".

Sto usando ConsoleZ come wrapper della shell, quindi nel mio caso posso trovare l'opzione di configurazione in "tabs", quindi ho impostato il percorso della shell in "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" questo modo .

Dov'è C:\cmd_init.batlo script batch contenente le mie macro, ecco cosa sceglierei:

@echo off

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

Ci scusiamo per la formattazione e altri errori, questa è la prima volta che rispondo qui. Spero possa essere d'aiuto!


0

Qualcuno che usa il sottosistema Linux per Windows potrebbe chiamare lsdalla bash di Linux. Il seguente comando crea il lscomando in System32:

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

(La funzione Sottosistema Linux deve essere abilitata / installata prima)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.