টিপুট এর 'সেটফ' এবং 'সেটফ' এর মধ্যে পার্থক্য কী?


17

কমান্ডটিতে tputরঙ নির্ধারণের জন্য দুটি পৃথক বিকল্প রয়েছে setfএবং setafএখনও তারা উভয়ই আমার কম্পিউটারে ঠিকঠাক কাজ করছে বলে মনে হচ্ছে:

$ tput setf 2 && echo 'Hello world!'
$ tput setaf 2 && echo 'Hello world!'

setbএবং এর সাথে একই ধরণের দ্বৈততা রয়েছে বলে মনে হয় setab

দুটি বিকল্পের মধ্যে পার্থক্য কী?


1
বিশদের জন্য terminfo(5)ম্যান পৃষ্ঠাটি দেখুন ncurses
স্টাফেন চেজেলাস

উত্তর:


15

setfশুধুমাত্র 8 টি রঙে সীমাবদ্ধ। setaf256 টি পর্যন্ত রঙ সেট আপ করতে পারে।

(নিম্নলিখিত সমস্ত তথ্য urxvt এর জন্য নির্দিষ্ট হবে, কারণ এটি আমার টার্মিনাল, তবে তথ্যটি অন্য টার্মিনালের মতো, একই রকম হবে না)

উভয় setfএবং setafএকটি পৃথক এস্কেপ কোড সরবরাহ। আপনি নিম্নলিখিতটি দেখতে পারেন:

# tput setf 2 | xxd  
0000000: 1b5b 3332 6d                             .[32m

# tput setaf 2 | xxd 
0000000: 1b5b 3338 3b35 3b32 6d                   .[38;5;2m

আমার urxvt(7)ম্যান পৃষ্ঠা থেকে:

   "ESC [ Pm m"
       Character Attributes (SGR)
       ...
       Pm = 30 / 40       fg/bg Black
       Pm = 31 / 41       fg/bg Red
       Pm = 32 / 42       fg/bg Green
       Pm = 33 / 43       fg/bg Yellow
       Pm = 34 / 44       fg/bg Blue
       Pm = 35 / 45       fg/bg Magenta
       Pm = 36 / 46       fg/bg Cyan
       Pm = 37 / 47       fg/bg White
       Pm = 38;5 / 48;5   set fg/bg to colour #m (ISO 8613-6)

উপরের xxdআউটপুট থেকে আমরা দেখতে পাচ্ছি যে এটি tput setf 2ব্যবহার করে Pm = 32, যা রঙকে সবুজ করে দেয়। tput setaf 2অন্যদিকে ব্যবহার করে Pm = 38;5, যা আইএসও 8613-6 (এছাড়াও সবুজ) এ সংজ্ঞায়িত রঙের প্রতিনিধিত্ব করে।
আইএসও 8613-6-এ, রঙ 0x00-0x07 স্ট্যান্ডার্ড রঙের মতো এবং 0x08 - 0x0f স্ট্যান্ডার্ড "গা bold়" রঙ। একবার 0x10-0xff এ গেলে আপনি নতুন রঙ পান।

উইকিপিডিয়া থেকে চুরি :

0x00-0x07:  standard colors (as in ESC [ 30..37 m)
0x08-0x0f:  high intensity colors (as in ESC [ 90..97 m)
0x10-0xe7:  6*6*6=216 colors: 16 + 36*r + 6*g + b (0≤r,g,b≤5)
0xe8-0xff:  grayscale from black to white in 24 steps

tputযদিও আসলে উপলব্ধ এএনএসআই রঙ-সিকোয়েন্স রেঞ্জগুলি ব্যবহার করে না বলে মনে হয় । যে কোনওর জন্য n > 7, tput setaf nআমার টার্মিনালের পাঠ্যের কোনও প্রভাব নেই।
কাইল স্ট্র্যান্ড

প্রকৃতপক্ষে, এটি আমার পরিবেশের এক চঞ্চলতা হতে পারে; আমার জন্য থেকে আউটপুট tput setf 2এবং tput setaf 2হয় উভয় .[32m
কাইল স্ট্র্যান্ড

5

ম্যানুয়াল থেকে: man 5 terminfo

টেকট্রনিক্স -টাইপ টার্মিনালে বর্তমান অগ্রভাগ বা পটভূমির রঙ পরিবর্তন করতে সেটফ (সেট এএনএসআই ফোরগ্রাউন্ড) এবং সেটব (সেট এএনএসআই ব্যাকগ্রাউন্ড) বা সেটফ (সেট ফোরগ্রাউন্ড) এবং সেটব (সেট ব্যাকগ্রাউন্ড) ব্যবহার করুন। এগুলির একটি পরামিতি, রঙ নম্বর লাগে take এসভিআর 4 ডকুমেন্টেশনটি কেবল সেটফ / সেট্যাব বর্ণনা করে ; XPG4 খসড়া বলছেন যে "যদি টার্মিনাল সমর্থন সেট পটভূমি পুরোভাগে ANSI পালাবার ক্রম সেগুলিও কোডেড করা উচিত setaf এবং setab যথাক্রমে। টার্মিনাল সমর্থন সেট পটভূমি পুরোভাগে অন্যান্য পালাবার ক্রম সেগুলিও কোডেড করা উচিত যদি setf এবং setbযথাক্রমে সংজ্ঞা দেওয়া থাকলে ভিডপুটস () ফাংশন এবং রিফ্রেশ ফাংশনগুলি সেটফ এবং সেটাব ব্যবহার করে । "

সুতরাং উত্তরটি হ'ল: সেটফের অর্থ এএনএসআই অগ্রাধিকার সেট করুন , অর্থাৎ এএনএসআই এস্কেপ সিকোয়েন্সগুলি ব্যবহার করুন এবং সেটফের অর্থ সেট ফোরগ্রাউন্ড (এএনএসআই ব্যতীত কিছু পালানোর অনুক্রম ব্যবহার করা)।


3

ক্ষমতা দুটি সেট এএনএসআই রঙের তালিকায় লাল / নীল রঙের জন্য বিভিন্ন ক্রম ব্যবহার করে।

হিসাবে উল্লেখ করা হয়েছে, এটি ncurses টার্মিনো ম্যানুয়াল পৃষ্ঠাতে ব্যাখ্যা করা হয়েছে । কিছু ইতিহাস:

  • (1990-এর দশকের মাঝামাঝি) প্রথম দিকে, সর্বাধিক উপলভ্য "রঙ" টার্মিনাল বিবরণ ব্যবহৃত হয় setf/setb
  • টার্মক্যাপ ব্যবহারকারীদের সাথে কিছু বিভ্রান্তি ছিল যারা প্রাসঙ্গিক Sf/Sbকোডগুলি ব্যবহার করে setaf/setab(এবং AF/ABটার্মক্যাপের পরিবর্তে ) - তবে এএনএসআই সক্ষমতা সহ সঠিক ক্ষমতা ব্যবহারের পরিবর্তে এএনএসআই এর অব্যাহতি সিকোয়েন্সগুলি (যা টার্মক্যাপ দিয়ে কাজ করে) ব্যবহার করে ।
  • এজন্য আপনি দুটি সমান, যেমন, মিলিগ্রাম , ইন্টারিক্স , বিটারম (পাশাপাশি ফ্রিবিএসডি-র টার্মক্যাপ ফাইলে বেশ কয়েকটি এন্ট্রি, আবার এই প্রোগ্রামগুলির সংশোধন করার ক্ষেত্রে অন্যদের অনীহার সাথে মিলিত হয়ে প্রাথমিক প্রাথমিক বিভ্রান্তির কারণে) খুঁজে পাবেন।

setaf/setabটার্মিনফোগুলির ইতিহাসে এএনএসআই মোটামুটি দেরিতে যুক্ত করা হয়েছিল কারণ আপনি সক্ষমতার স্ট্রিংয়ের তালিকায় তাদের অবস্থানটি অনুমান করতে পারেন । মনে রাখবেন যে কয়েক বছর ধরে সেগুলি পর্যায়গুলিতে যুক্ত করা হয়েছিল এবং কিছু সিস্টেমের মধ্যে পার্থক্য রয়েছে (এনক্রাসের কয়েকটি উদাহরণ রয়েছে যেমন Caps.hpuxএটি সিস্টেমগুলির সাথে মেলে দেওয়ার জন্য সংকলন করা যেতে পারে)। এটি দরকারী সংখ্যক টার্মিনাল বিবরণগুলির সংখ্যার জন্য গণ্য হয়েছে যা রেফারেন্সের জন্য ব্যবহার করা যেতে পারে।

সব কিছুর সাথে, বিদ্যমান setf/setbস্ট্রিংগুলি এএনএসআই আদেশের সাথে মেলে না তা অবিলম্বে লক্ষ্য করা গেল না, যা 1998 সালে কিছু সংশোধন করেছিল , এবং প্রশ্নগুলি কেন লাল / নীল রঙের বিনিময়?

8-রঙের এএনএসআই সিকোয়েন্সটি 16-বর্ণগুলিতে প্রসারিত করা সম্ভব হয়েছিল (অনুমান করে যে 8-15 রঙগুলি 0-7 এর উজ্জ্বল সংস্করণ ছিল) setf/setbতবে প্রথম 16 টি রঙের প্রসারিত করার জন্য কোনও স্কিম উদ্ভাবনের কোনও ভাল কারণ নেই ।

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