কনসোল আউটপুটটির বর্তমান রঙটি কীভাবে নির্ধারণ করবেন?


14

আমি জানি যে, যদি কোনও রঙিন টার্মিনাল উপলব্ধ থাকে তবে কেউ পালানোর অক্ষর ব্যবহার করে এর আউটপুট রঙ করতে পারে ।

তবে কী খুঁজে পাওয়ার সম্ভাবনা রয়েছে, বর্তমানে আউটপুটটি কোন রঙ হিসাবে প্রদর্শিত হচ্ছে? বা আরও ভাল, আমি এখনই আউটপুট এটি পাঠ্যটি কি রঙ হবে?

এই পালানো অক্ষরগুলি ব্যবহার করার সময় আমি কোনও পূর্বের রঙিন সেটিংস না ভাঙতে বলছি। 'ডিফল্ট ফোরগ্রাউন্ড কালার' এস্কেপ চরিত্রটি রঙিন স্কিম থেকে এটি পরিবর্তন করে দেওয়ার আগে আমি পাঠ্যের রঙের চেয়ে এটির তথ্য পেয়ে যাচ্ছি।


টার্মক্যাপ এবং টার্মিনো ভেরিয়েবলগুলি দেখে মনে হচ্ছে এটি সম্ভব নয়। উদাহরণস্বরূপ, আপনি আপনার টার্মিনালটি সমর্থন করে echotc Coবা এমন রঙের সংখ্যা পেতে পারেন echoti colorsতবে বর্তমান রঙ কোড সংজ্ঞা সংরক্ষণ করে এমন কোনও পরিবর্তনশীল নেই।
জিম্মিজ

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

উত্তর:


11

সাধারণভাবে, বর্তমান রঙগুলি পাওয়া অসম্ভব। টার্মিনালের নিয়ন্ত্রণ ক্রম প্রক্রিয়াকরণটি টার্মিনালের "ভিতরে" ঘটে, যেখানেই তা ঘটে। একটি টার্মিনাল এমুলেটর যেমন xtermবা একটি অপারেটিং সিস্টেম কার্নেল দ্বারা নির্মিত যা কার্নেল ভার্চুয়াল টার্মিনাল সরবরাহ করে, বর্তমানের "গ্রাফিক উপস্থাপনা" (যেমন রঙ এবং বৈশিষ্ট্য) এর ধারণা সহ এমুলেটরটির অভ্যন্তরীণ অবস্থা মেশিনে রয়েছে নিজেই এবং তাত্ত্বিকভাবে অ্যাক্সেসযোগ্য। তবে প্রকৃত টার্মিনালের জন্য এই তথ্যটি কোনও সিরিয়াল লিঙ্কের মাধ্যমে সংযুক্ত একটি শারীরিকভাবে পৃথক মেশিনের কিছু র‍্যাম অবস্থানে রয়েছে।

এটি বলেছিল, কিছু টার্মিনালগুলিতে তাদের টার্মিনাল প্রোটোকলের অংশ হিসাবে এই জাতীয় তথ্য পড়ার ব্যবস্থা রয়েছে, যা সেই সিরিয়াল লিঙ্কের মাধ্যমে প্রেরণ করা হয়। তারা নিয়ন্ত্রণ সিকোয়েন্স সরবরাহ করে যা কোনও প্রোগ্রাম টার্মিনালে প্রেরণ করতে পারে, যার ফলে এটি তার অভ্যন্তরীণ অবস্থার তথ্য টার্মিনাল ইনপুট হিসাবে ফেরত পাঠায় । টার্মিনাল এমুলেটর প্রতিক্রিয়া জানায় mikeservএমন নিয়ন্ত্রণ সিকোয়েন্সগুলি আপনাকে দেখিয়েছে xterm। তবে এগুলি নির্দিষ্ট xterm। লিনাক্স কার্নেল এবং বিভিন্ন বিএসডি কার্নেলের অন্তর্নির্মিত টার্মিনাল এমুলেটরগুলি বিভিন্ন টার্মিনাল ধরণের, উদাহরণস্বরূপ, এবং এ জাতীয় কোনও নিয়ন্ত্রণ সিকোয়েন্সগুলি মোটেও প্রয়োগ করে না। বাস্তব টার্মিনালের পুরো পরিবারের ক্ষেত্রেও এটি একই রকম।

ডিসি ভিটি 525 টার্মিনালগুলি একটি পঠন-প্রক্রিয়া বাস্তবায়ন করে, তবে তাদের নিয়ন্ত্রণ সিকোয়েন্সগুলির একটি সেট রয়েছে যা ব্যবহার করে তাদের কোনও সম্পর্ক রাখে না xterm। বর্তমান গ্রাফিক রেন্ডিশনের অনুরোধের জন্য একজন DECRQSS (অনুরোধ নির্বাচন বা সেটিং) সিকোয়েন্স পাঠায় এবং টার্মিনালটি DECRPSS (রিপোর্ট নির্বাচন বা সেটিং) প্রেরণ দ্বারা সাড়া দেয়। বিশেষ করে:

  1. হোস্ট প্রেরণ করে: ডিসিএস $ q mএসটি (এসইজিআর এর নিয়ন্ত্রণ ফাংশনের অংশ হিসাবে সেটিং হিসাবে DECRQSS)
  2. টার্মিনাল প্রতিক্রিয়া জানায়: ডিসিএস 0 $ r 0 ; 3 3 ; 4 4 mএসটি (এসজিআর নিয়ন্ত্রণ অনুক্রমের পরামিতিগুলি এবং নিয়ন্ত্রণ ফাংশন অংশের সাথে DECRPSS যা বর্তমান অগ্রভাগ এবং পটভূমির রঙগুলি সেট করে)

অবশ্যই, আপনার প্রশ্নের মনোযোগ সহকারে পড়লে বোঝা যায় যে আপনি আবার সেই ইউরোপীয় মুদ্রা সিস্টেমে একটি চকোলেট-কভার কলা ডানাচ্ছেন। আপনি আসলে যা করার চেষ্টা করছেন , যার জন্য আপনি একটি সমাধান নির্বাচন করেছেন এবং তারপরে কীভাবে সেই সমাধানটির অংশটি জিজ্ঞাসা করবেন তা পূর্ববর্তী অবস্থাটি সংরক্ষণ করা হয় যখন আপনি কিছু ধরণের আউটপুট লেখেন। এটি করার জন্য কেবল কোনও ডিসি ভিটি নিয়ন্ত্রণের অনুক্রমই নয়, এর জন্য একটি এসসিও কনসোল টার্মিনাল ক্রম রয়েছে যা xtermবিভিন্ন কার্নেল অন্তর্নির্মিত টার্মিনাল এমুলেটর দ্বারা স্বীকৃত এবং একটি টার্মক্যাপ / টার্মিনো এন্ট্রি যা আপনাকে জানায় যে তারা আপনার টার্মিনালের জন্য কী।

টার্মক্যাপ এন্ট্রিগুলি হ'ল scএবং rc। টার্মিনো এন্ট্রিগুলি হ'ল save_cursorএবং restore_cursor। নাম কিছুটা প্রভাব যেমন বিভ্রান্তিকর হয় (যদিও তারা একটি সতর্কবার্তা হিসেবে কাজ যে আপনি কিছু যে উপর নির্ভর করছে কার্যত বদলে বিধিসম্মত )। প্রকৃত DECSC, DECRC, SCOSC এবং SCORC নিয়ন্ত্রণ ক্রম বর্তমান গ্রাফিক উপস্থাপনাটি সংরক্ষণ এবং পুনরুদ্ধার করে।

আপনি যে নিবন্ধটির দিকে ইঙ্গিত করেছেন তা শেল স্ক্রিপ্ট থেকে নিয়ন্ত্রণ সিক্যুয়েন্স তৈরির বিষয়ে, আপনি এখন যে কমান্ডটি সন্ধান করছেন তা হ'ল tput

আরও পড়া


দুর্দান্ত উত্তর। খুশি হয়ে আমি এর জন্য ফিরে গেলাম। অনেক ধন্যবাদ.
Minix

@Minix - ব্যতীত scএবং rc, এছাড়াও আপনি যদি আপনার টার্মিনাল এটি সমর্থন বিকল্প বাফার দেখব করতে চাইতে পারেন। এবং হ্যাঁ, এটি দুর্দান্ত উত্তর। মিনিক্স, সম্ভবত এটিও দেখুন: ব্যবহারকারী স্থান থেকে কনসোল হিসাবে / dev / fb0 কীভাবে ব্যবহার করবেনnoshতিনি যে স্যুটটি এখানে সুপারিশ করেছেন তার নিজস্ব।
মাইকজার্ভ

@ মাইক্রোজার আমি একবার দেখে নেব, লিঙ্কগুলির জন্য ধন্যবাদ :)
মিনিক্স

2
এই "এক্সটার্ম দ্বারা ব্যবহৃত তাদের সাথে কোনও সম্পর্ক রাখে না" - তবে, এক্সটারেমের সমর্থিত DECRQSS বেশ কিছুক্ষণের জন্য বিবেচনা করে। এসজিআর প্রতিক্রিয়া সহ অংশটি কালার তারিখের সাথে 1996 পর্যন্ত রয়েছে
টমাস ডিকি

2
এক্সটার্মের নিয়ন্ত্রণ-সিকোয়েন্স ডকুমেন্টেশনে আরও পড়ুন দেখুন , যা উল্লেখ করে যে ভিটি 520 / ইত্যাদি ডকুমেন্টেশন উপলব্ধ ছিল না যখন এক্সটার্ম রঙ সরবরাহ করতে শুরু করেছিল DECRQSS(প্রায় 7 বছরের বিলম্ব ...)।
টমাস ডিকি

10

একটি ইন xtermআপনি বর্তমান রং আরজিবি রঙ একটি ক্যোয়ারী করার জন্য একটি রঙ পরিবর্তন পালাবার পরিবর্তনের দ্বারা রিপোর্ট কোডগুলি পেতে পারেন। ব্যবহার করুন ESC ] Ps m- তবে একটি ?প্রশ্ন চিহ্ন যুক্ত করুন। ডক্স থেকে :

  • "?"কোনও নাম বা আরজিবি নির্দিষ্টকরণের পরিবর্তে যদি কোনও দেওয়া হয় xterm, তবে একই গতির একটি নিয়ন্ত্রণ ক্রম সহ উত্তরগুলি সম্পর্কিত গতিশীল রঙ সেট করতে ব্যবহার করা যেতে পারে। কারণ একাধিক জোড়া রঙের নম্বর এবং স্পেসিফিকেশন একটি নিয়ন্ত্রণ ক্রমে দেওয়া যেতে পারে, xtermএকাধিক জবাব দিতে পারে।
    • পি এস = 1 0 V ভিটি 100 টেক্সট ফোরগ্রাউন্ড রঙ পি টিতে পরিবর্তন করুন।
    • পি এস = 1 1 V ভিটি 100 টেক্সট ব্যাকগ্রাউন্ডের রঙ পি টিতে পরিবর্তন করুন।
    • পি এস = 1 2 text পাঠ্য কার্সার রঙকে পি টিতে পরিবর্তন করুন।
    • পি এস = 1 3 mouse মাউসের অগ্রভাগের রঙটি পি টিতে পরিবর্তন করুন।
    • পি এস = 1 4 mouse মাউসের পটভূমির রঙটি পি টিতে পরিবর্তন করুন।
    • পি এস = 1 5 Te টেকট্রনিক্সের অগ্রভাগের রঙকে পি টিতে পরিবর্তন করুন।
    • পি এস = 1 6 Te টেকট্রনিক্সের পটভূমির রঙ পি টিতে পরিবর্তন করুন।
    • পি এস = 1 7 highlight হাইলাইটের পটভূমির রঙ পি টিতে পরিবর্তন করুন।
    • পি এস = 1 8 Te টেকট্রনিক্স কার্সার রঙকে পি টিতে পরিবর্তন করুন।
    • পি এস = 1 9 highlight হাইলাইটের অগ্রভাগের রঙটিকে পি টিতে পরিবর্তন করুন।

এটি সম্ভবত অন্য টার্মিনাল এমুলেটরটিতে কাজ করার সম্ভাবনা রয়েছে তবে আমার গুরুতর সন্দেহ রয়েছে xtermতবে আপনি যদি চালনা করেন ...

printf '\033]11;?\007'

... এটি xtermনীচের মত একটি ক্রম আপনার টার্মিনালের ইনপুট বাফারে আবার ঠেলে দেবে ...

11;rgb:ffff/ffff/ffff

... পটভূমির জন্য বা অগ্রভাগের জন্য:

printf '\033]10;?\007'

10;rgb:0000/0000/0000

সুতরাং আমি যখন চালাচ্ছি printf '\033]10;rgb:8f8f/8f8f/8f8f8f\007, টার্মিনালের সমস্ত পাঠ যা আগে "স্বাভাবিক" ছিল হালকা নীল হয়ে গেছে। এরপরে, দৌড়ানো printf '\033]10;rgb:bfbfbf/bfbfbf/bfbfbf\007'সমস্ত হালকা নীল পাঠ্যটিকে "সাধারণ" এ ফিরে আসে। আমি কীভাবে এই মানটি কেবলমাত্র এগিয়ে চলার পাঠ্যের রঙ পরিবর্তন করতে ব্যবহার করব?
ফোরস্পাস্টমিডনাইট

@ চারপাস্টমিডনাইট: সম্ভবত clearপ্রথম?
মাইকজার্ভ

আমি ভাবছি আমি ডকুমেন্টেশন বুঝতে পারছি না। এটি পরিষ্কারভাবে "পি এস = 1 0 -> ভিটি 100 ফোরগ্রাউন্ডের রঙ পরিবর্তন করুন" বলেছে এবং ভাল, এটি এটি করছে বলে মনে হচ্ছে। ;) তবে এটি আমি প্রত্যাশা করি না। আমাকে "পি এস = 1 0; পিটি =" থেকে পুনরুদ্ধার করা আরজিবি মান ব্যবহার করতে হবে? আমি যা চাই তা অর্জনের জন্য অন্য পালানো কমান্ড সহ
ফোরস্পাস্টমিডনাইট

ঠিক আছে, তাই printf '\033]10;?\007'টার্মিনালের বর্তমান পূর্বভূমির রঙের জন্য xterm অনুসন্ধান করুন। যদি আপনার টার্মিনালটি "স্বাভাবিক" দিয়ে শুরু করা হয়েছিল (যেমন 7 অগ্রভাগের রঙ হিসাবে) তবে আপনি কমান্ডটি চালানোর tput setaf 3আগে চালিত হন printf, printfউপরের কমান্ডটি এখনও "স্বাভাবিক" প্রত্যাবর্তন করে - এবং এটি ঠিক, কারণ এটি আপনার টার্মিনালের বর্তমান পূর্বভূমির রঙ। আমি যা আশা করছিলাম তা হ'ল বর্তমান কার্সারের অবস্থানের বর্তমান রঙটি পুনরুদ্ধার করার একটি উপায় ছিল যাতে আমি এটি এটিকে পরে "পুনরুদ্ধার" করতে সঞ্চয় করতে পারি - ওপি অনুসারে।
ফোরস্পাস্টমিডনাইট

1
@ ফোরস্পাস্টমিডনাইট - আপনি কি এখানে উত্তরের লিঙ্কটি অনুসরণ করেছেন? এছাড়াও, টমাস Dickey - (তিনি এই প্রশ্নের অন্যান্য উত্তরে মন্তব্য) হয় xtermএর রক্ষণাবেক্ষণকারী এবং এখানে একটি সক্রিয় সদস্য। (লিঙ্কটি তার ওয়েবসাইটটিতে রয়েছে - xtermএর পলায়ন ডকগুলি বিস্তৃত - এবং মূলত যে কোনও প্রোগ্রামার টার্মিনালটি লিখতে চায় তার জন্য স্ট্যান্ডার্ড রেফারেন্স)
মাইকজারভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.