Pregunta

¿Cómo paso los argumentos de la línea de comando a un alias?Aquí hay una muestra:

alias mkcd='mkdir $1; cd $1;'

Pero en este caso, $xx se traduce en el momento de creación del alias y no en tiempo de ejecución.Sin embargo, he creado una solución utilizando una función de shell (después de buscar un poco en Google) como se muestra a continuación:

function mkcd(){
  mkdir $1
  cd $1
}

Sólo quería saber si hay alguna manera de crear alias que acepten parámetros CL.
Por cierto, uso 'bash' como mi shell predeterminado.

¿Fue útil?

Solución

Usted encontró el camino: crear una función en lugar de un alias. La cáscara C tiene un mecanismo para hacer argumentos a los alias, pero bash y el shell Korn no lo hacen, debido a que el mecanismo de función es más flexible y ofrece la misma capacidad.

Otros consejos

Sólo para reiterar lo que se ha publicado para otros proyectiles, en golpe las siguientes obras:

alias blah='function _blah(){ echo "First: $1"; echo "Second: $2"; };_blah'

Al ejecutar el siguiente:

blah one two

proporciona la salida a continuación:

First: one
Second: two

No se puede en ksh, pero se puede en CSH.

alias mkcd 'mkdir \!^; cd \!^1'

En ksh, la función es el camino a seguir. Pero si realmente quería usar alias:

alias mkcd='_(){ mkdir $1; cd $1; }; _'

Para citar a la página del manual de bash:

  

No existe un mecanismo para el uso de argumentos en el texto de reemplazo. Si   Se necesitan argumentos, una función de shell se debe utilizar (ver FUNCIONES   a continuación).

Así que parece que haya respondido a su propia pregunta - utilizar una función en lugar de un alias

También puede encontrar este comando útil:

mkdir dirname && cd $_

donde nombredir es el nombre del directorio que desea crear

La forma más fácil, es no utilizar la función de alias. todavía se puede llamar a una función en cualquier momento desde la CLI. En bash, puede simplemente añadir nombre de la función () {} comando carga el mismo que un alias.

function mkcd() { mkdir $1; cd $1 ;}

No está seguro acerca de otras conchas

En realidad no se puede hacer lo que quiera con los alias del golpe, ya que los alias son estáticos. En su lugar, utilice la función que ha creado.

Mira aquí para obtener más información: http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/ . (Sí sé que es mactips.org, pero se trata de Bash, por lo que no se preocupe.)

He encontrado que las funciones no se pueden escribir en el archivo ~ / .cshrc .. Aquí, en la que toma argumentos alias

Por ejemplo, argumentos que se pasan a 'encontrar' comando

alias fl "find . -name '\!:1'"     
Ex: >fl abc

donde ABC es el argumento pasa como: 1

Esto funciona en ksh:

$ alias -x mkcd="mkdir \$dirname; cd \$dirname;"
$ alias mkcd
mkcd='mkdir $dirname; cd $dirname;'
$ dirname=aaa 
$ pwd
/tmp   
$ mkcd
$ pwd
/tmp/aaa

La opción "-x" hace que el alias sea "exportado": el alias es visible en subcapas.

Y tenga en cuenta que los alias definidos en un script no son visibles en ese script (porque los alias se expanden cuando se carga un script, no cuando se interpreta una línea).Esto se puede resolver ejecutando otro archivo de script en el mismo shell (usando punto).

Creo que son capaces de hacerlo con las funciones del shell si está utilizando bash: http://www.cyberciti.biz/faq/ Linux-Unix-pass-argumento-a-alias-comando /

  

Esta es una simple función de ejemplo usando pitón. Usted puede pegar en ~ / .bashrc
   Tienes que tener un espacio después del primer corchete izquierdo
   El comando python tiene que estar entre comillas dobles para conseguir la sustitución de variables
   No se olvide que coma al final

función count () {-c pitón "para num en xrange ($ 1): num de impresión";}

$ count 6
0
1
2
3
4
5
$

Un alias vacío ejecutará sus argumentos:

alias DEBUG=
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top