¿Cómo crear ls en el símbolo del sistema de Windows?

114

Quiero usar ls en el símbolo del sistema de Windows y hacer que ejecute el comando dir.

¿Cómo puedo hacer eso?

aF.
fuente
4
Algunas de las respuestas son bastante interesantes, pero ¿qué es exactamente lo que está mal con el comando 'dir'?
Matt Donnan
3
@MattDonnan Estoy acostumbrado a ls y pongo una cara graciosa cuando lo hago en Windows. Ya no ^^
aF.
1
@DavidHeffernan porque no existe en Windows?
aF.
1
Claro que sí. Lo uso todos los dias.
David Heffernan
1
@aF. Estoy usando Windows 7, pero ejecuto ls en cualquier versión de Windows. No estoy diciendo que Windows venga con ls, solo que al ser de código abierto y tener buenos puertos de Windows, es trivial ejecutarlo en Windows. Mira GnuWin32.
David Heffernan

Respuestas:

117

Tú podrías:

  • cree un archivo por lotes llamado ls.baty haga que contenga dirsolo el comando
  • agregue el directorio donde ls.batexiste el archivo a su PATHvariable de entorno

A continuación, puede ejecutar lsdesde un símbolo del sistema.

hmjd
fuente
8
¿Por qué no poner ls.bat en la carpeta system32 para que no tenga que agregar la RUTA
David 天宇 Wong
2
@David 天宇 Wong, es muy posible que el usuario no tenga acceso de escritura a esa carpeta.
hmjd
2
¿Esto todavía funciona si lo usa con args ls dir:? Creo que tendría que modificar el ls.batmanejar args ... o usted podría intentar alias: superuser.com/questions/49170/create-an-alias-in-windows-xp
nicorellius
Me gusta: @echo off \ ndir / w% 1% para acercarme al formato ls
mrcrowl
excelente respuesta, no debería ser posible comentar sobre esto ;-)
Bamboomy
248

Puede resolver esta pregunta con un simple comando:

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

Asegúrese de ejecutar cmd.exeprimero como administrador si está en vista y superior

secghost
fuente
14
Ojalá pudiera calificar esto más de una vez. Funcionó maravillosamente.
MrHappyAsthma
4
Esto es mejor porque aún puede usar las opciones de dir.
ajon
17
En su lugar, recomendaría usarlo dir %*para permitir que cualquier número de argumentos de línea de comando se pasen a dir a través de ls.bat. De lo contrario, usando dir %1, como máximo, solo puede usar un argumento cuando use el script ls.
Adaline Simonian
2
@Vartan es una pena que tu comentario sea el primero por debajo del umbral de "mostrar más". Con suerte, @secghost verá esto y modificará su respuesta algún día. Me gustaría agregar que hacerlo @dir %*también eliminará la línea adicional, por lo que es aún más idéntico adir
Capitán Man
1
@CaptainMan ¡Oh, sí! Totalmente olvidado @; ingeniosa sintaxis para evitar un desorden de salida. Sin embargo, sería mucho más fácil si Windows fuera compatible con POSIX. Al menos podemos soñar.
Adaline Simonian
36

Es una vieja pregunta pero para que conste:

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

¡Te da ls y mucho más!

sipi
fuente
7
+1 ls *y dir *no hagas lo mismo, por lo que aplicar un alias a dir es un poco complicado.
Pete Kirkham
2
Esta es la mejor respuesta. Ignore la votación y haga esto.
erizo demente
no olvide agregar C:\Program Files (x86)\GnuWin32\bina su ruta
omikes
18

La forma más fácil que he encontrado es:

  1. Instalar Git para Windows
  2. Agrega el bindirectorio de Git a tu variable Path. El mío estaba ubicado en C:\Program Files\Git\usr\bin.
  3. Inicie un símbolo del sistema y disfrute lsen todo su esplendor.
varagrawal
fuente
3
Gran sugerencia que da acceso a la funcionalidad completa lsy todos sus argumentos opcionales. Solo una pequeña actualización, instalé la última versión de git para Windows y ls.exe ahora se puede encontrar en C: \ Archivos de programa \ Git \ usr \ bin
phil
Sí, o simplemente inicie bash.exe en la carpeta git (en lugar de cmd) y disfrute de un ~ shell completo (con ls).
Johan
fiesta de Git es horrible, me gusta la opción de ruta
omikes
16

Tengo una solución pero está sucia:

Cree un archivo llamado ls.bat que contenga solo "dir".

Ponlo en C: \ windows \ system32 (o cualquier directorio en PATH env var).

¡Eso (debería) funciona!

Editar: Algo más consistente: /superuser/49170/create-an-alias-in-windows-xp

STM
fuente
9

Si tiene Node.js instalado en su sistema, puede instalarlo desde Cash , una biblioteca que escribí para los comandos de Linux en Windows:

npm install cash-ls -g
tres
fuente
la mejor solución para el usuario de Linux en Windows npm install cash-global -g. Sería genial agregar ls -lcomo ll(LL) también.
user2925656
Es un compañero salvador
HebleV
6

El símbolo del sistema de Windows para Vista / 7 permitirá enlaces simbólicos NTFS, ejecute cmd.exe como administrador y luego:

mklink ls %System%\dir.exe

Luego configure su variable de entorno PATH para incluir la ubicación del enlace que acaba de crear.

Si desea algo más que el comando 'ls', debe buscar en cygwin .

EDITAR: me acabo de dar cuenta de dir.exeque no es un programa separado, por lo que esto realmente no funciona. Pero mklinky cygwin son cosas buenas que debe conocer.

buster
fuente
+1, olvidé decir que era Windows XP, pero eso es bueno para Windows Vista / 7 :)
aF.
4

+1 en la publicación anterior que sugiere instalar git para Windows y agregar el directorio bin a sus variables de ruta.

Otra forma en que obtuve touch, ls y muchos otros comandos UNIX trabajando en cmd.exe en mis máquinas con Windows 8 y Windows 7.

Vaya al siguiente sitio para instalar Cygwin

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

Instale la versión de 32 o 64 bits para su sistema. La configuración y los paquetes predeterminados deben incluir lo que necesita para que no tenga que cambiar nada una vez que llegue a la pantalla de paquetes.

Después de la instalación, copie la ruta de la carpeta Cygwin a las variables de ruta de su entorno. Por ejemplo; si instaló cygwin en C: \ Cygwin, agregará lo siguiente a las variables de ruta del sistema de su entorno:

; C: \ Cygwin \ bin

En mi sistema instalé la versión de 64 bits y el nombre de carpeta y la ruta predeterminados eran C: \ cygwin64. Así que agregué lo siguiente a las variables de ruta del entorno de mi sistema:

; C: \ cygwin64 \ bin

Reinicie su terminal si está abierto. Luego escriba ls y verá una lista de directorio.

Consulte lo siguiente si no está familiarizado con la configuración de las variables de entorno PATH:

Enlace de superusuario 1

Enlace de superusuario 2

jtlindsey
fuente
3

Si solo desea que cmd reconozca lscomo un alias para dir, puede usar el doskeycomando (de esta respuesta en superusuario ).

Esto no cambia el manejo del parámetro de línea de comando original del comando dir.

devio
fuente
3

también puede usar cygwin y simplemente usar el comando ls directamente junto con todas las otras herramientas de línea de comandos de Unix a las que podría estar acostumbrado.

Nerdtron
fuente
3

mi murciélago estaba abajo

@dir %*

que puede transferir cli args

ls /b
ls /w

colóquelo en% windir% o en cualquier directorio de su variable% PATH%.

Solo asegúrese de guardar el archivo con codificación ANSI :)

IlPADlI
fuente
2

Recomiendo la siguiente receta.

  1. Utilice DOSKEYy $*para crear su lscomando.
  2. Haga que el comando sea persistente registrándolo en un archivo .bat / .cmd y agregue la ruta del archivo al registro.

Por ejemplo, su comando puede parecer
DOSKEY ls=dir
DOSKEY sublime="C:\Program Files\Sublime Text 2\sublime_text" $*
$*útil para comandos que toman argumentos. Por ejemplo, aquí me gusta poder hacer sublime my_code.c.

El registro de cmd está en HKEY_CURRENT_USER -> Software -> Microsoft -> Command Processor. Cree una entrada con valor de cadena denominada Ejecución automática con la ruta completa del archivo (no la carpeta que lo contiene) como %USERPROFILE%\custom_command.cmd. Luego, cada vez que se ejecute cmd, ¡se cargará su comando!

También puede agregar más cosas útiles al archivo por lotes. Vea aquí una plantilla de ejemplo.

Argyll
fuente
2

Otra solución que funcionó para mí es utilizar UnxUtils , lo que añade múltiples utilidades de los archivos ejecutables (incluyendo ls, sedy grep).

Para usar: descargue el código fuente . Abrir la cremallera. Agregue la UnxUtils\usr\local\wbinruta a la variable PATH de Windows. Inicie una nueva instancia de CMD.

Pájaro
fuente
0

Seguramente ls no funcionaría como un comando de Unix para los lotes. Si marca% 1 para -l o -a, etc. y todas las combinaciones de ellos, funcionaría ...

docowhocool
fuente
0

Puede seguir esta guía: https://gist.github.com/vladikoff/38307908088d58af206b

TL; DR : pase /K path/to/custom/init_cmd.bata su comando de "inicio de shell".

Estoy usando ConsoleZ como mi envoltorio de shell, por lo que en mi caso puedo encontrar la opción de configuración en "pestañas", luego configuro la ruta del shell de "C:\Windows\System32\cmd.exe "/K C:\cmd_init.bat"" esta manera .

¿Dónde C:\cmd_init.batestá el script por lotes que contiene mis macros? Esto es lo que buscaría:

@echo off

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

Perdón por el formato y otros errores, esta es la primera vez que respondo aquí. ¡Espero que ayude!

jred_kai
fuente
0

Alguien que use el Subsistema de Linux para Windows podría llamar lsdesde el bash de Linux. El siguiente comando crea el lscomando en System32:

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

(La función del subsistema de Linux debe habilitarse / instalarse primero)

A. Markóczy
fuente
-2

Aquí está mi código fuente y binario de C # .

Simplemente agregue ls.exe en algún lugar y agregue la ruta a la variable de entorno de ruta.

user3880586
fuente
Un binario es innecesario. Simplemente use un enlace simbólico o un archivo bat.
Christopher Schneider