Parfois, lorsque je veux changer de répertoire parent, je tape par erreur cd ,,
au lieu de cd ..
. Est-ce que je peux faire en sorte que ces déclarations soient les mêmes? Je n'utilise jamais de virgule dans mes commandes. Idéalement, je voudrais alias ,,
to ..
. Quand j'ai essayé ça, ça n'a pas marché. Pourquoi ça n'a pas marché? Comment puis-je aborder ce problème?
$ alias ,,=..
$ cd ,,
-bash: cd: ,,: No such file or directory
$ ,,
se plaindre, en tant que tel:bash: ..: Is a directory
. (En d'autres termes, ce n'est pas un exécutable.)alias 'cd ,,'='cd ..'
. Eh bien, vous pourriez, mais vous devriez l'exécutercd\ ,,
pour en faire un mot.)alias -g ,,=..
etcd ,,
fonctionne comme vous le souhaitez.find / -type d -exec ln -s .. {}/,, \;
... ;-)Réponses:
ZSH:
Si vous en
zsh
alias -g ,,=".."
avez besoin, c’est ce dont vous avez besoin, mais cela entraînera l’extension de ",," partout, pas seulement aveccd
.De
man zshbuiltins
:FRAPPER:
Si restreint à
bash
(comme la question est marquée avec bash ), lisez ce qui suit:C'est une solution purement alias, comme demandé, mais cela fera plus que nécessaire, voire frustrer l'utilisateur (voir l'avertissement à la fin de mon message).
Citant
man bash
:Par conséquent , assez de pour alias
cd
avec un espace supplémentaire (pour permettre l' expansion de son argument suivant) puis alias,,
à..
. Regarde çadonne exactement ce dont vous avez besoin.
Notez que ceci est correct non seulement pour
bash
(et sonalias
implémentation), mais pour tous les shells compilant POSIX. Citant un exemple deman 1p alias
(le manuel ne décrit pas cette fonctionnalité explicitement, mais uniquement à travers un exemple):Avertissement: Comme @PeterCordes écrit dans son commentaire, d' autres alias se développeront automatiquement lorsqu'ils seront écrits après
cd
. Il se peut que vous deviez écrirecd \grep
si vous voulez changer de répertoire en un nommégrep
mais que votre nomgrep
soit un aliasgrep --color=auto
. Sans la barre oblique inverse,cd
signalera une erreur "trop d'arguments" (vous ne pouvez pas utilisercd
deux répertoires à la fois) !.la source
cd
dans un répertoire de son code source. Ou d'autres collisions entre vos alias et les noms de répertoires communs. Commecd dr
élargiraitcd disown -r
pour moi, avec cet alias. Quoi qu'il en soit, il est préférable de remplacer la fonction intégréecd
avec une fonction pour ce genre de choses, IMO.Les alias ne sont pas conçus pour cela, mais vous pouvez créer une fonction appelée
cd
encapsuleur pour le réelcd
. Celui-ci fonctionne pour moi! Il suffit de le mettre dans votre.bash_profile
ou votre fichier de profil de choix.Ou, avec des commentaires et un joli formatage:
MODIFIER
Merci @derobert pour nous avoir signalé que
if then else
c’est mieux ici que&& ||
. De plus, je viens de me rendre compte ( * facepalm *) que cette implémentation ne fonctionnera que si des arguments autres que le chemin d'accès (ie-L -P
) ne sont pas le premier argument. Soyez donc averti, si vous avez la mauvaise habitude de taper,cd -L ,,
cela ne vous aidera pas. Et ce n’est pas trivial de le gérer correctement, je pense.la source
$1
avant d'exécuter les fonctions intégrées:cd () { [ "$1" = ",," ] && set .. ; cd "$@"; }
set .. "${@:2}"
, ou vous perdez quoi que ce soit après le premier argument...
le premier argument n'est pas nécessaire.cd
enbash
peut prendre une variété d'options (-P
,-L
,-@
,-e
).Les alias doivent être le premier mot d'une commande. En outre, l'alias doit être substitué à un mot donc pas d'espaces).
Vous pouvez alias les deux
..
et,,
êtrecd ..
.la source
cd ..
..
dans Bash consiste àshopt -s autocd
changer de répertoire en saisissant simplement son nom. Bien sûr, vous avez toujours le pseudonyme de,,
Une autre façon de
..
modifier le répertoire consiste à activer laautocd
fonctionnalité de Bash :Cela changera automatiquement le répertoire lorsque vous en saisirez le nom:
Vous devez toujours faire un alias pour
,,
mais cela peut être fait avec justealias ,,=..
la source
Il existe déjà
une application avecun script pour cela: https://github.com/shyiko/commacd (aucune affiliation avec Stanley Shuyiko).Pour répondre à votre question, le script aliases virgules à trois fonctions qu’il définit:
la source