2010-10-12 18 views
9

Ho cercato di impostare alcuni alias nel mio file .bashrc. Questo ...Come uscire da spazi vuoti in un alias bash?

export alias umusic="/Volumes/180 gram/Uncompressed/" 

... ottiene il seguente errore ...

-bash: cd:/Volumes/180: Nessun file o directory

. ..quando provo "cd $ umusic".

Ho provato vari metodi di escape di quegli spazi nel nome della directory, inutilmente. (180 \ gram, 180% 20gram, virgolette singole, virgolette doppie, senza virgolette.) Mi rendo conto che la soluzione più semplice è rinominare la directory in "180gram", ma mi piacerebbe sapere come risolvere questo particolare problema.

Sono su un Mac, se questo fa alcuna differenza.

risposta

14

L'utilizzo del comando export sta facendo umusic una variabile d'ambiente e non un alias. Il comando export esporta le variabili di ambiente denominate sul resto della riga di comando, facoltativamente con nuovi valori. Quindi sta esportando una variabile di ambiente denominata alias (che probabilmente non è impostata) e una denominata umusic.

Dato che si sta espandendo una variabile di ambiente, la shell esegue le seguenti operazioni di sostituzione:

cd $umusic 
cd /Volumes/180 gram/Uncompressed/ 

che genera l'errore che si ottiene, perché lo spazio non è citato. Se invece lo fai:

cd "$umusic" 

allora l'espansione è

cd "/Volumes/180 gram/Uncompressed/" 

che è quello che ti aspetti.

Tuttavia, l'utilizzo di una variabile di ambiente per questo potrebbe essere ancora un po 'eccessivo, dal momento che è necessario citare l'espansione. Invece, provare questo alias:

alias umusic="cd '/Volumes/180 gram/Uncompressed'" 

quale si desidera eseguire con un solo

$ umusic 
$ pwd 
/Volumes/180 gram/Uncompressed 
+0

Grazie, e una domanda correlata: Ho pensato alias dovevano servire come percorsi di file abbreviati. Va bene includere un comando in un alias? – parisminton

+2

Un alias di shell è un comando abbreviato; non hanno alcuna connessione particolare ai percorsi dei file (eccetto che possono contenere percorsi, come fa il suggerimento di Greg). –

+0

Si noti che la tecnica alias 'alias umusic =" cd '/ Volumes/180 gram/Uncompressed' "' non consente alla tilde di essere interpretata come home. Invece della tilde ('~ /'), devi usare '/ home/yourUsername /' e questa tecnica funziona alla grande. – cameronroytaylor