আমি get [[যখন আমি কনসোল লগইন স্ক্রিনে তীর টিপে টিপছি তখন কী পাওয়ার কোনও কারণ আছে?


32

যখনই আমি কনসোল লগিনে থাকি up, পূর্ববর্তী টাইপিত কমান্ডগুলি দেখতে আমি ইচ্ছাকৃতভাবে তীর টিপতাম। তবে আমি এটি দেখতে ^[[A

তবে আমি Ctrl Alt Print Screen Scroll Lock Pause Break Page Up Page Down Winকী টিপলে কোনও অক্ষর প্রতিধ্বনিত হয় না।

এর পিছনে কারণ কী হতে পারে?

কি ^[[Aধরণের অক্ষর কিছু পরোক্ষভাবে?

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

উত্তর:


20

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


3
@ রুবানস্যাভি সিটিআরএল, অল্ট এবং উইন (প্রায়শই জিএনইউ / লিনাক্স ওয়ার্ল্ডে সুপার বলা হয়) পরিবর্তনকারী। আপনি যদি সেগুলি এবং একটি কী টিপেন তবে আপনি স্ক্রিনে আলাদা কিছু মুদ্রিত দেখতে পাবেন। আমার সন্দেহ হয় যে স্ক্রোল লকটি টিটি নিয়ন্ত্রণের জন্য কার্নেল বা অন্য কোনও নিম্ন স্তরের দ্বারা ব্যাখ্যা করা হয়েছে, যদিও আমি নিশ্চিত নই। পৃষ্ঠাটি উপরে এবং নীচে সম্ভবত গ্রাস করেছে gettyবা login, যদিও আমি নিশ্চিত নই কেন। শিক্ষিত অনুমান বলে যে মুদ্রণ স্ক্রিনটি বিশেষভাবে কার্নেল দ্বারা nelতিহাসিক কারণে ব্যাখ্যা করা হয়। আমি সংশোধনকারীদের ব্যতীত অন্য কোনও বিষয়ে 100% নিশ্চিত নই।
strugee

3
উপরেরটি সম্ভবত উত্তরে সম্পাদনা করা উচিত।
strugee

চ্যাটে সংশ্লিষ্ট আলোচনা: chat.stackexchange.com/transcript/message/12481097#12481097
strugee

19

কীবোর্ডগুলি কম্পিউটারে ইভেন্টগুলি প্রেরণ করে। একটি ইভেন্ট "স্ক্যান কোড এনএনএন ডাউন" বা "স্ক্যান কোড এনএনএন আপ" বলে। চেইনের অন্য প্রান্তে, টার্মিনালে চলমান অ্যাপ্লিকেশনগুলি অক্ষরের অনুক্রমের আকারে ইনপুট আশা করে। (যদি না তারা এক্স সার্ভারের মতো কাঁচা অ্যাক্সেসের অনুরোধ না করে)) আপনি চাপলে A, কীবোর্ডটি "স্ক্যান কোড 38 ডাউন" তথ্য প্রেরণ করে। কনসোল ড্রাইভার তার কীম্যাপটি সন্ধান করে এটিকে "চরিত্র a" এ রূপান্তরিত করে (যদি কোনও পরিবর্তনকারী কী চাপ না দেওয়া হয়)।

আপনি যখন কোনও কী বা কী সংমিশ্রণ টিপেন যা কোনও চরিত্রের ফলাফল দেয় না, তথ্যের অক্ষরের ক্ষেত্রে এনকোড করা দরকার। কয়েকটি কী এবং কী সংমিশ্রণে একই সাথে নিয়ন্ত্রণের অক্ষর রয়েছে, যেমন Ctrl+ Aঅক্ষর প্রেরণ করে (বাইট মান 1), Returnঅক্ষরটি প্রেরণ করে (Ctrl + M, বাইট মান 13) ইত্যাদি। বেশিরভাগ ফাংশন কীগুলিতে একই অক্ষর থাকে না এবং পরিবর্তে প্রেরণ হয় অক্ষরের একটি ক্রম যা (পলায়ন, বাইট মান 27) অক্ষর দিয়ে শুরু হয়। উদাহরণস্বরূপ, কীটি Upএস্কেপ সিকোয়েন্সে অনুবাদ করা হয়েছে ␛[A(তিনটি অক্ষর: পালানো, উন্মুক্ত বন্ধনী, মূলধন A)।

কনসোলে থাকা ব্যবহারকারীর নাম প্রম্পটটি বোবা এবং বেশিরভাগ পালানোর ক্রমগুলি বুঝতে পারে না। এতে আপনার ব্যবহৃত লাইনের সংস্করণ এবং ইতিহাস বৈশিষ্ট্য নেই: সেগুলি শেল সরবরাহ করে এবং আপনি লগ ইন না করা পর্যন্ত আপনার শেল নেই have সুতরাং এটি সহজেই পালানোর ক্রম প্রদর্শন করে। চরিত্রটির জন্য কোনও গ্লাইফ নেই , সুতরাং এটি প্রদর্শিত হবে ^[^সাইন ঐতিহ্যগতভাবে নিয়ন্ত্রণ অক্ষরের জন্য একটি উপসর্গ হিসাবে ব্যবহৃত হয়, এবং অব্যাহতি ^[তার বাইট মান কারণ: এটি বাইট মান [, বিয়োগ 64।

আপনি যদি Upশেল প্রম্পটে টিপেন, এটি আপনার শেলের সাথে একই 3-অক্ষরের ক্রম প্রেরণ করে। শেল এটিকে একটি কমান্ড সিকোয়েন্স হিসাবে ব্যাখ্যা করে (সাধারণত পূর্ববর্তী ইতিহাসের আইটেমটি স্মরণ করার জন্য)। আপনি টিপলে Ctrl+ + Vতারপর Upএকটি শেল প্রম্পট, এই টিপে প্রম্পটে পালাবার ক্রম: Ctrl+ + V, কমান্ড যেমন ব্যাখ্যা আক্ষরিক পরিবর্তে পরবর্তী অক্ষরে সন্নিবেশ করতে একটি কমান্ডটি তাই অক্ষরটি অবশ্যই কোন পালাবার ক্রম শুরুর হিসেবে ব্যাখ্যা করা হয় না ।

কিছু কী কেবলমাত্র পরিবর্তনকারী এবং টার্মিনাল অ্যাপ্লিকেশনগুলিতে প্রেরণ করা হয় না। উদাহরণস্বরূপ, আপনি চাপলে Shift, এই তথ্যটি টার্মিনাল ড্রাইভারের মধ্যে থেকে যায় এবং আপনি যদি টিপেন তবে তা বিবেচনায় নেওয়া হয় A, সুতরাং ড্রাইভারটি Aপরিবর্তে অ্যাপ্লিকেশনটিতে প্রেরণ করে a

অতিরিক্তভাবে কিছু ফাংশন কী আপনার কনসোলে ম্যাপ করা যায় না।

জিইউআইতে অনুরূপ দৃশ্যের জন্য দেখুন বাশের মেটা কী কী?


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

5

কী কী কীভাবে "টার্মিনাল" (যেমন টার্মিনাল এমুলেটর অ্যাপ্লিকেশন) দ্বারা প্রতিনিধিত্ব করা হয় তা সম্পর্কে নয়। আপনি যা দেখছেন তা হ'ল এএনএসআই কোড ( এএনএসআই এস্কেপ সিকোয়েন্স ) উপরের এক লাইনের দিকে সরানোর জন্য, তবে মুদ্রণযোগ্য আকারে অনুবাদ হয়েছে।

  1. কীবোর্ড হার্ডওয়্যার "স্ক্যান কোডগুলি" প্রেরণ করে তবে সেগুলি অনুবাদ করে কমান্ডলাইন-স্তরের অ্যাপ্লিকেশনগুলিকে অক্ষর হিসাবে উপস্থাপন করা হয়। কীটি Aএকটি একক বাইটে পরিণত হয়: Aশিফট কীটি ডাউন থাকলে (বা শিফট লক), aঅন্যথায়।

  2. একটি ANSI-অনুবর্তী Terminal, নির্দেশক তীরচিহ্নগুলি একটি একক অক্ষর (সেখানে হওয়া ASCII অক্ষরসমষ্ঠিতে তীর জন্য কোন কোড আছে), কিন্তু একটি 3-চরিত্র "পালাবার ক্রম" -এ পাঠান না: escape-[-A। অন্য তিনটি তীর কী রয়েছে escape-[-B, C, D

  3. পুরানো শারীরিক এএনএসআই টার্মিনালে প্রেরণ (প্রতিধ্বনিত) প্রেরণ করা থাকলে একই অক্ষরের ক্রমটি কার্সারটিকে এক লাইনে উপরে নিয়ে যায়। টার্মিনাল এমুলেটর সহ অনেক প্রোগ্রাম এই চরিত্রের অনুক্রমগুলি সনাক্ত করে এবং কিছু উপযুক্ত করে তোলে: টার্মিনাল এমুলেটরগুলি কার্সারটিকে উপরে সরিয়ে ফেলবে ( cursesলাইব্রেরিটি এইভাবে কার্সারটিকে প্রায় ঘুরিয়ে দেয়), তবে bashএটিটি আটকাবে এবং পরিবর্তে ইতিহাস স্ক্রোল করবে।

  4. স্ক্রিনের চারপাশে কার্সারটি সরানোর জন্য কোনও ব্যবহার নেই এমন প্রোগ্রামগুলিতে কার্সারটি পুরো জায়গা জুড়ে থাকা এড়ানোর জন্য, আপনি প্রায়শই কীবোর্ড ইনপুটটিতে ESC দেখতে পাবেন যা মুদ্রণযোগ্য ক্রম হিসাবে প্রদর্শিত হবে ^[(কারণ পলায়নের সাথে মিল রয়েছে control-[)। এটি আসলে টার্মিনাল ডিভাইস ইন্টারফেস দ্বারা পরিচালিত হয়; দেখতে stty(1)। ফলস্বরূপ, উপরের তীরটি হিসাবে প্রদর্শিত হবে ^[[A। আপনি টাইপ করুন cat, রিটার্ন হিট করুন এবং কিছু তীর কী টিপলে কমান্ড লাইন থেকে এটি দেখতে পাবেন । কনসোল লগইন স্ক্রিনে আপনি যা দেখেছেন এটি এটি।

অবশেষে: Control, Alt, এবং অন্যান্য কী আপনি অক্ষর সিকোয়েন্স ম্যাপ না উল্লেখ করেছে। তারা অন্য কিপ্রেস দ্বারা প্রেরিত চরিত্রকে প্রভাবিত করে ( উপরে a/ Aউদাহরণের মতো ) অথবা তাদের পাঠ্যে ম্যাপিং নেই। এই জাতীয় কীটিপ্রেসগুলি কেবল এমন প্রোগ্রামগুলি দ্বারা সনাক্ত করা যায় যা কীবোর্ড ইভেন্টগুলির জন্য শোনেন। এগুলি স্ট্যান্ডার্ড ইনপুট (বা কোনও ফাইলে লেখা যেতে পারে) থেকে পড়ে দেখা যায় না।


3

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

উল্লম্ব তীর কীগুলি কমান্ডের ইতিহাসটি নেভিগেট করতে রিডলাইনে কনফিগার করা হয়েছে। এবং লগইন প্রমটে কোনও কমান্ডের ইতিহাস নেই। সেই কারণেই চরিত্রগুলি ^[[Aএবং ^[[Bস্ক্রিনে মুদ্রিত হয়। তাহলে কি ^[[Aমানে?

বাশের ম্যানুয়াল পৃষ্ঠাটি নীচে বলেছে PROMPTING:

\[     begin a sequence of non-printing characters, which could be used to embed
       a terminal control sequence into the prompt

পালাবার ক্রম ANSI মধ্যে নির্দেশক তীরচিহ্নগুলি জন্য আছেন:

  • [ValueAকার্সার আপ (যেখানে Valueএমপিপি হতে পারে)

  • [ValueBকার্সার ডাউন (যেখানে Valueএমটিপি হতে পারে)


5
আপনার উত্তরটি ভিন্ন জিনিস সম্পর্কে, কারণ লগইন প্রম্পট মুদ্রিত হয় এবং এটি দ্বারা পরিচালিত হয় login, যা সম্পর্কিত নয় bash
রিস্টো সালমিনেন

1
bashএবং loginলাইন সম্পাদনা করতে একই লাইব্রেরি (রিডলাইন) ব্যবহার করছে। পার্থক্যটি কেবলমাত্র loginএকটি আদেশ হিসাবে উল্লম্ব তীর কীগুলি ব্যাখ্যা করে bashনা।
বিশৃঙ্খলা

হ্যাঁ, আমি এটি স্বীকার করি।
রিস্তো সালমেনেন

বাশ সিনট্যাক্স বলতে বোঝায় এর ^[প্রতিনিধিত্ব দেখতে escapeতবে তারা বিভিন্ন জিনিস different বাশ আদৌ কোনও সিনট্যাক্স ব্যবহার করতে পারত। প্রকৃতপক্ষে, আপনি যখন লেখেন \[A, বাশ তিনটি অক্ষর আউটপুট দেয়: ^[(অর্থাত্ পালাতে) [,, A
অ্যালেক্সিস

0

সেগুলি এএনএসআই পলায়নের কোড^[আপনার শেলটি ESCবাইট প্রদর্শন করতে (ASCII বাইট 27) প্রদর্শনের জন্য ব্যবহার করা স্বরলিপিটি । সুতরাং আপনার উদাহরণটি ESC বাইট যা অনুসরণ করে পাঠ্য [A। আপনি উইকিপিডিয়া নিবন্ধে দেখতে পারেন, ^[[(এর ESCপরে [) একটি নিয়ন্ত্রণ সিকোয়েন্স ইন্ট্রোডুসার বা সিএসআই। CSI Aমানে একটি কলাম দ্বারা কার্সারটি সরানো।

আপনি যদি টার্মিনালটিতে একটি এস্কেপ কোড দেখতে চান তবে টাইপ করুন CTRL + V এবং তারপরে অন্য কী ক্রম key উদাহরণস্বরূপ, CTRL + V এর পরে উপরের তীর শোগুলি প্রদর্শিত হবে ^[[A


0

কমান্ড শেল, উদাহরণস্বরূপ বাশ হ'ল প্রোগ্রাম যা "পূর্ববর্তী কমান্ডটি পুনরুদ্ধার করুন" অ্যাকশনে তীর অনুবাদ করে। আপনার কোনও কমান্ড শেল চলমান নেই।


0

TLDR

আপনি সম্ভবত চলমান shযা আপনি উপরের তীর কী টিপলে কাঁচা কীডকোডগুলি আউটপুট করে।

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

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