GNU/Linux >> Tutoriels Linux >  >> Linux

',,' peut-il être associé à '..' ?

Les alias ne sont pas destinés à cela, mais vous pouvez créer une fonction appelée cd c'est un wrapper pour le vrai cd . Celui-ci fonctionne pour moi! Mettez-le simplement dans votre .bash_profile ou votre fichier de profil de choix.

cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }

Ou, avec des commentaires et une jolie mise en forme :

cd ()
{
  if [ "$1" = ",," ]; then  # if first argument is ",,"...
    builtin cd ..           # call the builtin cd with ".." instead...
  else
    builtin cd "[email protected]"         # else call builtin cd with original arguments 
  fi
}

MODIFIER

Merci @derobert d'avoir signalé que if then else est mieux ici que && || . Aussi, je viens de réaliser (*facepalm *) que cette implémentation ne fonctionnera que si des arguments non-path (c'est-à-dire -L -P ) ne sont pas le premier argument. Soyez donc prévenu, si vous avez la mauvaise habitude de taper cd -L ,, cela ne va pas vous aider. Et ce n'est pas trivial à gérer correctement, je pense.


ZSH :

Si vous utilisez zsh alias -g ,,=".." est ce dont vous avez besoin, mais cela entraînera l'expansion de ",," partout, pas seulement lorsqu'il est utilisé avec cd .

De man zshbuiltins :

Si le -g flag est présent, définissez un alias global ; les alias globaux sont développés même s'ils n'apparaissent pas en position de commande.

BASH :

Si limité à bash (comme la question est taguée avec bash), lisez ce qui suit :

Il s'agit d'une solution purement alias, comme demandé, cependant cela fera plus que nécessaire, frustrant éventuellement l'utilisateur (voir l'avertissement à la fin de mon message).

Citant man bash :

Si le dernier caractère de la valeur de l'alias est un espace, le mot de commande suivant l'alias est également vérifié pour l'expansion de l'alias.

Il suffit donc d'aliaser cd avec un espace supplémentaire (pour permettre l'expansion de son argument suivant) puis l'alias ,, à .. . Regarde ça

alias cd='cd '
alias ,,='..'

donne exactement ce dont vous avez besoin.

Notez que ceci est correct non seulement pour bash (et son alias implémentation), mais tous les shells compatibles POSIX. Citant un exemple de man 1p alias (le manuel ne décrit pas explicitement cette fonctionnalité, uniquement à travers un exemple) :

  1. Configurez nohup pour qu'il puisse traiter un argument qui est lui-même un nom d'alias :

           alias nohup="nohup "
    

Avertissement : Comme @PeterCordes l'écrit dans son commentaire, cela causera automatiquement autre alias à développer lorsqu'ils sont écrits après cd . Cela peut nécessiter que vous écriviez cd \grep si vous voulez changer de répertoire en un nommé grep mais votre grep est un alias pour grep --color=auto . Sans la barre oblique inverse, cd rapportera l'erreur "trop ​​d'arguments" (vous ne pouvez pas cd à deux répertoires à la fois) !.


Les alias doivent être le premier mot d'une commande. De plus, l'alias doit être remplacé par un mot donc pas d'espaces).

Manuel de référence de Bash :Alias

Les alias permettent de substituer une chaîne à un mot lorsqu'il est utilisé comme premier mot d'une simple commande.

Vous pouvez alias les deux .. et ,, être cd .. .

$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/

Linux
  1. Comment puis-je utiliser des commandes aliasées avec xargs ?

  2. Comment puis-je lier symboliquement un fichier sous Linux?

  3. Commandes de chaîne d'alias Linux (la récursivité peut-elle être évitée ?)

  4. Pouvons-nous utiliser du code C en Python ?

  5. Puis-je jouer à Dota 2 sous Linux ?

Comment créer des alias Bash

13 façons d'aider Linux

Comment créer un alias SSH sous Linux

Commande alias sous Linux

Comment créer un alias sous Linux

Commande d'alias Linux