J'utilise Windows et Ubuntu en parallèle et je fais des trucs de console sur les deux.
Sous Windows, je peux faire
C:\Users\Thomas>cd..\..
C:\>
Cependant, sous Linux, cela ne fonctionne pas, ni avec des barres obliques inverses ni avec des barres obliques.
21:17:10 $ cd../..
bash: cd../..: No such file or directory
Depuis que je fais souvent cette erreur, j'ai essayé de définir un alias .bash_aliases
pour cette situation:
alias cd../..='cd ../..'
alias cd..\..='cd ../..'
Quand je commence un nouveau bash, je reçois
21:16:26 $ bash
bash: alias: `cd../..': invalid alias name
Comment pourrais-je configurer des alias cd..\..
et cd../..
correctement?
Le 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....
.
/
caractère. La\
version, en revanche, devrait fonctionner correctement.man bash
: Les caractères /, $, `et = et l'un des métacaractères du shell ou les caractères entre guillemets répertoriés ci-dessus peuvent ne pas apparaître dans un nom d'alias.man alias
et ça n'existait pas. Si vous donnez cette réponse, je l'accepterai.Réponses:
/
et\
figurent parmi les caractères qui ne peuvent pas apparaître dans un nom d'alias Bash. Deman bash
:Pour contourner ce problème, vous pouvez passer à Zsh, qui permet à la fois:
la source
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:
Vous ne pouvez pas utiliser de barres obliques inverses dans un alias ou un nom de fonction. Le caractère barre oblique inverse cite le caractère suivant, il
cd..\..
est donc analysé égalementcd....
, bien avant que cette chaîne ne soit recherchée comme nom de commande. Si vous voulez appeler une commande nomméecd..\..
, vous devez tapercd..\\..
,'cd..\..'
ou quelque chose d' équivalent. De plus, un nom de commande qui a été cité de quelque façon que ce soit n'est pas pris en compte pour la recherche d'alias, vous ne pouvez donc jamais utiliser un nom d'alias contenant une barre oblique inverse. Bash n'autorise pas non plus les barres obliques inverses dans les noms de fonction. Puisquecd..\..
est analysé en tant quecd....
, vous pouvez définir une fonction appeléecd....
(comme ci-dessus).Si vous utilisez la
cd
commande, vous devrez taper l'espace après, comme n'importe quelle autre commande. Mais vous pouvez enregistrer la saisie en ne tapant pascd
du tout. Définissez l'autocd
option avec la ligne suivante dans~/.bashrc
:Ensuite, vous pouvez taper un nom de répertoire sur la ligne de commande, et «exécuter» ce répertoire y changera.
la source
shopt
chose, je manquerai probablement cette fonctionnalité sous Windows bientôt :-)autocd
était l'une des raisons pour lesquelles je suis passé à zsh, quand bash ne l'avait pas. La seule façon décente d'utiliser Windows est de toute façon d'installer Cygwin, avec zsh."Vous ne pouvez pas utiliser de barres obliques dans un alias ou un nom de fonction "? Ce sont des nouvelles 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:
Naturellement,
cd../..
c'est aussi un bon nom de fonction. Une barre oblique peut être utilisée dans un nom de fonction shell.Quant à la version barre oblique inverse, 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 le résultatcd....
. Alors définissez cela et vous pouvez faire tout ce que vous vouliez. Je vous en prie.la source
Si vous souhaitez conserver les alias, pourquoi ne pas simplement:
Ou, si vous avez besoin d'aller chemin de retour:
Je ne sais pas à quel point cela vous aide à rester mentalement synchronisé avec votre cerveau Windows, mais cela semble toujours ê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 se font sous Windows.)
la source