Alias ​​de comando en el símbolo del sistema?

18

¿Cómo puedo hacer alias de comando en el símbolo del sistema de Windows como lo haría con bash?

Me enteré doskeyen un hilo del foro , así que puedo hacer algo como:

doskey ls=dir /b

... y ahora el comando lsactúa un poco más como lsen Unix. (Escribo con lstanta frecuencia cmdque ni siquiera es gracioso).

Pero, ¿cómo hago para que esto se quede entre sesiones? Se va la próxima vez que abro cmd.exe. (¿Hay algo como eso .bash_profile?)

Benjamin Oakes
fuente
Lamento hacerlo fuera de tema, pero puede beneficiarse instalando una copia de cygwin y tener todas las herramientas de Unix en su reposamanos
bubu
Sí, me gustaría, pero no creo que sea una opción (y podría ser más trabajo de lo que vale). Mis máquinas principales son Linux y OS X: solo estoy probando algunos programas en Windows en este momento.
Benjamin Oakes
1
No hay mucho que hacer. cygwin.com/setup.exe es todo lo que necesita para instalar. simplemente descargue y haga clic en siguiente. todo está ahí y es muy simple. tampoco hay mucho que configurar.
bubu
Hrm ... bueno, lo intentaré. Sin embargo, la máquina ya tiene muchos problemas ...;)
Benjamin Oakes
44
a menos que su MS-DOS sea la versión 6.22 o menos, no está ejecutando DOS. Por su mención de cmd.exe, supongo que está hablando del shell de comandos básico WinNT / 2k / XP / etc.
quack quijote

Respuestas:

0

Cygwin se puede utilizar en este caso, aunque esta no es exactamente una respuesta sobre el tema.

http://www.cygwin.com/ CygWin
Descargar: http://cygwin.com/setup.exe

Para acceder fácilmente en Windows, puede poner c: \ cygwin \ bin en su ruta.

tenga en cuenta que hay algunos comandos que chocan con el software de Windows que no es equivalente, por ejemplo, find (1) vs find.exe: find (1) enumera todos los archivos y subdirectorios, mientras que find.exe funciona como grep.

otra opción es acceder

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun o HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

revisa

 cmd.exe /? 
para más detalles

bubu
fuente
Hrm ... no parece usar ninguna de mis rutas de Windows ... creo que tendré que jugar con esto más tarde. (Nunca he usado cygwin en serio antes). Gracias por tu ayuda hasta ahora.
Benjamin Oakes
agregar la ruta de cygwin en la variable de entorno de ruta de windows le permite utilizar las herramientas en el entorno de cygwin en cmd.exe; solo tenga en cuenta que HAY advertencias, por ejemplo, find.exe choca con el comando find proporcionado por cygwin.
bubu
¿Por qué el voto negativo? No tengo idea.
bubu
34

Es bastante fácil configurar alias permanentes en el símbolo del sistema de Windows utilizando el @DOSKEYcomando y la HKCU\Software\Microsoft\Command Processoropción Autorun.

Guía rápida paso a paso:

  1. Cree un nuevo archivo por lotes, llámelo Alias.bat. Copie / pegue el texto a continuación. CONSEJO: Recomiendo crear una C:\Bincarpeta para todas sus herramientas de línea de comandos.
  2. Abre el registro HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Agregue un valor de cadena con nombre Autoruny establezca el valor en la ruta absoluta del Alias.batarchivo.
  4. Hecho.

Este archivo por lotes se ejecutará cada vez que abra un símbolo del sistema.

Contenidos de Alias.bat

DOSKEY ls=DIR $* 
DOSKEY cp=COPY $* 
DOSKEY xcp=XCOPY $*
DOSKEY mv=MOVE $* 
DOSKEY clear=CLS
DOSKEY h=DOSKEY /HISTORY
DOSKEY alias=if ".$*." == ".." ( DOSKEY /MACROS ) else ( DOSKEY $* )

Ahora puede escribir alias(es decir DOSKEY /MACROS) para ver la lista actual de alias / macros.

Para agregar nuevos alias para la sesión actual solo usted puede usar alias name=command.

Dennis
fuente
1
Simple, fácil de actualizar una vez configurado, ¡me gusta mucho este!
Urda
Desafortunadamente, he dejado de usar este alias, ya que el @DOSKEYcomando causa un bloqueo al salir de Autodesk Maya 2010. Probablemente haya una solución, por ejemplo, verificar si el proceso principal es Maya, sin embargo, no he pasado tiempo investigando.
Dennis
9

También un poco fuera de tema:

Use PowerShell en lugar de la cmd.exelínea de comando. La buena noticia es que PowerShell tiene el equivalente de .bash_profile, y se ejecuta como la cmd.exelínea de comandos. Viene con una función de generación de alias incorporada. La mala noticia es que hay una pequeña curva de aprendizaje si quieres hacer algo más complicado que simples cmd.execomandos.

Por cierto, lsse define como un alias de dir, directamente de la caja.

mkClark
fuente
¿Por qué nadie me dijo que usara power-shell antes? Es mucho mejor para tantas cosas.
Andrés
3

Hay una entrada de registro en la HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunque le permite ejecutar un comando cuando inicia un indicador de cmd. Esto incluye un archivo por lotes.

Phoshi
fuente
Es posible que desee apuntar a HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun ya que otros no tendrán la misma ID de usuario que usted.
bubu
@bubu: Oh, muy cierto, lo siento. Descubrí que al buscar en mi registro, no pensé.
Phoshi
1

Sugiero instalar dos versiones de estos comandos directamente desde este enlace .

Simple, ligero, eficiente, etc. Lo he estado usando por un tiempo, ¡me hace feliz! Cygwin es un poco grande para lo esencial que necesito.

usuario248939
fuente
0

Intenta ponerlos en autoexec.bat. No estoy seguro, tendrás que probarlo. Poner autoexec.bat en C: \

0fnt
fuente
Parece que no funciona ...
Benjamin Oakes
0

Coloque sus alias en un archivo llamado, tal vez, alias.cmd y agréguelo /K \path\to\alias.cmdal acceso directo que usa para comenzar cmd.exe.

Referencia

Pausado hasta nuevo aviso.
fuente
0

Seré nigromante por un momento y levantaré este hilo de entre los muertos. Su respuesta no fue satisfactoria para mí. Sabía que había una mejor manera. Me metí en hacer e incluir archivos de murciélagos y tratar de descubrir cómo hacer que la bola de espagueti funcionara bien, no funcionó bien. De todos modos de vuelta a Google fui ..

También encontré esto Cómo agregar nuevos alias / comandos de DOS y crear un atajo de teclado para un administrador de DOS. Funciona muy bien, debería funcionar en 98-7 (un sistema de numeración un poco divertido, pero bueno, es Windows). Espero que ayude a aquellos en este hilo y a los que Google envía de esta manera.

De esta manera no es tan simple como Alias, y tampoco lo es doskey. Una vez configurada, se trata del mismo esfuerzo.

También agregaré que partes de esto fusionadas con la respuesta de Dennis Williamson son mucho mejores. Puede tener entornos de shell para múltiples versiones de la misma aplicación, digamos php 4 para sus scripts anteriores y php 5 para su servidor de prueba.

De todos modos, esto funcionó mucho mejor para mí.

bot de rescate
fuente
0

Resolverlo configurando un entorno RUTA

crear archivo ls.c

ingrese el siguiente código

int main()
{
system("dir /b");
return 0;
}

en ls.c y compila el archivo:

$gcc ls.c -o ls

se crea un archivo ejecutable ls.exe

crea un directorio, nómbralo como cmdline_tools

$mkdir cmdline_tools

copie ls.exe al directorio

establecer la ruta del directorio en el entorno RUTA [copie la ubicación del directorio y péguelo en la RUTA]

C:/cmdline_tools

Abra su cmd.exe y escriba

$ ls

Funciona como comando dir. También puede hacer para otros comandos de la misma manera. Si no, háganoslo saber.

Albert Mundu
fuente
0

CMD con alias / funciones de doskey y bashrc (de cygwin> bash), las barras diagonales también funcionan en cmd (win7 en adelante)

  1. Cree un shorcut en cmd para usar cmdrc.cmd

    cmd -a "/ k% HOME% \ cmdrc.cmd c: \"

2 C:> cat% HOME% / cmdrc.cmd

:: Override same named builtin windows commands
:: To override these aliases, prefix with '@', eg. @date will not use alias.
@doskey date=c:\cygwin\bin\date.exe $*
@doskey echo=c:\cygwin\bin\echo.exe $*
@doskey mkdir=c:\cygwin\bin\mkdir.exe $*
@doskey rmdir=c:\cygwin\bin\rmdir.exe $*
@doskey find=c:\cygwin\bin\find.exe $*
@doskey time=c:\somedir\time.exe $*

:: using a particular rsync with some options
@doskey rsync=c:\cygwin\bin\rsync.exe -e "ssh -F %HOME%/.ssh/config" $*   

@doskey cp='cp -vi %*'
@doskey ..=cd ..
@doskey ...=cd ../.. 

:: Or use bashrc (bash aliases, bash functions):

:: eg. In bashrc we have "alias cpvi='cp -vi'"

@doskey cpvi=bash -ic "set +u; cpvi $*"  

:: now cpvi is callable from cmd.

:: Install clink_x64 if you want readline editing in cmd
mosh
fuente