Mon terminal a un format d'invite par défaut comme celui-ci:
username @ boxname / path / to / current / directory $
Le code qui le produit ressemble à ceci: (il a aussi des définitions de couleurs)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]'
Si le chemin d'accès au répertoire courant devient trop long, il devient désagréable de travailler avec le terminal car vous coupez constamment les lignes. Dans de tels cas, je préférerais un format qui produit une chaîne plus courte comme celle-ci:
username @ boxname current_dir_name $
Le code qui le produit ressemblerait à ceci (encore une fois avec la couleur):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] $(basename ${PWD}) \$ \[\033[00m\]'
Est-ce que quelqu'un sait comment je pourrais facilement basculer le format de la fenêtre de terminal actuelle d'un style à l'autre en tapant simplement par exemple prompttoggle
:?
bash
gnome-terminal
Rotareti
la source
la source
PROMPT_DIRTRIM=0
etPROMPT_DIRTRIM=1
semble plus simple que de basculer entre différentes valeurs pourPS1
et le résultat est presque le même. Merci pour l'info!PROMPT_DIRTRIM
un pourrait également ajouter des arguments à la commande. Si vous ne passez aucun argument, vous basculez entrePROMPT_DIRTRIM=0
etPROMPT_DIRTRIM=1
et si vous passez un nombre comme argument, vous le définissezPROMPT_DIRTRIM
.promptlen
serait alors un nom plus approprié pour la commande.Réponses:
Stockez vos
PS1
variables longues et courtes sous un nom différent:Assurez-vous de définir l'
PS1
un d'eux initialement:Ensuite, vous pouvez créer un alias comme celui-ci pour basculer entre les deux valeurs PS1:
L'ajout des quatre lignes à votre
~/.bashrc
fichier entraînera la commande disponible dans vos sessions Bash, les voici à nouveau pour une copie plus facile:la source
Vous pouvez utiliser une minuscule
bash
fonction:La fonction ci-dessus correspond si le courant
$PS1
contientbasename
, si oui, alors lePS1
sansbasename
est défini, sinon celui avecbasename
est défini.Mettez la fonction dans votre
~/.bashrc
pour la rendre disponible dans toutes les sessions interactives.Exemple:
la source
Ou ... créez deux très petites fonctions et ajoutez à la fin de votre
~/.bashrc
pour une invite raccourcie, tapez
promptshort
, pour revenir au chemin complet, tapezpromptlong
\W
montre le répertoire de travail courant uniquement$(basename ${PWD})
est surpuissant IMHOVous pouvez combiner en une seule fonction mais "long" et "short" sont descriptifs et les deux ont moins de touches que "toggle";)
Au lieu d'ajouter une ligne pour remplacer PS1, je préfère modifier le code qui le définit (par exemple, décommenter
force_color_prompt=yes
et modifier la ligne après[ "$color_prompt" = yes ]; then
)la source
Voici une
~/.bashrc
définition de fonction que j'utilise personnellement pour réinitialiser / basculer mon invite de l'invite régulière à juste$
. Adaptez-le selon vos besoins.la source
Ceci est une réponse à votre problème (les longs répertoires cassent la ligne de commande) et non spécifiquement à votre question (comment changer l'invite de commande à la volée).
J'ai résolu ce problème il y a des années avec cette invite:
Ce que cela fait:
Cela vous donne tout l'espace dont vous avez besoin pour votre commande, ne la déplace pas correctement lorsque vous êtes dans une structure de répertoire profonde, ne modifie pas la ligne de frappe avec des codes de couleur (évitant les bugs étranges qui se produisent parfois), tout en vous donnant la couleur indice sur la fin de la sortie d'une commande et sur la suivante:
la source