ইন printf '%s\t%s\n' foo bar
, printf
আউটপুট দেয় foo<TAB>bar<LF>
।
f
, o
, b
, a
এবং r
একক-চওড়া গ্রাফিকাল অক্ষর।
এই অক্ষরগুলি পাওয়ার পরে, টার্মিনালটি একটি অনুরূপ গ্লাইফ প্রদর্শন করবে এবং কার্সারটিকে একটি কলাম ডান দিকে সরিয়ে ফেলবে, যদি না এটি ইতিমধ্যে পর্দার ডান প্রান্তে পৌঁছে যায় (মূল টেলি-টাইপ লেখকের কাগজ), যার ক্ষেত্রে এটি একটি লাইন খাইতে পারে এবং স্ক্রিনের বাম প্রান্তে ফিরে যান (মোড়ানো) বা কেবল টার্মিনালের উপর নির্ভর করে অক্ষরটি বাতিল করুন এবং এটি কীভাবে কনফিগার করা হয়েছে।
<Tab>
এবং <LF>
দুটি নিয়ন্ত্রণ অক্ষর। <LF>
(ওরফে নিউলাইন) হ'ল ইউনিক্স পাঠ্যের রেখার ডিলিমিটার তবে টার্মিনালের জন্য এটি কেবল একটি লাইন ফিড করে (কার্সারকে এক অবস্থান নীচে নিয়ে যান)। সুতরাং কার্নেলের টার্মিনাল ড্রাইভার এটি প্রকৃতপক্ষে <CR>
(স্ক্রিনের বাম প্রান্তে ফিরে), <LF>
(কার্সার ডাউন) ( stty onlcr
সাধারণত ডিফল্টরূপে) এ অনুবাদ করবে।
<Tab>
শূন্যস্থান পূরণ না করে কার্নারটিকে পরবর্তী ট্যাব স্টপে (যা বেশিরভাগ টার্মিনালগুলিতে ডিফল্ট হিসাবে 8 পজিশনের বাইরে থাকে তবে কোথাও সেট করার জন্য কনফিগারও করা যায়) to
সুতরাং যদি কার্সারটি খালি লাইনের শুরুতে ট্যাব সহ প্রতিটি 8 টি কলাম থামিয়ে ট্যাব সহ যদি এই অক্ষরগুলি পাঠানো হয়, এর ফলস্বরূপ:
foo bar
সেই লাইনে স্ক্রিনে মুদ্রিত। যদি তাদের পাঠানো হয় তবে কার্সারটি এমন একটি লাইনে তৃতীয় অবস্থানে রয়েছে xxxxyyyyzzzz
, যার ফলস্বরূপ:
xxfooyyybarz
টার্মিনালগুলিতে যা ট্যাবুলেশন সমর্থন করে না, টার্মিনাল ড্রাইভারগুলি সেই ট্যাবগুলিকে ফাঁকের ক্রমগুলিতে অনুবাদ করতে কনফিগার করা যেতে পারে। ( stty tab3
)।
এসপিসি অক্ষর, মূল টেলি-টাইপরাইটারগুলি কার্সারটিকে ডানদিকে \b
সরিয়ে ফেলত, যখন ব্যাকস্পেস ( ) এটিকে বাম দিকে সরিয়ে দেয়। এখন আধুনিক টার্মিনালগুলিতে, এসপিসি ডানদিকে চলে যায় এবং মোছা হয় (কোনও স্থানের অক্ষর যেমনটি আপনি আশা করেছিলেন তেমন লিখেছেন) writes সুতরাং এর দুলটি \b
ASCII এর চেয়ে নতুন কিছু হতে হয়েছিল। অধিকাংশ আধুনিক টার্মিনাল, এটি আসলে বর্ণের একটি ক্রম আছে: <Esc>
, [
, C
।
n
বাম, ডান, উপরে, নীচে বা স্ক্রিনের যে কোনও অবস্থানে অক্ষরগুলি সরানোর জন্য আরও পালানোর ক্রম রয়েছে । পর্দার লাইনগুলি বা অঞ্চলগুলি মুছতে (ফাঁকা করে পূরণ করুন) এর জন্য অন্যান্য পালানোর ক্রম রয়েছে etc.
সেই সিকোয়েন্স সাধারণত মত চাক্ষুষ অ্যাপ্লিকেশন দ্বারা ব্যবহার করা হয় vi
, lynx
, mutt
, dialog
যেখানে টেক্সট পর্দায় নির্বিচারে অবস্থানের সময়ে লেখা হয়।
এখন, সমস্ত এক্স 11 টার্মিনাল এমুলেটর এবং GNU এর মতো কয়েকটি অন্যান্য নন-এক্স 11 screen
আপনাকে কপি পেস্টের জন্য স্ক্রিনের অঞ্চলগুলি নির্বাচন করতে দেয়। আপনি যখন vi
সম্পাদকটিতে যা দেখেন তার একটি অংশ নির্বাচন করেন , আপনি সেই আউটপুট উত্পাদন করতে ব্যবহৃত সমস্ত পালানোর ক্রমগুলি অনুলিপি করতে চান না। আপনি যে পাঠ্যটি দেখতে চান তা নির্বাচন করতে চান।
উদাহরণস্বরূপ আপনি যদি চালান:
printf 'abC\rAC\bB\t\e[C\b\bD\n'
কোনটি একজন সম্পাদক অধিবেশন যেখানে আপনি প্রবেশ simulates abC
, শুরুতে ফিরে যান, প্রতিস্থাপন ab
সঙ্গে AC
, C
সঙ্গে B
, পরবর্তী ট্যাব বন্ধ করতে, আরও একটি কলাম ডানদিকে, দুটি কলাম বামে, স্থানান্তর তারপর তারপর তারপর এন্টার D
।
আপনি দেখুন:
ABC D
এটি ABC
, একটি 4 কলাম ফাঁক এবং D
।
আপনি যদি মাউসের সাথে xterm
বা putty
এটি নির্বাচন করেন তবে তারা নির্বাচনের মধ্যে ABC
4 টি স্থানের অক্ষর সংরক্ষণ করবে এবং D
না abC<CR>AC<BS>B<Tab><Esc>[C<BS><BS>D
।
নির্বাচনের শেষটি হ'ল printf
টার্মিনাল ড্রাইভার এবং টার্মিনাল এমুলেটর উভয়ই পোস্ট প্রসেসড করেছেন।
অন্যান্য ধরণের রূপান্তরের জন্য, দেখুন <U+0065><U+0301>
( e
তীব্র উচ্চারণের সংমিশ্রণে) এর পরিবর্তে <U+00E9>
( é
প্রাক-রচিত আকারে) পরিবর্তিত হয়েছে xterm
।
বা এটি টার্মিনাল ড্রাইভার দ্বারা echo abc
অনুবাদ করা শেষ ABC
হয় একটি পরে টার্মিনালে প্রেরণ আগে stty olcuc
।
এখন, <Tab>
লাইক <LF>
হ'ল এই কয়েকটি কন্ট্রোল ক্যারেক্টরগুলির মধ্যে একটি যা আসলে কখনও কখনও টেক্সট ফাইলগুলিতে পাওয়া যায় ( <CR>
এমএসডিওএস পাঠ্য ফাইলগুলিতেও এবং কখনও কখনও <FF>
পৃষ্ঠা বিরতির জন্য)।
সুতরাং কিছু টার্মিনাল এমুলেটরগুলি সংরক্ষণের জন্য অনুলিপি-পেস্ট বাফারগুলিতে যখন সম্ভব হয় তখন সেগুলি অনুলিপি করা পছন্দ করে (এটি সাধারণত এটির ক্ষেত্রে <CR>
নয় <LF>
তবে)।
উদাহরণস্বরূপ, ভিটিই-ভিত্তিক টার্মিনালগুলিতে gnome-terminal
, আপনি দেখতে পাচ্ছেন যে আপনি যখন printf 'a\tb\n'
খালি লাইনে আউটপুট নির্বাচন করেন , gnome-terminal
আসলে a\tb
এক্স 11 নির্বাচনের পরিবর্তে a
7 স্পেস এবং সংরক্ষণ করে b
।
কিন্তু আউটপুট printf 'a\t\bb\n'
, এটা দোকানে a
, 6 স্পেস এবং b
, এবং printf 'a\r\tb\n'
, a
, 7 স্পেস এবং b
।
অন্যান্য ক্ষেত্রেও রয়েছে যখন টার্মিনালগুলি প্রকৃত ইনপুটটি অনুলিপি করার চেষ্টা করবে, যেমন আপনি যখন চালানোর পরে দুটি লাইন নির্বাচন করেন printf 'a \nb\n'
যেখানে সেই অদৃশ্য ট্রেলিং স্পেসটি সংরক্ষণ করা হবে। অথবা দুটি লাইন নির্বাচন করার সময় একটি এলএফ বর্ণচিহ্ন অন্তর্ভুক্ত করা হয় না যখন দুটি লাইন ডান মার্জিনে মোড়ানো থেকে ফলাফল হয়।
এখন, আপনি যদি আউটপুটটি printf
ক্লিপবার্ড X11
সিলেক্ট করে নির্বাচন করতে চান তবে সরাসরি এটির মতো করাই ভাল:
printf 'foo\tbar\n' | xclip -sel c
মনে রাখবেন যে আপনি যখন এটি xterm
বা অন্যান্য টার্মিনালগুলিতে পেস্ট করেন তখন xterm
বাস্তবে এটি প্রতিস্থাপন করা \n
হয় \r
কারণ xterm
আপনি যখন চাপছেন তখন অক্ষরটি প্রেরণ করে Enter(এবং টার্মিনাল ড্রাইভারটি এটিকে আবার অনুবাদ করতে পারে \n
)।