La configuration actuelle de mon invite bash indique le chemin d'accès complet au répertoire actuel. Ceci est agaçant lorsque je suis au fond d’une arborescence de répertoires, car l’invite devient si longue que chaque commande se termine à la ligne suivante. Comment puis-je lui faire montrer que la dernière partie du chemin?
Voici ce que j'ai dans mon .bashrc
:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
la source
case
déclaration la remplace lorsque je suis sur un xterm, et le problème semble être liéPWD
à laPROMPT_COMMAND
ligne. Savez-vous ce que je devrais y mettre?\w
(minuscule) le définit sur chemin complet,\W
(majuscule) coupe le bit final. PROMPT_COMMAND définit le titre de la fenêtre dans un xterm. vérifiez votre variable TERM; si elle ne commence pas par "xterm" ou "rxvt", alors PROMPT_COMMAND ne sera même pas exécuté.La commande de remplacement bash simple est
Pour afficher le dernier répertoire, vous pouvez simplement le faire
${PWD/*\//}
, c'est-à-dire trouver tout ce qui précède le dernier et y compris le dernier '/
' et le remplacer par rien.Sur ma machine Ubuntu, j'utilise:
la source
Ma solution consiste à afficher les trois répertoires supérieurs et inférieurs 2 lorsqu'il y a plus de 5 répertoires.
Donc, mon invite (qui a aussi d'autres informations) ressemble à ceci:
quand mon pwd est réellement
Mon invite PS1 est configurée comme suit:
git_branch
est une fonction qui montre la branche courante de git, je la garde dans mes fichiers dot, c’est:la source
Ma solution à cela est légèrement différente en ce qui concerne la façon de l'exporter. Je pensais donc la partager ici:
Créez une autre variable de chaîne d'invite; PS5 et exportez la chaîne suivante dans votre fichier
.profile
/.bash_profile
:Maintenant, chaque fois que vous devez utiliser le PS raccourci, exécutez simplement:
eval $PS5
Ou mieux encore, créez un alias dans votre
.bash_aliases
fichier: (grâce à @muru )source
encore une fois, et maintenant vous pouvez simplement taperPS5
pour basculer.la source
La plupart des autres solutions ne fonctionnaient pas pour moi sur tous les systèmes d'exploitation partageant mes fichiers de points: AIX, Windoze et Linux. Les ports bash étaient d'anciennes versions qui ne prenaient pas en charge certaines constructions et je ne voulais pas créer un autre processus (c'est
sed
-à- direawk
, etc.) qui est sensiblement coûteux sous cygwin.Ce qui suit est long mais performant:
Je veux que ça crache:
Remarquez l'absence de barre oblique dans la dernière ligne, ce qui me plait. En outre, vous pouvez cracher les 3 derniers répertoires en changeant l'argument en
DIR_LAST
.De plus, j'ai essayé de faire cela avec une regex et
BASH_REMATCH
bash v3 ne semblait pas aimer les parens et je ne pouvais pas trouver comment leur échapper correctement. Soupir.la source
Je crois que cette option est beaucoup plus facile, simplement en faisant:
Donc, assignez ceci à la variable PS1 dans votre fichier .bashrc:
la source
ajoutez le code suivant à la fin de votre ~ / .bashrc
la source