12 votes

Puis-je utiliser cd../ comme nom d'alias ?

J'utilise Windows et Ubuntu en parallèle et je fais des choses en console sur les deux.

Sous Windows, je peux faire un

C:\Users\Thomas>cd..\..
C:\>

Cependant, sous Linux, cela ne fonctionne pas, ni avec les barres obliques inversées ni avec les barres obliques inversées.

21:17:10 $ cd../..
bash: cd../..: No such file or directory

Puisque je fais souvent cette erreur, j'ai essayé de définir un alias dans .bash_aliases pour cette situation :

alias cd../..='cd ../..'
alias cd..\..='cd ../..'

Lorsque je démarre un nouveau bash, j'obtiens

21:16:26 $ bash
bash: alias: `cd../..': invalid alias name

Comment puis-je créer des alias pour cd..\.. y cd../.. correctement ?

El cd..\.. semble avoir des problèmes avec le caractère d'échappement :

21:39:43 $ cd..\..
bash: cd....: command not found

Cela ne fonctionne pas, même si je définis un autre alias pour cd.... .

13voto

Schof Points 952

Vous ne pouvez pas utiliser de barres obliques dans un nom d'alias. Bash les autorise cependant dans les noms de fonctions, vous pouvez donc en faire une fonction :

cd../.. () { cd ../..; }

Vous ne pouvez pas utiliser de barres obliques inversées dans un alias ou un nom de fonction. Le caractère antislash cite le caractère suivant, donc cd..\.. est interprété comme cd.... bien avant que cette chaîne ne soit considérée comme un nom de commande. Si vous voulez appeler une commande nommée cd..\.. vous devez taper cd..\\.. , 'cd..\..' ou quelque chose d'équivalent. De plus, un nom de commande qui a été cité de quelque manière que ce soit n'est pas pris en compte pour la recherche d'alias, donc vous ne pouvez jamais utiliser un nom d'alias contenant une barre oblique inverse. Bash n'autorise pas non plus les backslashs dans les noms de fonctions. Depuis cd..\.. est interprété comme cd.... vous pouvez définir une fonction appelée cd.... (comme ci-dessus).

Si vous utilisez le cd vous devrez taper l'espace qui suit, comme pour toute autre commande. Mais vous pouvez économiser de la frappe en ne tapant pas cd du tout. Réglez le autocd avec la ligne suivante dans ~/.bashrc :

shopt -s autocd

Vous pouvez alors taper un nom de répertoire sur la ligne de commande, et "l'exécution" de ce répertoire le transformera en celui-ci.

~/some/sub/directory$ ../..
~/some$

11voto

fkraiem Points 11558

/ y \ font partie des caractères qui ne peuvent pas apparaître dans un nom d'alias Bash. De man bash :

Les personnages / , $ , `, et = et aucun des métacaractères Shell ou caractères de citation énumérés ci-dessus ne peut apparaître dans un nom d'alias.

Comme solution de rechange, vous pouvez passer à Zsh, qui permet les deux :

% grep 'alias.*cd' .zshrc 
alias cd../..='cd ../..'
alias cd..\\..='cd ../..'
% pwd
/Users/firas
% cd../..
% pwd
/ 
% cd
% pwd
/Users/firas
% cd..\..
% pwd
/

5voto

alexis Points 1018

"Vous ne pouvez pas utiliser de barres obliques dans un alias". ou fonction nom" ? C'est une nouvelle pour moi. J'utilise la fonction Shell suivante depuis des années sur Linux et OS X bash, et je n'ai jamais eu de problème :

function ../.. { cd ../..; echo "$PWD"; }

Naturellement, cd../.. est également un bon nom de fonction. Une barre oblique peut être utilisé dans un nom de fonction Shell.

Quant à la version avec barre oblique inversée, vous ne pouvez pas l'intégrer dans un alias ou un nom de fonction, mais vous n'êtes pas obligé de le faire : Lorsque vous tapez cd..\.. bash interprète la barre oblique inverse comme un échappement et essaie d'exécuter la commande suivante cd.... . Définissez donc cela et vous pourrez faire tout ce que vous cherchiez. Vous êtes les bienvenus.

function cd.... { cd ../..; }

2voto

mark Points 681

Si vous voulez conserver les alias, pourquoi ne pas le faire :

alias   ..='cd ..'
alias  ...='cd ../../' 
alias ....='cd ../../../'

Ou, si vous devez aller chemin arrière :

alias   .3='cd ../../../' 
alias   .4='cd ../../../../'
alias   .5='cd ../../../../../'
# how far back do you need to go on a normal basis..?

Je n'ai aucune idée de la mesure dans laquelle cela vous aide à rester mentalement en phase avec votre cerveau Windows, mais cela semble tout de même être un moyen simple de procéder. (Au moins pour ceux d'entre nous qui ont la chance de ne pas avoir à se soucier de la façon dont les choses sont faites sous Windows).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X