it-swarm-eu.dev

Jak nastavit, aby terminál zobrazoval uživatele @ stroj tučným písmem?

Viděl jsem v některých záběrech obrazovky (nepamatuji si, kde na webu), že terminál může zobrazit [[email protected] /]$ tučně. Těším se na to, že se mi to také podaří, protože se vždycky pohybuji dlouhými výstupy a obtížně zjistím první řádek po svém příkazu.

Jak mohu udělat uživatelské jméno atd. Tučné nebo barevné?

31
Benjamin

Měli byste být schopni to provést nastavením PS1 Promptná proměnná ve vaší ~/.bashrc soubor jako je tento:

PS1='[\[email protected]\h \w]\$ '

Chcete-li, aby byl barevný (a možná i tučný - záleží na tom, zda jej emulátor terminálu povolil), musíte přidat únikové barevné kódy:

PS1='\[\e[1;91m\][\[email protected]\h \w]\$\[\e[0m\] '

Zde vše, co neuniklo mezi 1;91m a 0m části budou zabarveny v 1;91 barva (tučně červená). Umístěte tyto únikové kódy do různých částí výzvy, abyste použili různé barvy, ale nezapomeňte je resetovat pomocí 0m nebo jinak budete mít také barevný výstup terminálu. Nezapomeňte zdrojový soubor poté aktualizovat aktuální prostředí: source ~/.bashrc

22
user13742

Zjistěte, kde vaše PS1 je nastaveno ve vašem .bashrc a vložte '\[\e[1m\]' na začátku a \[\e[0m\] na konci.

  • \[ a \] jsou nezbytné, aby Shell věděl, že nepořádek uvnitř zabírá 0 místa na obrazovce, což zabraňuje určitému chování při šroubování při editaci řádku. Nemusíte se toho příliš obávat.
  • \e[ je znám jako CSI (zavaděč řídicí sekvence). Uvidíte, že se používá ve většině kódů uvedených na odkazované stránce Wikipedie. \e znamená znak úniku.
  • Pokud se podíváte na tabulku SGR na stránce Wikipedie, uvidíte číslo 1 jako číslo pro jasný/tučný text a 0 pro resetování. Tím pádem CSI 1m zapne tučně a CSI 0m resetuje písmo, takže zbytek textu je normální.

Wikipedia má úplný seznam únikových kódů ANSI , který můžete použít, pokud to váš emulátor terminálu podporuje.

Upravit

Pro přenositelnost a čitelnost byste měli místo pevně kódujících únikových kódů použít tput. Jedinou nevýhodou je, že přístup tput nebude fungovat s terminály, které podporují ANSI kódy, ale mají nefunkční nebo chybějící terminfo databáze, ale v tom případě je nefunkční terminfo větší problém, protože mnoho vašich konzolových aplikací, které se spoléhají na terminfo nemusí správně fungovat.

Zde je příklad toho, co dělám ve svém .bashrc:

# color names for readibility
reset=$(tput sgr0)
bold=$(tput bold)
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
Magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
user_color=$green
[ "$UID" -eq 0 ] && { user_color=$red; }
PS1="\[$reset\][\[$cyan\]\A\[$reset\]]\[$user_color\]\[email protected]\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "

Tady je, jak by vypadala zobecněná verze mého. The 0 je stav ukončení posledního příkazu.

PS1 screenshot

45
jw013

Toto je výchozí výzva, kterou dostanete v cygwin bash Shell:

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\[email protected]\h \[\e[33m\]\w\[\e[0m\]\n\$ '

enter image description here

\[\e]0;\w\a\] = Set the Window title to your current working directory
\n            = new line
\[\e[32m\]    = Set text color to green
\[email protected]\h         = display [email protected]
\[\e[33m\]    = Set text color to yellow
\w            = display working directory
\[\e[0m\]     = Reset text color to default
\n            = new line
\$            = display $ Prompt

Reference:

6
Stephen Quan

Pomocí této funkce Shell získám textové atributy v terminálu:

color () {
  if [ -z "$1" -a -z "$2" -a -z "$3" ]; then
    echo "\033[0m"
    return
  fi
  case $1 in
    black)   color_fg=30;;
    red)     color_fg=31;;
    green)   color_fg=32;;
    yellow)  color_fg=33;;
    blue)    color_fg=34;;
    Magenta|purple) color_fg=35;;
    cyan)    color_fg=36;;
    white)   color_fg=37;;
    -)       color_fg='';;
    *)       color_fg=39;;
  esac
  case $2 in
    bold)      color_bd=1;;
    italics)   color_bd=3;;
    underline) color_bd=4;;
    inverse)   color_bd=7;;
    strike)    color_bd=9;;
    nobold)      color_bd=22;;
    noitalics)   color_bd=23;;
    nounderline) color_bd=24;;
    noinverse)   color_bd=27;;
    nostrike)    color_bd=29;;
    -)         color_bd='';;
    *)         color_bd=0
  esac
  case $3 in
    black)   color_bg=40;;
    red)     color_bg=41;;
    green)   color_bg=42;;
    yellow)  color_bg=43;;
    blue)    color_bg=44;;
    Magenta|purple) color_bg=45;;
    cyan)    color_bg=46;;
    white)   color_bg=47;;
    -)       color_bg='';;
    *)       color_bg=49;;
  esac
  s='\033['
  if [ -n "$color_bd" ]; then
    s="${s}${color_bd}"
    if [ -n "$color_fg" -o -n "$color_bg" ]; then
      s="${s};"
    fi
  fi
  if [ -n "$color_fg" ]; then
    s="${s}${color_fg}"
    if [ -n "$color_bg" ]; then
      s="${s};"
    fi
  fi
  if [ -n "$color_bg" ]; then
    s="${s}${color_bg}"
  fi
  s="${s}m"
  echo "$s"
  unset s color_bd color_bg color_fg
}

Poté ji použijte:

color_reset=`color`
color_grbd=`color green bold`
color_bubd=`color blue bold`
PS1="\[${color_grbd}\][\[email protected]\h]\[${color_reset}\]:\[$color_budb}\]\w\[${color_reset}\]> "

To mi dává [[email protected]]:cwd> kde [email protected] jsou tučně zelené a cwd je tučně modré.

2
Arcege

Chcete-li, aby to vypadalo jako výchozí výzva pro Ubuntu, přidejte

export PS1='\[\e[1;32m\]\[email protected]\h\e[0;39m\]:\e[1;34m\]\w\e[0;39m\]$\[\e[0m\] '

ve tvém ~/.bashrc.

Tím se vytvoří známá zelená [email protected] (tučně), za ním následuje tučně bílé tlusté střevo, za kterým následuje váš pracovní adresář tučně modrou barvou, za kterým následuje $ znaménko, mezera a příkaz velkými tučnými písmeny:

Ubuntu Bash Prompt

1
Tobias Feil