¿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?


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.


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


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


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.

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


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

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.


+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


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.


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.


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 :)


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.


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.


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 ...


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!


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)


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.