Terminal komut isteminde kullanıcı, ana makine, dizin bilgileri için renk değiştirme

95

Komut isteminde [email protected] için komut satırındaki renklerin yanı sıra komut istemi ekranının geçerli dizini ve komut bölümlerini değiştirmek mümkün mü?

Zaten OSX kullanıcıları tarafından yapılan böyle bir şey gördüm, ama aynı şeyi gnome terminalinde nasıl yapacağımı bilmiyorum (sadece ön plan ve arka plan renklerini değiştirebilirim).

Örneğin, hataları olan programları derlemeye çalışırken çok kullanışlıdır, çünkü uzun, biçimlendirilmemiş mesajlar hangi satırların komutlar olduğunu ve çıktılarının ayrılmasını zorlaştırır.

    
sordu Luiz Rodrigo 19.04.2012 00:51

3 cevap

120

Dosyayı düzenleyen ayarları düzenleyebilirsiniz: ~/.bashrc .

  1. Dosyayı aç: gedit ~/.bashrc .

  2. #force_color_prompt=yes ve uncomment ( # sini sil) ile çizgiyi arayın.

  3. Görünmesi gereken if [ "$color_prompt" = yes ]; then altındaki satır için bakın:

    PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\[email protected]\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$ '
    

    % co_de kısmında "user @ host" yazıyor ve \[email protected]\h değerinden daha önce gösterilen sayıya dikkat edin. Değiştirmen gereken bu. Örneğin, kullanıcıyı mor olarak değiştirmeye, "@" nin siyahlaşmasına ve yeşile dönüşmesine izin verelim. Çizgiyi şöyle görünecek şekilde düzenleyin:

    PS1='${debian_chroot:+($debian_chroot)}\[3[01;35m\]\u\[3[01;30m\]@\[3[01;32m\]\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$ '
    

Sonuç:

Renk numaraları:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

Referanslar: 1 , 2 .

    
verilen cevap desgua 19.04.2012 03:56
30

BashrcGenerator 'ı deneyebilirsiniz. Bu, istediğiniz gibi bir istem almanın en kolay yoludur. Burada tanımlanan renklerin kendi sisteminizden farklı olabileceğini fark ettim, ancak bu küçük bir sorun. Oluşturulan kod ile renkleri kendiniz değiştirebilirsiniz.

Sunucu kullanıcısı:

export PS1="\[\e[01;37m\][\[\e[0m\]\[\e[01;32m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;34m\]\h\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;37m\]\t\[\e[0m\]\[\e[01;37m\] \W]\$ \[\e[0m\]"

Sunucu kökü:

export PS1="\[\e[01;37m\][\[\e[0m\]\[\e[01;31m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;34m\]\h\[\e[0m\]\[\e[00;37m\] \[\e[0m\]\[\e[00;37m\]\t\[\e[0m\]\[\e[01;37m\] \W]\$ \[\e[0m\]"

Gerekirse, farklı sunucu tiplerini yansıtacak şekilde hostname rengini değiştirebilirsiniz.

Yerel bilgisayarım için farklı bir format kullanıyorum:

export PS1="\[\e[01;33m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;36m\]\h\[\e[0m\]\[\e[00;37m\] \t \[\e[0m\]\[\e[01;35m\]\w\[\e[0m\]\[\e[01;37m\] > \[\e[0m\]"

Şu an favorim:

export PS1="\n\[\e[01;33m\]\u\[\e[0m\]\[\e[00;37m\]@\[\e[0m\]\[\e[01;36m\]\h\[\e[0m\]\[\e[00;37m\] \t \[\e[0m\]\[\e[01;35m\]\w\[\e[0m\]\[\e[01;37m\] \[\e[0m\]\n$ "

Bu son komutun hoş bir dokunuşu var. Bu bilgi isteminden sonra yeni bir satır ve daha önce boş bir yeni satır ekler. Artık tüm dizin yolunu sorunsuz olarak görüntüleyebilir ve uzun bir çıkış durumunda yeni bir komutun nerede başladığını daha net hale getirir.

    
verilen cevap SPRBRN 13.11.2014 12:59
6

Ayrıntılar için bu ayrıntılı NASIL belgesine bakın.

Kısaca, PS1 ortam değişkenini düzenleyerek komut istemini değiştirebilirsiniz. Burada söylenecek çok şey var, size sadece mesajımı göstereceğim ve daha fazla ayrıntı için yukarıdaki bağlantıya yönlendireceğim.

Renkle ilgili parçalar% co_de işlevindedir:

# This function from: https://wiki.archlinux.org/index.php/Color_Bash_Prompt_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29#Wolfman.27s
##################################################
# Fancy PWD display function
##################################################
# The home directory (HOME) is replaced with a ~
# The last pwdmaxlen characters of the PWD are displayed
# Leading partial directory names are striped off
# /home/me/stuff          -> ~/stuff               if USER=me
# /usr/share/big_dir_name -> ../share/big_dir_name if pwdmaxlen=20
##################################################
bash_prompt_shortener() {
    # How many characters of the $PWD should be kept
    local pwdmaxlen=25
    # Indicate that there has been dir truncation
    local trunc_symbol=".."
    local dir=${PWD##*/}
    pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))
    NEW_PWD=${PWD/#$HOME/\~}
    local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen ))
    if [ ${pwdoffset} -gt "0" ]
    then
        NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen}
        NEW_PWD=${trunc_symbol}/${NEW_PWD#*/}
    fi
}


function setPrompt {
  COLOR1="\[3[1;33m\]"     #First color
  COLOR2="\[3[0;33m\]"     #Second color
  NO_COLOR="\[3[0m\]"      #Transparent - don't change

  case $TERM in 
    xterm*)
      TITLEBAR="\[3]0;\h - \w%pre%7\]"
      ;;
    *)
      TITLEBAR=""
      ;;
  esac

  local dash_open="${COLOR1}-${COLOR2}-"
  local dash_close="${COLOR2}-${COLOR1}-"
  local spacer="${COLOR2}-"
  local jobs_and_history="${COLOR2}(${COLOR1}\!${COLOR2}:${COLOR1}\j${COLOR2})"
  local user_host="${COLOR2}(${COLOR1}\u${COLOR2}@${COLOR1}\H${COLOR2})"
  local host="${COLOR2}(${COLOR1}\H${COLOR2})"
  local root_or_not="${COLOR2}(${COLOR1}\$${COLOR2})"
  local cwd="${COLOR2}(${COLOR1}\w${COLOR2})"
  #PS1="${TITLEBAR}${COLOR1}-${COLOR2}-(${COLOR1}\!${COLOR2}:${COLOR1}\j${COLOR2})-(${COLOR1}\w${COLOR2})-${COLOR1}-\n-${COLOR2}-(${COLOR1}\u${COLOR2}@${COLOR1}\H${COLOR2})-(${COLOR1}\$${COLOR2})-${COLOR1}- ${NO_COLOR}"
  #PS1="${TITLEBAR}${dash_open}${cwd}${spacer}${root_or_not}${dash_close}\n${dash_open}${jobs_and_history}${spacer}${host}${dash_close}${NO_COLOR} "
  #PS2="${COLOR2}--${COLOR1}- ${NO_COLOR}"
  PS1="${TITLEBAR}${COLOR1}"'${NEW_PWD}'"${COLOR2}:$${NO_COLOR} "
  PS2="$spacer$dash_close$NO_COLOR "
}

bash_prompt_shortener
setPrompt
unset setPrompt

#Determine and display the exit Status of the last command, if non-zero.
function checkExitStatus() {
  local status="$?"
  local signal=""
  local COLOR1="3[0;0;33m"     #First color
  local COLOR2="3[0;0;36m"     #Second color
  local NO_COLOR="3[0m"        #Transparent - don't change

  if [ ${status} -ne 0 -a ${status} != 128 ]; then
    # If process exited by a signal, determine name of signal.
    if [ ${status} -gt 128 ]; then
      signal="$(builtin kill -l $((${status} - 128)) 2>/dev/null)"
      if [ "$signal" ]; then
        signal="$signal"
      fi
    fi
    echo -e "${COLOR1}[Exit ${COLOR2}${status} ${signal}${COLOR1}]${NO_COLOR}" 1>&2
    #echo -ne "${COLOR1}[Exit ${COLOR2}${status}${COLOR1} ${COLOR2}${signal}${COLOR1}]${NO_COLOR} " 1>&2
    fi
  return 0
}
print_prompt_time() {
    printf "%*s\r" $(tput cols) "$(date '+%T')"
}

promptCmd() {
    checkExitStatus
    print_prompt_time
}

PROMPT_COMMAND=promptCmd

Renklere ek olarak, komut satırında kısaltılmış dizin adları (bkz. setPrompt işlevine bakın), son komutun sıfırlama durumunun otomatik gösterimi ( bash_prompt_shortener işlevi) ve ekran görüntüsü en sağdaki sütunlarda süre ( checkExitStatus işlevi).

    
verilen cevap Scott Severance 19.04.2012 02:27

Etiketlerdeki diğer soruları oku