Estoy tratando de alias el comando sudo shutdownpero en mi .profileno 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 shutdownpero en mi .profileno 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 sudocon otros comandos pero no con shutdowny si puede permitirse el lujo de usar un alias shutdownpara otra cosa, puede tener:
alias sudo='sudo '
alias shutdown="echo nope"
Ahora, sudo anything_elsefuncionará como se esperaba (suponiendo que no tenga un alias anything_else, pero si lo tuviera tampoco hubiera funcionado antes); pero sudo shutdownserá equivalente a sudo echo nopee 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; }
elsecaso 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 lsy hace que la salida se canalice moresi 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. ....