2010-10-12 19 views
9

J'ai essayé de définir des alias dans mon fichier .bashrc. Celui-ci ...Comment échapper des espaces dans un alias bash?

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

... obtient l'erreur suivante ...

-bash: cd:/Volumes/180: Aucun fichier ou répertoire

. ..when j'essaie "cd $ umusic".

J'ai essayé différentes méthodes pour échapper cet espace dans le nom du répertoire, en vain. (180 \ gram, 180% 20gram, guillemets simples, guillemets, sans guillemets.) Je réalise que la solution la plus simple est de renommer le répertoire en "180gram", mais j'aimerais savoir comment résoudre ce problème particulier.

Je suis sur un Mac, si cela fait une différence.

Répondre

14

Votre utilisation de la commande export fait umusic une variable d'environnement et non un alias . La commande export exporte les variables d'environnement nommées sur le reste de la ligne de commande, éventuellement avec de nouvelles valeurs. Il s'agit donc d'exporter une variable d'environnement nommée alias (qui n'est probablement pas définie) et une nommée umusic.

Étant donné que vous l'expansion d'une variable d'environnement, la coquille fait la substitution suivante:

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

qui génère l'erreur que vous obtenez parce que l'espace est pas cité. Si au contraire vous faites:

cd "$umusic" 

alors l'expansion est

cd "/Volumes/180 gram/Uncompressed/" 

qui est ce que vous attendez. Cependant, l'utilisation d'une variable d'environnement pour cela peut être encore un peu trop de travail, puisque vous devez citer l'expansion. Au lieu de cela, essayez cet alias:

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

que vous courriez avec juste

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

Merci, et une question connexe: Je pensais que les alias étaient censés servir de chemins de fichiers abrégés. Est-ce correct d'inclure une commande dans un alias? – parisminton

+2

Un alias shell est une commande abrégée; ils n'ont aucune connexion particulière aux chemins de fichiers (sauf qu'ils peuvent contenir des chemins, comme le fait la suggestion de Greg). –

+0

Notez que la technique alias 'alias umusic =" cd '/ Volumes/180 gram/Uncompressed' "' n'autorise pas l'interprétation du tilde comme home. Au lieu du tilde ('~ /'), vous devez utiliser '/ home/yourUsername /' et cette technique fonctionne très bien. – cameronroytaylor