¿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 está traduciendo en el tiempo de creación de alias y no en tiempo de ejecución. Sin embargo, he creado una solución alternativa usando una función de shell (después de buscar en Google un poco) como a continuación:
función mkcd () { mkdir $ 1 cd $ 1 }
Solo quería saber si hay una manera de crear alias que acepten parámetros CL.
Por cierto, uso 'bash' como mi shell predeterminado.
mkdir mydirectoryname && cd $_
Respuestas:
Encontraste el camino: crea una función en lugar de un alias. El shell C tiene un mecanismo para hacer argumentos a los alias, pero bash y el shell Korn no, porque el mecanismo de función es más flexible y ofrece la misma capacidad.
fuente
.bashrc
archivo. Por ejemplo, # cree un alias que tome el número de puerto por el usuario alias serve = "python -m SimpleHTTPServer $ 1" Después de realizar el cambio en el archivo .bashrc, asegúrese de ingresar el siguiente comando. ~ $ source .bashrc Deberías poder usar esto así ~ $ serve 8998Solo para reiterar lo que se ha publicado para otros shells, en Bash los siguientes trabajos:
Ejecutando lo siguiente:
Da el resultado a continuación:
fuente
Bash
reemplazar$1
y$2
con los parámetros pasados a la función. Las comillas simples le dicen a Bash que no haga esto.function blah(){ echo "First: $1"; echo "Second: $2"; }
No puedes en ksh, pero puedes en csh.
En ksh, la función es el camino a seguir. Pero si realmente realmente quisieras usar un alias:
fuente
csh
generalmente no es lo que una persona moderna debería querer usar. La indirección alias-que-crea-una-función-luego-ejecuta-esa-función es relativamente popular, pero por lo que puedo decir, no ofrece ningún beneficio sobre una función adecuada. (La función debería citar correctamente su argumento, de todos modos). Votación a favor.Para citar la página de manual de bash:
Parece que has respondido tu propia pregunta: usa una función en lugar de un alias
fuente
También puede encontrar útil este comando:
mkdir dirname && cd $_
donde dirname es el nombre del directorio que desea crear
fuente
$_
es la salida del último comando unix.stackexchange.com/a/271693/169772Descubrí que las funciones no se pueden escribir en
~/.cshrc
archivo. Aquí en alias que toma argumentospor ejemplo, argumentos pasados al comando 'buscar'
donde abc es el argumento pasado como!: 1
fuente
!:1
significaba. Tuve que desplazarme hacia abajo para ver aquí que era el argumento. Una buena respuesta no deja más preguntas, incluso si no fuera por el tipo de shell OP.La forma más fácil es usar la función, no el alias. aún puede llamar a una función en cualquier momento desde el cli. En bash, solo puede agregar el nombre de la función () {comando} se carga igual que un alias.
No estoy seguro acerca de otras conchas
fuente
En realidad, no puede hacer lo que quiere con los alias Bash, ya que los alias son estáticos. En su lugar, use la función que ha creado.
Vea aquí para 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, así que no te preocupes).
fuente
Esto funciona en ksh:
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 secuencia de comandos en el mismo shell (usando punto).
fuente
Creo que puede hacerlo con funciones de shell si está utilizando bash: http://www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/
fuente
función count () {python -c "para num en xrange ($ 1): print num";}
fuente
Un alias vacío ejecutará sus argumentos:
fuente