Sto provando ad alias il comando sudo shutdown
ma nel mio .profile
non riesco proprio a fare alias "sudo shutdown"="my command"
. Esiste un altro modo per alias comandi multi-word in Unix?
Sto provando ad alias il comando sudo shutdown
ma nel mio .profile
non riesco proprio a fare alias "sudo shutdown"="my command"
. Esiste un altro modo per alias comandi multi-word in Unix?
Risposte:
Il nome alias si trova sul lato sinistro, quindi puoi avere qualsiasi comando con più parole nella parte destra:
alias my_alias="multi worded command"
EDIT: Tuttavia, se vuoi davvero avere alias nomi di più parole - nel tuo esempio, se vuoi davvero che "sudo shutdown" sia l'alias, puoi aggirare questo usando la seguente funzione alias (nel manuale di bash ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Quindi, se vuoi ancora usare sudo
con altri comandi ma non con shutdown
e se puoi permetterti di fare un alias shutdown
con qualcos'altro, puoi avere:
alias sudo='sudo '
alias shutdown="echo nope"
Ora sudo anything_else
funzionerà come previsto (supponendo che non abbiate un alias per anything_else
, ma se lo avete non avrebbe funzionato prima); ma sudo shutdown
sarà equivalente a sudo echo nope
e stamperà quella stringa.
alias cd="cd "
con alias alias X="<directory-with-long-name>"
a lettera singola per saltare da un posto all'altro più facilmente.
alias gti="git "
alias lgo="log"
Usa una funzione:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
else
caso in modo che il comando originale venga eseguito se il secondo parametro non èbar
:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Per citare da: Bash: spazi nel nome alias
La documentazione di Bash afferma "Per quasi tutti gli scopi, le funzioni della shell sono preferite rispetto agli alias". Ecco una funzione shell che sostituisce ls
e causa il piping dell'output more
se l'argomento è costituito (solo) -la
.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Come one-liner:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Uscita tubo automatica:
ls -la
Preferisco semplicemente inserire un file eseguibile in / usr / local / bin (assicurati che sia nel tuo percorso) che contenga quindi i comandi che desidero eseguire. Il nome dello script sarebbe il comando che compare. assicurati di chmod + x / usr / local / bin / your_script.
Quindi lo script potrebbe essere chiamato 'shutdown'
Il contenuto dell'arresto del file sarebbe:
#!/bin/sh
sudo shutdown
Questo apre un mondo completamente nuovo. Potresti quindi avere un paio di comandi o persino uno script:
#!/usr/bin/env python
print "hi"
# more stuff. ....