Terminal ekranı @ @ makinesini koyu harflerle nasıl yapılır?


31

Bazı ekran görüntülerinde terminalin [username@machine /]$kalın harflerle görüntülenebileceğini (web’in neresinde olduğunu hatırlayamıyorum) gördüm . Bunu da dört gözle bekliyorum çünkü kendimi daima komuttan sonra ilk satırı zorlukla bulmak için uzun çıktılar arasında kaydırırken buluyorum.

Kullanıcı adını vb. Koyu veya renkli hale nasıl getirebilirim?


Bash kabuğu veya başka bir kabuk kullanıp kullanmadığınızı açıklayabilir misiniz?
Stephen Quan

GNOME Terminal bash.
Benjamin

Yanıtlar:


22

Dosyanızdaki bilgi PS1istemi değişkenini bu şekilde ayarlayarak bunu yapabilmelisiniz ~/.bashrc:

PS1='[\u@\h \w]\$ '

Renkli hale getirmek için (ve muhtemelen kalın - bu terminal emülatörünüzün etkinleştirip etkinleştirmemesine bağlıdır) kaçış renk kodları eklemeniz gerekir:

PS1='\[\e[1;91m\][\u@\h \w]\$\[\e[0m\] '

Burada 1;91mve 0mparçalar arasında kaçamayan her şey 1;91renkle renklendirilir (koyu kırmızı). Farklı renkler kullanmak için bu kaçış kodlarını istemin farklı kısımlarının etrafına yerleştirin, ancak renkleri sıfırlamayı unutmayın, 0maksi takdirde renkli terminal çıktısı elde edersiniz. Geçerli kabuğu güncellemek için dosyayı daha sonra kaynaklamayı unutmayın:source ~/.bashrc


Neden 31'i kırmızı için kullanmıyorsun? 91 standart bir kod gibi görünmüyor.
jw013

1
@ jw013 90-97 aralığı, kalın bir şekilde kullanılmışsa 30-37 aralığına eşdeğerdir 1;31ve 1;91. Normal yazı tipi ağırlığını kullanarak, 90-97 aralığı diğerlerinden daha parlak renkler verir.

45

Senin nerede bulun PS1Gözlerinde farklı ayarlanır .bashrcve insert '\[\e[1m\]'başında ve \[\e[0m\]sonunda.

  • \[ve \]böylece kabuk, iç kısımdaki karmaşanın ekranda 0 boşluk kapladığını bilir, bu da çizgi düzenleme yaparken bazı berbat davranışları önler. Bunun için fazla endişelenmene gerek yok.
  • \e[CSI (kontrol sırası tanıtıcısı) olarak bilinir. Başvurulan Wikipedia sayfasında listelenen kodların çoğunda kullanıldığını göreceksiniz. \e kaçış karakteri anlamına gelir.
  • Vikipedi sayfasındaki SGR tablosuna bakarsanız, 1'in parlak / kalın metin sayısı ve 0'ın sıfırlanması olduğunu göreceksiniz. Böylece CSI 1mkalınlaşır ve CSI 0myazı tipini sıfırlar, böylece metnin geri kalanı normal olur.

Wikipedia, terminal emülatörünüz destekliyorsa kullanabileceğiniz ANSI çıkış kodlarının tam listesine sahiptir .

Düzenle

Taşınabilirlik ve okunabilirlik tputiçin sabit kodlama çıkış kodları yerine kullanmanız gerekir . Tek dezavantajı, tputyaklaşımın ANSI kodlarını destekleyen ancak kırılmış ya da eksik terminfo veritabanlarına sahip olan terminallerle çalışmadığıdır, ancak bu durumda bozuk terminfo, terminfoya dayanan pek çok konsol uygulamanızın düzgün çalışamayacağından daha büyük bir sorundur.

İşte benim içinde ne yaptığımın bir örneği .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\]\u@\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "

İşte benim genelleşmiş bir versiyonunun nasıl göründüğü. 0Son komutun çıkış durumudur.

PS1 ekran görüntüsü


Güzel ve açıklayıcı cevap, +1. Yine de hesse 'nin konuya daha fazla cevap verdiğini öğrendim, onun yerine onu seçtim.
Benjamin

Bunu denediğimde Terminal istemi gibi düzgün sarılmamış bir sorunla karşılaştım . Yapıyor musun? Kaçış dizilerini güncellediniz mi?
Stefan Lasiewski

6

Bu, cygwin bash kabuğuna girdiğiniz varsayılan bilgi istemidir:

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

görüntü tanımını buraya girin

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

Referanslar:


Nice, [user @ host] ' a önce her komutu daha okunaklı kılan yeni bir satır ekledim (varsayılan olarak terminal imo'da ayarlanmalıdır).
Benjamin

2

Bu kabuk fonksiyonunu, terminaldeki metin niteliklerini almak için kullanıyorum:

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
}

Sonra kullanmak için:

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

Bu bana koyu yeşil ve koyu mavi olan [username@hostname]:cwd>yerlerde verir .username@hostnamecwd


Bunun için teşekkürler. Ben de yukarıdaki tüm kopyalamak zorunda varsayalım ~/.bashrc?
Benjamin

Evet, bunu dosyama ayarladım ~/.bashrcve istemimi ayarlamak için kullanıyorum. Üzerinde bulunduğum sisteme bağlı olarak renkleri bile değiştiriyorum.
Arcege,

1

Varsayılan bir Ubuntu istemi gibi görünmesi için

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

senin içinde ~/.bashrc.

Bu, iyi bilinen yeşili user@host(kalın), ardından kalın olmayan beyaz bir sütunu, ardından çalışma dizini koyu mavi olarak ve ardından $koyu beyaz harflerle bir işaret, boşluk ve komutunuzu üretecektir:

Ubuntu Bash istemi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.