Estoy tratando de alias el comando sudo shutdown
pero en mi .profile
no puedo simplemente hacer alias "sudo shutdown"="my command"
. ¿Hay alguna otra forma de alias de comandos de múltiples palabras en Unix?
Estoy tratando de alias el comando sudo shutdown
pero en mi .profile
no puedo simplemente hacer alias "sudo shutdown"="my command"
. ¿Hay alguna otra forma de alias de comandos de múltiples palabras en Unix?
Respuestas:
El nombre del alias está en el lado izquierdo, por lo que puede tener cualquier comando de múltiples palabras a la derecha:
alias my_alias="multi worded command"
EDITAR: Sin embargo, si realmente desea tener nombres de alias de varias palabras, en su ejemplo, si realmente desea que "sudo shutdown" sea el alias, puede solucionarlo utilizando la siguiente función de alias (en el manual de bash ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Por lo tanto, si aún desea usar sudo
con otros comandos pero no con shutdown
y si puede permitirse el lujo de usar un alias shutdown
para otra cosa, puede tener:
alias sudo='sudo '
alias shutdown="echo nope"
Ahora, sudo anything_else
funcionará como se esperaba (suponiendo que no tenga un alias anything_else
, pero si lo tuviera tampoco hubiera funcionado antes); pero sudo shutdown
será equivalente a sudo echo nope
e imprimirá esa cadena.
alias cd="cd "
con alias de una letra alias X="<directory-with-long-name>"
para saltar de un lugar a otro con mayor facilidad.
alias gti="git "
alias lgo="log"
Usa una función:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
else
caso para que el comando original se ejecute si el segundo parámetro no es bar
:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Para citar de: Bash: espacios en nombre de alias
La documentación de Bash dice "Para casi cualquier propósito, las funciones de shell son preferibles a los alias". Aquí hay una función de shell que reemplaza ls
y hace que la salida se canalice more
si el argumento consiste en (solo) -la
.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Como una línea:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Salida de tubería automática:
ls -la
Prefiero simplemente poner un archivo ejecutable en / usr / local / bin (asegúrese de que esté en su ruta) que luego contenga los comandos que deseo ejecutar. El nombre del script sería el comando que aparece. asegúrese de usar chmod + x / usr / local / bin / your_script.
Entonces el guión podría llamarse 'apagado'
El contenido del cierre del archivo sería:
#!/bin/sh
sudo shutdown
Eso abre un mundo completamente nuevo. Entonces podría tener un par de comandos o incluso un script:
#!/usr/bin/env python
print "hi"
# more stuff. ....