vim
a une fonctionnalité vraiment sympa qu'il utilise dans ses chemins quand ils sont un peu longs:
Il abrège le chemin d'accès au document dans l'onglet en haut. Existe-t-il un moyen de faire quelque chose de similaire à cela, donc mon invite bash ne ressemble pas à ceci:
rfkrocktk@work-laptop ~/Documents/Projects/Work/maventest/src/main/java/com/tkassembled/ $
rfkrocktk@work-laptop ~/D/P/W/m/src/main/java/com/tkassembled/ $
? Idéalement, en utilisant un certain seuil pour la longueur maximale d'invite?Réponses:
Essayez ceci :
ou, bash pur:
puis
produit (notez le
~
pour${HOME}
):J'ai amélioré ma réponse grâce à @ enzotib
la source
$PWD
→~
test. Actuellement, siHOME
est/home/ed
etPWD
est/home/edwina
, vous obtenez~wina
dans la version Perl et~/ina
dans la version shell. (2) Votre code shell s'étouffe si le répertoire en cours contient des caractères génériques (c'est-à-dire une extension de nom de chemin); par exemple,PWD
=/abc/*/def
. Vous pouvez résoudre ce problème en ajoutantset -o noglob
ouset -f
. … (Suite)$HOME
(qui se trouve entre guillemets doubles) et$PWD
sont assez bons. Dans la commande shell, les trois dernières références variables shell sont très bien, mais les trois premiers peuvent être"${PWD#$HOME}"
,"$PWD"
et"$p"
. (4) Voir aussi la réponse de mbentley et mes commentaires à ce sujet.Similaire à la réponse @nicerobot, mais un peu plus court:
Cela montrera l'exemple de sortie suivant:
la source
J'aime
PROMPT_DIRTRIM
bash ...changera votre exemple d'invite en ...
Ça marche pour moi.
la source
Pour compléter la réponse d' Enzotib , l'extrait suivant:
/Path/To/Your/Home/
en~/
(donc un chemin sera~/a/b/c
au lieu de/P/T/Y/H/a/b/c
)Utilisez la première lettre d'un «fichier de points» au lieu d'afficher uniquement le point (
/a/./c/d
deviendra/a/.b/c/d
):Assurez-vous d'utiliser des guillemets simples ou bash le développera prématurément.
la source
Le format à utiliser dans votre
PS1
est\W
(voir laPROMPTING
section dans labash
page de manuel).Et vous voudrez peut-être lire les autres options là-bas, vous pouvez faire des trucs sympas avec votre ligne de commande.
la source
J'adore la sortie de l'exemple de nicerobot mais j'ai trouvé un problème. J'ai un répertoire qui contient un trait d'union
A-E
, et c'était-E
comme un argument pourprintf
quand c'était mon répertoire de travail actuel. Pour résoudre ce problème, j'ai ajouté--
au dernierprintf
et ajouté des guillemets autour de la sortie au cas où il n'y aurait rien à produire:la source
-
comme deuxième caractère. S'il est vrai que--
c'est la solution générale au problème des arguments en commençant par-
, une meilleure méthodeprintf
est de direprintf "%s" "${q:1}"
, car cela protège également contre les arguments contenant%
. (Par exemple, essayezPWD
=/home/mbentley/Documents/Projects/Work/maventest/src/main/java/com/abc%def
. (2) Voir aussi mes commentaires sur la réponse de nicerobot.