টার্মিনাল কমান্ড প্রম্পটে ব্যবহারকারী, হোস্ট এবং ডিরেক্টরি সম্পর্কিত তথ্যের জন্য রঙ পরিবর্তন করা


104

কমান্ড প্রম্পটে রংগুলির user@computerপাশাপাশি বর্তমান ডিরেক্টরি এবং প্রম্পট প্রদর্শনের কমান্ড অংশগুলি কি পরিবর্তন করা সম্ভব ?

আমি ইতিমধ্যে ওএসএক্স ব্যবহারকারীরা এরকম কিছু দেখেছি, তবে জিনোম টার্মিনালে একই জিনিসটি কীভাবে করতে হয় তা আমি জানি না (আমি কেবল অগ্রভাগ এবং পটভূমির রঙ পরিবর্তন করতে পারি)।

উদাহরণস্বরূপ, ত্রুটিযুক্ত প্রোগ্রামগুলি সংকলন করার চেষ্টা করার পরে এটি খুব কার্যকর হবে যখন দীর্ঘ, অবরুদ্ধ বিন্যাসে থাকা বার্তাগুলি কোন লাইনগুলি নির্দেশ দেয় এবং কোনটি আউটপুট তা পৃথক করা শক্ত করে তোলে।

অসক্স টার্মিনালে রঙ


1
আপনি bashজিনোম টার্মিনাল নয়, সেটিংস (বা আপনার পছন্দসই শেলের জন্য সেটিংস) সন্ধান করছেন।
স্কট সিভেরেন্স

উত্তর:


135

আপনি সেটিংস সম্পাদনা ফাইল সম্পাদনা করতে পারেন: ~/.bashrc

  1. ফাইল খুলুন: gedit ~/.bashrc

  2. লাইনটি #force_color_prompt=yesএবং অসুবিধাগুলি সন্ধান করুন (মুছুন #)।

  3. নীচের লাইনটি if [ "$color_prompt" = yes ]; thenদেখতে দেখতে এমনটি সন্ধান করুন:

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

    যে অংশটি \u@\hএটি "ব্যবহারকারী @ হোস্ট" \[\033[01;32m\]বলছে এবং রঙটি নির্দেশ করার আগে সংখ্যাটি মনোযোগ দিন attention এই আপনি পরিবর্তন করতে হবে। উদাহরণস্বরূপ, ব্যবহারকারীকে বেগুনি, "@" কে কালো এবং হোস্টকে সবুজ করে তুলুন। লাইনটি সম্পাদন করুন যাতে এটির মতো দেখতে:

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

ফলাফল:
এখানে চিত্র বর্ণনা লিখুন

রঙ সংখ্যা:

কালো 0; 30 গাark় ধূসর 1; 30
নীল 0; 34 হালকা নীল 1; 34
সবুজ 0; 32 হালকা সবুজ 1; 32
সায়ান 0; 36 হালকা সায়ান 1; 36
লাল 0; 31 হালকা লাল 1; 31
বেগুনি 0; 35 হালকা বেগুনি 1; 35
বাদামি 0; 33 হলুদ 1; 33
হালকা ধূসর 0; 37 সাদা 1; 37

তথ্যসূত্র: 1 , 2


আমি আনন্দিত এটি কাজ করে। স্বাগত.
দেশগুয়া

এটি উল্লেখ করারও দরকার যে এটি চেষ্টা করার আগে Paletteআপনার টার্মিনালের রঙ পরিবর্তন করা উচিত নয় Preferences, কারণ এটি রঙ কোডগুলি নিয়ে প্রচুর বিভ্রান্তি সৃষ্টি করবে।
রিফাজ নাহিয়ান

তবে আমরা কীভাবে একটি নির্দিষ্ট স্ট্রিং তৈরি করতে পারি বিশেষ বর্ণটিতে? যেমন একটি ত্রুটি বার্তা আছে যা একটি নির্দিষ্ট বিন্যাসে মুদ্রিত হয়, যা আমি এটি লাল রঙে দেখতে চাই in বা জিডিবিতে, যখন আমি একটি বার্তা দেখতে পাই - "সতর্কতা: উত্স ফাইলটি এক্সিকিউটেবলের চেয়ে সাম্প্রতিক is", আমি চাই এটি লাল রঙে প্রদর্শিত হোক। কিভাবে এটা অর্জন করা যেতে পারে?
দর্শন এল

36

আপনি বাশারকিগেনেটর চেষ্টা করতে পারেন । এটি আপনার ইচ্ছে মতো প্রম্পট পাওয়ার এখন পর্যন্ত সবচেয়ে সহজ উপায়। আমি লক্ষ্য করেছি যে এখানে বর্ণিত রঙগুলি আপনার নিজের সিস্টেম থেকে আলাদা হতে পারে তবে এটি একটি ছোট সমস্যা। উত্পন্ন কোডের সাহায্যে আপনি নিজে রঙ পরিবর্তন করতে পারেন।

সার্ভার ব্যবহারকারী:

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\]"

সার্ভার রুট:

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\]"

এবং প্রয়োজনে আপনি বিভিন্ন ধরণের সার্ভারগুলি প্রতিবিম্বিত করতে হোস্টনাম রঙ পরিবর্তন করতে পারেন।

আমি আমার স্থানীয় কম্পিউটারের জন্য বিভিন্ন ফর্ম্যাট ব্যবহার করি:

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\]"

আমার এখন প্রিয়:

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$ "

এই শেষ প্রম্পটে একটি দুর্দান্ত টাচ আছে। এটি প্রম্পটের পরে একটি নতুন লাইন এবং এর আগে একটি খালি নিউলাইন যুক্ত করে। এখন আপনি সমস্যা ছাড়াই সম্পূর্ণ ডিরেক্টরি পথ প্রদর্শন করতে পারেন এবং দীর্ঘ আউটপুট ক্ষেত্রে নতুন কমান্ড শুরু হয় তা এটি আরও স্পষ্ট করে তোলে।


5
পিএস 1 জেনারেটর: +1: ডি
আনিসনে

1
সত্যিই শেষটিকে সত্যিই পছন্দ হয়েছিল, আমি চিন্তিত ছিলাম কারণ ব্যবহারকারীর নাম এবং পথটি আমাকে প্রচুর জায়গা নিয়েছিল, শেষ বিকল্পের সাহায্যে আপনি পুরো পর্দাটি পেতে পারেন
দামিফান রাফায়েল লাটেনেরো

এটি দুর্দান্ত কাজ করেছে! তবে, আমি কীভাবে নির্দিষ্ট হোস্টের জন্য এটি করতে পারি? উদাহরণস্বরূপ আমি যখন কোনও প্রোডাকশন সার্ভারে প্রবেশ করি তখন একটি নির্দিষ্ট রঙের স্কিম সেট করুন? .bashrc- এ-ই-ফাই ব্লক সহ আমাকে কী "ম্যানুয়ালি" করতে হবে? বা আরও কি মার্জিত উপায় আছে?
একাপুলকো

প্রতিটি হোস্টে আপনি লগইন করেন, সেই দূরবর্তী ব্যবহারকারীর জন্য একটি ব্যক্তিগত .bashrc ফাইল রাখুন এবং এটি পরিবর্তন করতে পারেন। আপনি যদি রুট হয়ে যান তবে এর নিজস্ব সেটিংস রয়েছে যা তারা ব্যবহারকারীর দ্বারা রুট হয়ে উঠলে দেখা যাবে।
এসপিআরবিএনএন

6

বিশদ জন্য, এই HOWTO বিস্তারিত দেখুন

সংক্ষেপে, আপনি $ PS1 এনভায়রনমেন্ট ভেরিয়েবলটি সম্পাদনা করে প্রম্পটে পরিবর্তন করতে পারেন। এখানে বলার মতো অনেক কিছুই আছে যে আমি আপনাকে আমার প্রম্পটটি দেখাব এবং আরও তথ্যের জন্য আপনাকে উপরের লিঙ্কটিতে রেফার করব।

রঙ সম্পর্কিত অংশগুলি ফাংশনে রয়েছে setPrompt:

# 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="\[\033[1;33m\]"     #First color
  COLOR2="\[\033[0;33m\]"     #Second color
  NO_COLOR="\[\033[0m\]"      #Transparent - don't change

  case $TERM in 
    xterm*)
      TITLEBAR="\[\033]0;\h - \w\007\]"
      ;;
    *)
      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="\033[0;0;33m"     #First color
  local COLOR2="\033[0;0;36m"     #Second color
  local NO_COLOR="\033[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

রঙগুলি ছাড়াও, আমার প্রম্পটে আরও কয়েকটি বৈশিষ্ট্য রয়েছে যেমন সংক্ষিপ্ত ডিরেক্টরি নাম (ফাংশনটি দেখুন bash_prompt_shortener), ন্যানজারো (ফাংশন checkExitStatus) হলে শেষ কমান্ডের প্রস্থান স্থিতির স্বয়ংক্রিয় প্রদর্শন এবং ডানদিকের কলামগুলিতে সময় প্রদর্শন (ফাংশন print_prompt_time) ।


আপনার কাস্টম ফাংশনগুলি ভাগ করে নেওয়ার জন্য ধন্যবাদ :) আমি কি ব্যাকস্পেস টিপলে টাইমস্ট্যাম্পটি কেবল অদৃশ্য হয়ে যায়?
লুইজ রডরিগো

নাঃ। আমিও. কিছু বাগ রয়েছে যা আমি ঠিক করার চেষ্টা করার জন্য যথেষ্ট গুরুত্বপূর্ণ বিচার করি নি।
স্কট সিভেরেন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.