C'è un modo per sottoporre un alias a un command multi-worded in Unix?

Sto provando ad alias il command sudo shutdown ma nel mio .profile non posso fare solo l' alias "sudo shutdown"="my command" . C'è un altro modo per eseguire alias comandi multi-worded in Unix?

Il nome alias si trova sul lato sinistro, in modo da poter avere un command multiformato a destra:

 alias my_alias="multi worded command" 

EDIT: tuttavia, se si desidera realmente avere nomi di alias di più parole – nell'esempio, se si desidera "sudo shutdown" per essere l'alias, è ansible aggirare questo problema utilizzando la seguente funzionalità alias (nel manuale bash ):

 A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded. 

Quindi, se ancora vuoi usare sudo con altri comandi, ma non con shutdown e se puoi permettersi di shutdown alias a qualcos'altro, puoi avere:

 alias sudo='sudo ' alias shutdown="echo nope" 

Ora, sudo anything_else functionrà come previsto (supponendo che non si dispone di un alias per anything_else , ma se lo si dispone non avrebbe funzionato prima); ma l' sudo shutdown sarà equivalente a sudo echo nope e verrà printingta quella string.

Utilizza una function:

 foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; } 

È ansible utilizzare un trattino come un lavoro in giro: alias sudo-shutdown="your command"

Preferisco solo mettere un file eseguibile in / usr / local / bin (assicuratevi che sia nel tuo path) che contiene i comandi che desidero eseguire. Il nome dello script sarebbe il command che viene visualizzato. assicuratevi 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 

Ciò apre un mondo integer. Potresti poi avere un paio di comandi o anche uno script:

 #!/usr/bin/env python print "hi" # more stuff. .... 

Per citare da: Bash: Spazi nel nome alias

La documentazione di Bash indica "per quasi tutti gli scopi, le funzioni shell sono preferite rispetto agli alias". Ecco una function shell che sostituisce ls e provoca l'output di more se l'argomento è costituito da (solo) -la .

 ls() { if [[ [email protected] == "-la" ]]; then command ls -la | more else command ls "[email protected]" fi } 

Come una linea:

 ls() { if [[ [email protected] == "-la" ]]; then command ls -la | more; else command ls "[email protected]"; fi; } 

Uscita del pipe automatico:

 ls -la