কী ধরণের সিকোয়েন্সগুলি "\ 033]" থেকে শুরু করে পালানোর ক্রমগুলি


19

আমি বাশ-এ শুরু করে অনেকগুলি পালানোর সিকোয়েন্স পেয়েছি \033], তবে এই সিকোয়েন্সগুলি কী এবং কেন সেগুলি শুরু হচ্ছে \033]?

উত্তর:


25

স্ট্রিংটি আসলে \033[এবং এটি সম্পূর্ণ জিনিস নয়।

এর পরে খোলার বন্ধনীটি একটি সংখ্যা এবং প্রতীকগুলির একটি সিরিজ আসে। এই স্ট্রিংটি একটি এস্কেপ সিকোয়েন্স হিসাবে পরিচিত এবং অন্যান্য জিনিসের মধ্যে কনসোলের কার্সার এবং পাঠ্য রঙ নিয়ন্ত্রণ করতে ব্যবহৃত হয়।

নন-প্রিন্টিং এস্কেপ সিকোয়েন্সগুলি বদ্ধ করতে হবে \[\033[ and \]

যদি পলায়ন ক্রমটি পাঠ্যের রঙ নিয়ন্ত্রণ করে থাকে তবে এটি অনুসরণ করবে একটি m

রঙ সিকোয়েন্সগুলির জন্য এখানে একটি টেবিল রয়েছে:

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   

সুতরাং, আপনি যদি নিজের কনসোল প্রম্পটটি নীল হতে চান তবে আপনি নীচের অংশীদারি ক্রমটি ব্যবহার করবেন (যে ফাইল নামটিতে আমি ভুলে যাচ্ছি):

\[\033[34m\]

(লক্ষ্য করুন m)

এই পালানোর ক্রমটি কেবল রঙ নিয়ন্ত্রণ করে না। এটি কার্সার চলাচলও নিয়ন্ত্রণ করতে পারে। আন্দোলনের কোডগুলি এবং তারা কীভাবে কাজ করে সে সম্পর্কে এখানে একটি টেবিল / তালিকা রয়েছে:

  • কার্সার অবস্থান:

    \033[<L>;<C>H

    অথবা

    \033[<L>;<C>f

    লাইন এল এবং কলাম সি তে কার্সার রাখে

  • কার্সারটি এন লাইনগুলিতে উপরে সরান:

    \033[<N>A
  • কার্সারটি এন লাইনের নীচে সরান:

    \033[<N>B
  • কার্সারটি N কলামগুলিতে এগিয়ে যান:

    \033[<N>C
  • কার্সারটিকে পিছনে এন কলামগুলি সরান:

    \033[<N>D
  • স্ক্রিনটি সাফ করুন, এতে যান (0,0):

    \033[2J
  • লাইনের শেষে মুছুন:

    \033[K
  • কার্সার অবস্থান সংরক্ষণ করুন:

    \033[s
  • কার্সারের অবস্থান পুনরুদ্ধার করুন:

    \033[u

কেবল সচেতন থাকুন যে শেষ দুটি আপনার ব্যবহৃত টার্মিনাল এমুলেটরটিতে কাজ করতে পারে না। স্পষ্টতই, কেবল xtermএবং nxtermএই দুটি ক্রম ব্যবহার করুন।

এবং উদাহরণস্বরূপ এই পালানোর ক্রমগুলির একটি ব্যবহার করে বলুন: আমি আমার কার্সারটি 3 লাইন, কলাম (অক্ষর) 9 এ রাখতে চাই want এর জন্য, আমি ব্যবহার করব

\[033\[3;9H]

(আমি ধরে নিচ্ছি যে কলাম 0 প্রথম অবস্থান, সুতরাং এটি 8 তম অক্ষর হবে)।

সূত্র: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html (6.2 পড়ুন)

আরও সাধারণ পাঠ: http://ascii-table.com/ansi-escape-sequences.php

উইকিপিডিয়া: https://en.wikedia.org/wiki/ANSI_escape_code



2
নোট করুন যে '\ 033' হ'ল অষ্টালে ESCAPE অক্ষর, তাই এটি দশমিক (27) বা হেক্স (0x1 বি) দেওয়া যেতে পারে। ইস্ক্যাপ লেখার অন্যান্য সাধারণ উপায় রয়েছে, যেমন শেল স্ক্রিপ্টগুলিতে '^ [', বিন্ডকিতে "\ ই" ইত্যাদি
জেমসেকফ

1
দয়া করে নোট করুন যে সেই টেবিলের বেশ কয়েকটি এন্ট্রি বিভ্রান্তিমূলক বা ভুল: ব্যাকগ্রাউন্ডের জন্য একটি সম্পূর্ণ পৃথক কোড (40-49) রয়েছে, এবং 7 এর পরিবর্তে অগ্রভূমি এবং পটভূমি অদলবদল করে; ESC [2Kকার্সারের আগে এবং পরে উভয়ই সম্পূর্ণ লাইনটি মুছে দেয়। আরও ভাল উত্স হ'ল উইকিপিডিয়া নিবন্ধ, বা আপনি সরাসরি ইসিএমএ -48 , বিভাগ 8.3.117 এসজিআর যেতে পারেন - গ্রাফিক রেন্ডেশন নির্বাচন করুন
ডেলটাব

ফ্রেজ "নিম্নলিখিত বাক্য প্রতিটি শেষে 'মি' অক্ষর একটি স্টপ চরিত্র হিসাবে ব্যবহার করা হয়" cplusplus.com পোস্টে হয় একটু বিভ্রান্তিকর যেহেতু শুধু নিচের টেবিল কমান্ড যে স্পষ্টত একটি দ্বারা সমাপ্ত হয় না ধারণ করে "M"। প্রকৃতপক্ষে শীর্ষে উপস্থাপন করা হলে এটি এখানে আরও বিভ্রান্তিকর বলে মনে হচ্ছে।
ilkkachu

1
প্রযুক্তিগতভাবে, 0;রঙের ক্রমগুলির মধ্যে শীর্ষস্থানীয় অপ্রয়োজনীয়। এটি কেবল অগ্রভাগ সেট করার আগে পটভূমির রঙকে ডিফল্ট করে তোলে। আপনি এর সাথে ব্যাকগ্রাউন্ডও সেট করতে পারেন 4x
মনিকার মামলার তহবিল

17

তারা টার্মিনালের নিয়ন্ত্রণ কমান্ড।

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

সুস্পষ্ট নিয়ন্ত্রণের অক্ষরগুলি হ'ল লাইন ফিড (নিউলাইন), ব্যাকস্পেস এবং বেল বীপের মতো উপাদান, তবে অক্ষর দিয়ে শুরু করে অক্ষরগুলির অনুক্রম হিসাবে আরও নির্দিষ্ট কমান্ড দেওয়া হয় ESC(দশমিকের কোড 27, হেক্সে 0x1 বি, বা 033 অক্টাল)। এটি প্রায়শই ^[বা \033আপনার উদাহরণ হিসাবে প্রদর্শিত হয়।

অনুক্রমটিকে ESC [সিএসআই, বা কন্ট্রোল সিকোয়েন্স প্রবর্তক বলা হয় এবং এটি uচ্ছিক সংখ্যাসূচক প্যারামিটার সহ একটি কমান্ড শুরু করে, সাধারণত একটি চিঠি শেষ হয় যা প্রধান কমান্ডকে সংজ্ঞায়িত করে। সাধারণ পালানোর সিকোয়েন্সগুলির বেশিরভাগই এই শ্রেণিতে পড়ে।

এস্কেপ কোডগুলির তালিকা পাওয়া যাবে যেমন console_codes(4)ম্যান পৃষ্ঠাতে এবং এএনএসআই এস্কেপ কোডের জন্য উইকিপিডিয়া পৃষ্ঠায় ।

কিছু উদাহরণ:

ESC [ 4 A             move cursor 4 lines up (4 can be any number)
ESC [ 5 B             move cursor 5 lines down
ESC [ 2 K             erase current line 
ESC [ 30;46 m         set black text (30) on cyan background (46)
ESC [ 0 m             reset color and attributes

আপনি কমান্ডগুলি যেমন বাশ দিয়ে পরীক্ষা করতে পারেন। -eপতাকাটি ব্যবহার করে , বিল্টিন echoকমান্ডটি চরিত্রের \033উপস্থাপনা হিসাবে গ্রহণ করে ESC

উদাহরণস্বরূপ, এটি পর্দার মাঝখানে রঙিন একটি শুভেচ্ছা এবং অন্যটি মূল কার্সার অবস্থানে সাধারণত মুদ্রণ করবে:

echo -e '\033[s\033[12;30f\033[30;46m  Hello!  \033[0m\033[uhello'

আপনি যে ক্রমটি ESC ]উল্লেখ করেছেন সেটি হ'ল ওএসসি বা অপারেটিং সিস্টেম কমান্ড, যা বেশিরভাগ কমান্ডটিতে উইন্ডো শিরোনাম xtermএবং অন্যান্য স্থাপন করতে ব্যবহৃত হয় , যেমন:

echo -e '\033]0;new window title\a'

তারপরেও ESC ( A(এবং অন্যান্য অক্ষরগুলি) কিছু টার্মিনালগুলিতে জাতীয় চরিত্র সেট করে দেয়, এটি একটি সম্ভাব্য হাসিখুশি প্রভাবের জন্য


8

অপারেটিং সিস্টেম কমান্ড ( ) escape]প্রবর্তন করতে ডান বর্গাকার বন্ধনী অনুসরণ করে এস্কেপ ব্যবহার করা হয় ।OSC

এটি ECMA-48 এ রয়েছে এবং আপনি এক্সটির্ম কন্ট্রোল সিকোয়েন্সগুলিতে এক্সটার্ম দ্বারা ব্যবহৃত কন্ট্রোল সিকোয়েন্সগুলির সংক্ষিপ্তসার পড়তে পারেন , উদাহরণস্বরূপ, টার্মিনাল উইন্ডোর শিরোনাম পরিবর্তনের জন্য।

এস্কেপ সিকোয়েন্সগুলি বিভিন্ন অক্ষর দিয়ে শুরু হতে পারে। গ 1 (8-বিট) কন্ট্রোল অক্ষর xterm কন্ট্রোল সিকোয়েন্স অধ্যায় যারা কয়েক উল্লেখ: CSI(যা আপনি দেখতে escape[, APC, DCS, PM। পৃথক (সেকেন্ড) অক্ষরের জন্য কারণ কারণ যুগল (অব্যাহতি এবং ]) একটি সঙ্গে যুক্ত করা হয় একক-বাইট নিয়ন্ত্রণ অক্ষর বিভিন্ন ধরণের এস্কেপ ক্রমের জন্য ব্যবহৃত হয় ।

আপনি যদি স্পেসিফিকেশনটি পড়ে থাকেন তবে আপনি লক্ষ্য করবেন যে CSIসংখ্যার পরামিতিগুলি নিয়ন্ত্রণের জন্য ব্যবহৃত হয়, যখন OSCস্ট্রিংগুলিকে অনুমতি দেয়। বিয়ন্ড মাত্র বাক্য গঠন, কমিটির যা এই মান নির্মিত জন্য মন ব্যবহারসমূহ ছিল APCএবং PMযা থেকে ভিন্ন DCSএবং OSC


7

এগুলিকে এএনএসআই এস্কেপ কোডগুলি বলা হয় এবং এগুলি কনসোল_কোডগুলির ম্যান পৃষ্ঠাতে তালিকাভুক্ত হয় । এগুলি ব্যাশ-নির্দিষ্ট নয়, ততক্ষণ কোনও কনসোল অ্যাপ্লিকেশনটিতে কাজ করবে যতক্ষণ না টার্মিনাল তাদের সমর্থন করে (বেশিরভাগ টার্মিনাল এমুলেটরগুলি করে)।


1

অন্যান্য উত্তরে বর্ণিত "এস্কেপ সিকোয়েন্সস" নির্ভর করে আপনি কোন টার্মিনাল টিওয়াইপি (বেশিরভাগ ক্ষেত্রে "এএনএসআই" বা ডেরাইভেট / অনুরূপ) রয়েছেন on

$ echo $TERM  
xterm

আপনি যদি এই স্ক্রিপ্টগুলি লিখতে চান যা (কিছুটা) টার্মিনালটির স্বতন্ত্র, তবে এখনও উদাহরণস্বরূপ রঙ এবং অন্যান্য বিশেষ বৈশিষ্ট্য ব্যবহার করে, তবে এর লিখিত সামগ্রীতে একবার দেখুন man terminfo

যেমন

$ echo -n ".";tput setb 6;tput setf 4;echo -n "test";tput sgr0;echo "."

হলুদ বর্ণের ব্যাকগ্রাউন্ড এবং লাল ফোরগ্রাউন্ড রঙের .test.সাথে মুদ্রণ করবে testএবং এটি যে কোনও টার্মিনালের জন্য কাজ করবে যা প্রকৃতপক্ষে একইভাবে রঙগুলি ব্যবহার করতে সক্ষম।

মধ্যে দেখার জন্য আসলে ছাপা হয়, পাইপ এটা od -t x1zহিসাবে

$ tput sgr0 | od -t x1z  
0000000 1b 28 42 1b 5b 6d                                >.(B.[m<  
0000006

... যেখানে মানগুলি হেক্সাডেসিমালে প্রদর্শিত হয় ("x" এর কারণে)।

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