কর্নশেইলে রঙিন প্রম্পট


11

এই স্ট্যাকওভারফ্লো পোস্ট অনুসারে , কর্নশেলে রঙিন প্রম্পট পাওয়া সম্ভব। আমি কীভাবে এটি করতে পারি তা বুঝতে পেরেছি না। আমি রঙ ব্যবহার করতে সক্ষম:

echo -e "\033[34mLinux\033[00m"

যেমনটি একটি নীল "লিনাক্স" আউটপুট দেয়:

printf "\033[34mLinux\033[00m"

যাইহোক, আমি যখন আমার PS1প্রম্পট ভেরিয়েবলের মধ্যে পালানোর কোডগুলি অন্তর্ভুক্ত করি তখন সেগুলি এড়ানো যায় না। রঙিন প্রম্পট পেতে আমার কী করতে হবে? আইক্যান্ডির জন্য চুষার কিছু হওয়ার পাশাপাশি, আমি দেখতে পাচ্ছি যে আউটপুটকে দৃষ্টিভঙ্গি করার সময় একটি রঙিন প্রম্পট কার্যকর।

উত্তর:


10

শুধু একটি আক্ষরিক Esc চাপুন চরিত্র, সঙ্গে প্রবেশ ব্যবহার Ctrl- v, Esc(হিসেবে প্রদর্শিত হবে ^[: স্ক্রীনে)

PS1="^[[34mLinux^[[00m"

অথবা echoআপনি যে কমান্ডটি সন্ধান করছেন তা আউটপুট ব্যবহার করুন :

PS1="$(echo -e "\033[35mLinux\033[00m")"

এটি এমন সময়ে ঘটে যায় যে আমি বুঝতে পারি যে আমি এখনও একটি কমান্ডলাইন নবুব। আমি আমার বন্ধুদের তুলনায় সাধারণত খুব ভাল বোধ। :) প্রথম সংস্করণটি দুর্দান্তভাবে কাজ করেছে; কি ঝরঝরে কৌশল! দ্বিতীয় সংস্করণে আমার সাফল্য নেই। +1
কাজার্ক

5

আপনার চলকটিতে একটি আক্ষরিক অব্যাহতি অক্ষর রাখতে হবে PS1। Ksh88 এবং pdksh এবং mksh (পুরানো সংস্করণ) এর মতো ক্লোনগুলির printঅন্তর্নির্মিত ব্যতীত নিয়ন্ত্রণ অক্ষরের জন্য কোনও আক্ষরিক সিনট্যাক্স নেই । মিক্স \eপালানোর জন্য বোঝে , তবে পিডিএক্সের জন্য অষ্টাল কোড দরকার \033

PS1=$(print '\033[34mLinux\033[00m')

এটিটি ksh93 ব্যাকল্যাশ-পলায়নের আক্ষরিক সিনট্যাক্সের পরিচয় করিয়েছে $'…'(আর 39 বি থেকে এমকেশে উপলব্ধ)। আপনি এই আক্ষরিক মধ্যে নিয়ন্ত্রণ অক্ষর রাখতে ব্যাকস্ল্যাশ পলায়ন ব্যবহার করতে পারেন।

PS1=$'\e[34mLinux\e[00m'

2
প্রকৃতপক্ষে, mkshএছাড়াও সমর্থন করে $'…'- স্বীকার করেছেন যে ডেভ কর্ন (কর্ন ইন কর্ন শেল) জোর দিয়েছিলেন আমি এটি যুক্ত করব।
মিরাবিলোস

@ মীরাবিলোস, ধন্যবাদ আমি সম্ভবত উত্তরটি mksh R39 সহ একটি মেশিনে টাইপ করেছি এবং আরও নতুন সংস্করণ পরীক্ষা করে দেখিনি।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

2

আমি এটি mkshব্যবহারকারীর জন্য ব্যবহার করি shell:

# custom prompt see http://comments.gmane.org/gmane.os.miros.mksh/126
PS1=$'\a\r\a\e[1;34m\a ^ ^  ^ ^ | \a\e[36m\a${USER:=$(ulimit -c 0; id -un 2>/dev/null || echo
\?)}@${HOSTNAME%%.*}\a\e[34m\a | ^ ^  ^ ^ | \a\e[0;33m\a$(local d=${PWD:-?} p=~; [[ $p = ?(*/) ]] || d=${d/#$p/~};
print -nr -- "$d")\a\e[1;34m\a |\n ^ ^  ^ ^ | \a\e[32m\a$(date +%H:%M)\a\e[34m\a | ^ ^ >>\a\e[0m\a '

এবং এর shellজন্য কিছুটা আলাদা root:

PS1=$'\a\r\a\e[1;34m\a ^ ^  ^ ^  ^   \a\e[31m\a${USER:=$(ulimit -c 0; \
    id -un 2>/dev/null || echo \?)}@${HOSTNAME%%.*}\a\e[34m\a  ^ ^  ^ ^  ^ ^  ^   \a\e[0;33m\a$(
        local d=${PWD:-?} p=~
        [[ $p = ?(*/) ]] || d=${d/#$p/~}
        print -nr -- "$d"
)\a\e[1;34m\a  ^ ^ \n ^ ^  ^ ^  ^   \a\e[32m\a$(date +%H:%M)\a\e[34m\a  ^ ^  ^ ^   \a\e[0m\a '

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

বিশেষ অক্ষরগুলি অনুলিপি না করায় সাধারণ ব্যবহারকারী এবং মূল উভয়ের জন্য এখানে একটি পেস্টবিন পেস্ট দেওয়া আছে is


1

মানুষের উত্তরগুলিতে বেশ কয়েকটি জিনিস চলছে, যার মধ্যে একটি আলাদা সিনট্যাক্স জড়িত।

  1. ডকুমেন্টেশনে দেওয়া আপনার টার্মিনাল প্রোগ্রামের জন্য পালানোর ক্রমগুলি।

  2. PS1 ভেরিয়েবলের মধ্যে টার্মিনাল এস্কেপ সিকোয়েন্সগুলি কীভাবে এনকোড করা যায়, উদাহরণস্বরূপ \ ই বা আক্ষরিক অবকাশ। এটি শেলের উপর নির্ভর করে।

  3. প্রম্পটে পরিবর্তিত তথ্য কীভাবে যুক্ত করা যায়, উদাহরণস্বরূপ হোস্টনাম, বর্তমান ডিরেক্টরি ইত্যাদি This এটি শেলের উপরও নির্ভর করে। আপনি ওয়ার্কিং ডিরেক্টরিতে \ w এর মতো বিশেষ ব্যাকস্ল্যাশ সিকোয়েন্স ব্যবহার করতে সক্ষম হতে পারেন, বা আপনাকে স্ট্রিংয়ের মধ্যে এনভায়রনমেন্ট ভেরিয়েবল বা এম্বেড কমান্ড লাইনগুলির নাম দিতে হতে পারে।

  4. কোন শেলটি কীভাবে অক্ষরগুলি মুদ্রণ করে এবং কোন অক্ষরগুলি না তা কীভাবে বলা যায়। শেলটি জানেন না যে আপনার টার্মিনাল অব্যাহতি সিকোয়েন্সগুলি শুরু এবং শেষ হবে। শেলটিতে যদি কমান্ড-লাইন সম্পাদক বা অনুরূপ কিছু থাকে তবে এটি জানতে হবে যে কোন অক্ষরগুলি মুদ্রিত হয় তাই এটি কার্সারটি কোথায় তা জানে। এই বিশদটি ছাড়াই আপনার প্রম্পটটি সঠিক দেখাতে পারে তবে সম্পাদনাটি অদ্ভুত আচরণ করতে পারে।

    • ব্যাশে আপনি each [প্রতিটি পালানোর ক্রমের আগে এবং \] পরে রেখেছিলেন।

    • কেএসএসে, আপনি একটি একক অ-ছাপানো ASCII অক্ষর চয়ন করেন যা স্ট্রিংয়ের অন্য কোথাও ঘটতে পারে না। স্ট্রিংয়ের শুরুতে, আপনি সেই অক্ষরটি লিখে ASCII ক্যারেজ রিটার্ন অনুসরণ করেন। তারপরে আপনি প্রতিটি পালানোর ক্রমের আগে এবং পরে একই চরিত্রটি লিখবেন। z3ntu মার্কার চরিত্র হিসাবে \ এ বেছে নিয়েছে।


0

পূর্ববর্তী উত্তর এবং অন্যান্য উত্সগুলির জন্য ধন্যবাদ, আমি এগুলি সামনে আসতে সক্ষম হয়েছি:

কার্ন শেল প্রম্পট:

PS1="$(echo "\033[32m`logname`\033[35m@\033[32m`hostname` \033[33m`pwd`\033[36m\n\$\033[0m")"

বাশ প্রম্পট:

PS1="\[\e[32m\]\u\[\e[35m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[36m\]\n\$\[\e[0m\]"

এগুলি একই রঙের প্রম্পট দেয় (হ্যাঁ, আমি রানির ইংরেজি বলি;)) বিন্যাসে:

username@computername /current/working/directory
$

ডস সমতুল্য (যদিও কোনও রঙের বিকল্প নেই) হ'ল:

prompt %username%@%computername% $P$_$G

যা দেয়:

username@computername /current/working/directory
>

">" এটি "$" এর সাথে 'নিক্সী' না দিয়ে 'ডসসি' রাখছে, তবে আপনি যদি এর পরিবর্তে সিগিল ("instead") চান তবে তা হ'ল:

prompt %username%@%computername% $P$_$$

প্রদত্ত আপনার লগইন অ্যাকাউন্টে "এক্সপোর্ট" দিয়ে 'নিক্সিজ' স্থায়ীভাবে প্রেন্ডেন্ড করার জন্য প্রয়োজনীয় অনুমতি রয়েছে:

export PS1="..."

এবং ডসিকে এতে পরিবর্তন করুন:

setx PROMPT "%username%@%computername% $P$_$G"

অথবা

setx PROMPT "%username%@%computername% $P$_$$"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.