Question Masquer le répertoire de travail actuel dans le terminal


Par défaut, l'invite du terminal affiche quelque chose comme:

user@system:/folder1/folder2/folder3/folder4$

plus vous entrez dans le système de fichiers, moins il reste d'espace pour saisir les commandes. Puis-je changer cela pour montrer seulement quelque chose comme:

>

Je veux dire, je peux juste taper pwd montrer où je suis. ;)


112
2017-12-09 09:16


origine


Cela devrait être un commentaire mais je ne peux pas commenter, désolé. En plus de cacher le répertoire en cours, la valeur PS1 suivante séparera visuellement vos commandes bash: export PS1="\n___" - Hello World
expérimenté sur les solutions d'Oli. Les polices de couleur fonctionnent bien dans le terminal: export PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:' - linbianxiaocao


Réponses:


export PS1='\u@\h: '

Cela se traduit par oli@bert: pour mon invite.

Si vous voulez vraiment quelque chose d'aussi minimaliste que vous le demandez, essayez ceci:

export PS1='> '

Vous pouvez attacher cela à la fin de votre ~/.bashrc fichier pour le faire persister entre les connexions.

Vous pouvez également faire preuve de créativité avec certaines couleurs. Voici ce que j'utilise sur mes serveurs:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

Donner (il est plus facile de voir sur un fond noir complet):

My terminals

Glossaire des caractères acceptables dans PS1


129
2017-12-09 09:22



Vous pouvez également faire en sorte que newlines (\ n) fasse partie de l’invite, vous pouvez donc placer toutes les informations et les '>' sur des lignes séparées. - ak2
J'ai d'abord rencontré ce type de personnalisation "extrême" de shell dans msysGit, croyez-le ou non. J'ai été immédiatement converti au monde de bash. Ayant toutes les informations (mon répertoire actuel, la branche actuelle extraite du dépôt Git, l’état de l’index Git…), c’était vraiment génial. Je compte faire quelque chose de similaire avec l'installation d'Ubuntu que j'ai récemment installée sur un ancien ordinateur portable (avec Windows XP). - dgw
Quel est le format utilisé pour mettre en place les couleurs? - Syed Rakib Al Hasan


Juste pour développer la réponse d'Oli (et pour avoir un signet pour ces symboles courts):

L'invite bash (stefano@linux:~$) n'est que le premier d'une série de questions vous pourriez voir:

  • PS1: l'invite par défaut que vous voyez lorsque vous ouvrez un shell

    Sa valeur est stockée dans une variable d’environnement appelée PS1. Pour voir sa valeur, type

    echo $PS1

    Cela vous donnera quelque chose comme

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
    

    Pour le changer, vous pouvez définir une nouvelle valeur pour la variable:

    export PS1="\u > "
    

    Cela se traduira par une invite comme celle-ci:

    stefano > 
    
  • PS2: est votre invite secondaire. Cela s'affiche quand une commande n'est pas terminée. Type echo "asd et appuyez sur Entrée, l'invite secondaire vous permettra d'entrer plus lignes jusqu'à ce que vous fermez les guillemets.

  • PS3 est l'invite utilisée pour select(2)

  • PS4 est l'invite utilisée pour alt text  empiler des traces (défaut: +)

Pour rendre les modifications permanentes, vous les ajoutez à la fin de .bash_profile (ou .bashrc, voir cette question) dans ton répertoire de base

Voici une liste plus ou moins complète de raccourcis que vous pouvez utiliser pour composer ces éléments:

  • \a Le caractère 'cloche'
  • \A 24h de temps
  • \d Date (par exemple, mar 21 déc)
  • \e Le personnage 'évasion'
  • \h Nom d'hôte (jusqu'au premier ".")
  • \H Nom d'hôte
  • \j Nombre de travaux en cours d'exécution (ps)
  • \l Tty actuel
  • \n Saut de ligne
  • \t Heure (hh: mm: ss)
  • \T Heure (hh: mm: ss, format 12h)
  • \r Retour de voiture
  • \s Shell (c'est-à-dire bash, zsh, ksh ..)
  • \u Nom d'utilisateur
  • \v Version Bash
  • \V Chaîne complète de publication de Bash
  • \w Répertoire de travail actuel
  • \W Dernière partie du répertoire de travail en cours
  • \! Indice actuel dans l'histoire
  • \# Index de commande
  • \$ Un "#" si vous êtes root, sinon "$"
  • \\ Contournement littéral
  • \@ Heure (format 12h avec am / pm)

Vous pouvez bien sûr insérer une chaîne littérale et n'importe quelle commande:

export PS1="\u \$(pwd) > "

$(pwd) se tient à la place de "la sortie de" pwd.

  • Si la substitution de commande est échappée, comme dans \$(pwd), il est évalué chaque fois que l'invite est affichée, sinon, comme dans $(pwd), il n'est évalué qu'une seule fois lors du démarrage de bash.

Si vous souhaitez que votre invite comporte des couleurs, vous pouvez utiliser les codes de couleur de bash pour le faire. Le code se compose de trois parties:

40;33;01
  • La première partie avant le point-virgule représente le style de texte.

    • 00 = aucun
    • 01 = gras
    • 04 = souligner
    • 05 = clignote
    • 07 = inverser
    • 08 = caché
  • Les deuxième et troisième parties sont la couleur et la couleur de fond:

    • 30 = noir
    • 31 = rouge
    • 32 = vert
    • 33 = jaune
    • 34 = bleu
    • 35 = magenta
    • 36 = cyan
    • 37 = blanc

Chaque partie peut être omise, en partant de la gauche. c'est-à-dire que "1" signifie gras, "1; 31" signifie gras et rouge. Et vous obtiendrez votre terminal pour imprimer en couleur en échappant à l'instruction avec \33[ et en terminant avec un m. 33, ou 1B en hexadécimal, est le signe ASCII "ESCAPE" (un caractère spécial dans le jeu de caractères ASCII). Exemple:

"\33[1;31mHello World\33[m"

Imprime "Hello World" en rouge vif.


87
2017-12-21 21:57



J'ai joint export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> ' à /etc/bash.bashrc mais rien ne semblait changer ... ça marche sur une session, mais je ne peux pas le rendre permanent. - Jared Tritsch


Une autre solution consiste à raccourcir le chemin du répertoire de travail lorsqu'il est trop long: rogner le répertoire de travail de l'invite de commande du terminal

Créez un petit script python qui implémente la logique de rognage souhaitée.

Exemple: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

Maintenant, testez-le depuis un terminal:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

Si vous êtes d'accord avec le résultat, ajoutez simplement la commande dans votre ~ / .bashrc


6
2017-12-22 00:26



Exa ... ~ / short.pwd.py, export ... ~ / .short.pwd.py Je pense que les deux doivent être identiques. Soit vous placez une commande supplémentaire aux deux endroits, soit vous ne le faites pas du tout. Mais c'est une excellente réponse .. - MycrofD


Je veux souvent le faire temporairement. Voici ce que je fais:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

J'espère que ça aidera quelqu'un.


4
2018-03-27 22:33





La chose qui m'a aidé était: export PS1 = '$'

Pour avoir ceci à chaque fois que vous ouvrez le terminal, écrivez la commande à la fin du fichier .bashrc que vous pouvez ouvrir avec 'cd' suivi de 'gedit .bashrc'.

J'espère que cela t'aides. J'ai travaillé pour moi.


0
2017-07-05 19:36