J'essaie d'alias la commande sudo shutdown
mais dans mon .profile
je ne peux pas simplement faire alias "sudo shutdown"="my command"
. Existe-t-il un autre moyen d'alias des commandes multi-mots sous Unix?
J'essaie d'alias la commande sudo shutdown
mais dans mon .profile
je ne peux pas simplement faire alias "sudo shutdown"="my command"
. Existe-t-il un autre moyen d'alias des commandes multi-mots sous Unix?
Réponses:
Le nom d'alias est sur le côté gauche, vous pouvez donc avoir n'importe quelle commande multi-mots à droite:
alias my_alias="multi worded command"
EDIT: Cependant, si vous voulez vraiment avoir des noms d'alias de plusieurs mots - dans votre exemple, si vous voulez vraiment que "sudo shutdown" soit l'alias, vous pouvez contourner cela en utilisant la fonctionnalité d'alias suivante (dans le manuel bash ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Donc, si vous voulez toujours utiliser sudo
avec d'autres commandes mais pas avec shutdown
et si vous pouvez vous permettre d'alias shutdown
à autre chose, vous pouvez avoir:
alias sudo='sudo '
alias shutdown="echo nope"
Maintenant, sudo anything_else
cela fonctionnera comme prévu (en supposant que vous n'avez pas d'alias pour anything_else
, mais si vous l'avez, cela n'aurait pas fonctionné auparavant non plus); mais sudo shutdown
sera équivalent à sudo echo nope
et il affichera cette chaîne.
alias cd="cd "
alias alias X="<directory-with-long-name>"
à une seule lettre pour passer d'un endroit à l'autre plus facilement.
alias gti="git "
etalias lgo="log"
Utilisez une fonction:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
else
cas afin que la commande d'origine s'exécute si le deuxième paramètre n'est pas bar
:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Pour citer: Bash: Espaces dans le nom d'alias
La documentation de Bash indique "Pour presque tous les usages, les fonctions shell sont préférées aux alias." Voici une fonction shell qui remplace ls
et fait en sorte que la sortie soit dirigée more
si l'argument consiste en (uniquement) -la
.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
En une ligne:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Sortie automatique des tuyaux:
ls -la
Je préfère simplement mettre un fichier exécutable dans / usr / local / bin (assurez-vous qu'il se trouve dans votre chemin) qui contient ensuite les commandes que je souhaite exécuter. Le nom du script serait la commande qui apparaît. assurez-vous de chmod + x / usr / local / bin / your_script.
Ainsi, le script pourrait être appelé «arrêt»
Le contenu de l'arrêt du fichier serait:
#!/bin/sh
sudo shutdown
Cela ouvre un tout nouveau monde. Vous pourriez alors avoir quelques commandes ou même un script:
#!/usr/bin/env python
print "hi"
# more stuff. ....