CTRL + C হলে ^ C সরান


25

আপনি ^Cযখন শেলটিতে CTRL+ টিপেন তখন কীভাবে অপসারণের কোনও উপায় আছে Cযা রেড হ্যাট এন্টারপ্রাইজ লিনাক্স 6 ("সান্টিয়াগো") এর সাথে অন্তর্ভুক্ত? আমার নিজের সম্পাদনা করার অনুমতি আছে .bash_profile


4
চেষ্টা করুনset echo-control-characters off
সন্দীপ

1
আমি চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি
ফেডার গোল্ড

উত্তর:


29

আপনার ~/.inputrcফাইল সম্পাদনা করুন (বা তৈরি করুন) । একটি লাইন যুক্ত করুন

set echo-control-characters Off

এটি GNU রিডলাইন লাইব্রেরি (যা বাশ ব্যবহার করে) কে স্ক্রিনে কোনও নিয়ন্ত্রণ অক্ষর আউটপুট (প্রতিধ্বনি) না করার নির্দেশ দেয়। তারপরে সেটিংসটি সমস্ত নতুন বাশ সেশনে সক্রিয় থাকবে (এবং অন্য যে কোনও ইউটিলিটি যা রিডলাইন গ্রন্থাগার ব্যবহার করে)।

লক্ষ্য করুন যে যদি আপনার ইউনিক্স সিস্টেমটি রিডলাইন লাইব্রেরির জন্য (সাধারণত /etc/inputrc) সিস্টেম-বিস্তৃত কনফিগারেশন ফাইল নিয়ে আসে , তবে আপনার ব্যক্তিগত কনফিগারেশন ফাইলটিতে সেই ফাইলটি অন্তর্ভুক্ত করা দরকার:

$include /etc/inputrc
set echo-control-characters Off

আরেকটি বিকল্প হ'ল সিস্টেম-ব্যাপী কনফিগারেশন ফাইলটির ব্যক্তিগত অনুলিপি তৈরি করা এবং তারপরে এটি পরিবর্তন করুন।


হাই, আমি এটি এবং এটির কাজটি ভাল করে পরীক্ষা করেছি তবে যখন আমি কোন চলমান ব্যাশ কমান্ডটি বাধাগ্রস্থ করি তখন এটি কাজ করে না, উদাহরণস্বরূপ sleep 180এবং CTRL + C টিপুন
rdd

@ টেন-কয়েন এটি কেবল তখনই কাজ করবে যদি কমান্ডটি দুর্ভাগ্যক্রমে পঠন পাঠাগারটি ব্যবহার করে।
কুসালানন্দ

1
যদি ~/.inputrcইতিমধ্যে উপস্থিত না থাকে তবে কেবল ফাইল তৈরি করা কিছু বিদ্যমান সেটিংস হারাতে পারে। আমার ক্ষেত্রে আমি প্রথম লক্ষ্য করেছি যে সিটিআরএল + বাম এবং সিআরটিএল + ডান কাজ করা বন্ধ করে দিয়েছে। ফিক্সটি ~/.inputrcএই লাইন দিয়ে আমার শুরু করার ছিল $include /etc/inputrccp /etc/inputrc .inputrcপছন্দসই হিসাবে ন্যায়বিচার এবং সম্পাদনা করাও সম্ভব ।
ক্যাস্পার্ড

2
@ ক্যাস্পার্ড ভাল পয়েন্ট! আমি জানতাম না যে একটি ব্যক্তিগত কনফিগারেশন ফাইল যুক্ত করা সিস্টেম-ওয়াইড কনফিগারেশন ফাইলটি পড়ার অক্ষম করবে (আমার সিস্টেমে একটি নেই)। আমি আমার উত্তর আপডেট করব।
কুসালানন্দ

20

নিম্নলিখিত চেষ্টা করুন:

stty -echoctl

ব্যাখ্যার জন্য স্টাফেন চেজেলাসের এই দুর্দান্ত এবং বিস্তারিত পোস্টটি দেখুন যা কিছু অন্যান্য বৈশিষ্ট্যও ব্যাখ্যা করেstty

যদি আপনি এই পরিবর্তনটি স্থায়ী করতে চান (এবং আপনি bashআপনার প্রশ্নে অন্তর্নিহিত হিসাবে ব্যবহার করছেন ) তবে আপনার মন্তব্যগুলিতে জেএমএমজি.bashrc দ্বারা উল্লিখিত হিসাবে রাখা ভাল (তাই এটি সমস্ত ইন্টারেক্টিভ শেলের ক্ষেত্রে প্রযোজ্য)।


+1 পঠনের সমাধানের বিপরীতে, টার্মিনালে সমস্ত জিনিস চলমান না থাকলে এটি বেশিরভাগের জন্য কাজ করা উচিত।
জোল

1
একটি সম্ভবত উল্লেখ করা উচিত .bash_profileযে ফাইলটি কেবল লগইন শেল দ্বারা পার্স করা হলে এটি সমস্ত টার্মিনালগুলিতে কাজ করবে না । এটি .bashrcপরিবর্তে রাখা উচিত , সুতরাং এটি সমস্ত ইন্টারেক্টিভ আমন্ত্রণগুলি দ্বারা পঠিত।
জোল

1
এটি কি এখনও কাঁচা 0x03 বাইট প্রতিধ্বনিত করবে না, যা কিছু টার্মিনাল দ্বারা তাত্ত্বিকভাবে ব্যাখ্যা করা যেতে পারে? আপনি যদি পঠন-বিহীন কমান্ড চালানোর মতো কাজ করেন তবে একটি তীর কী ^[[A
টিপলে

1
@ র্যান্ডম 832 +1 আপনি ঠিক বলেছেন। আমি অনুমান করি যে সেটিংটির নামটি খারাপভাবে রাখা হয়েছে; এটি নিয়ন্ত্রণ অক্ষরের প্রতিধ্বনিকে নিয়ন্ত্রণ করে না বরং প্রতিধ্বনির আগে তাদের মুদ্রণযোগ্য অক্ষরে অনুবাদ করেছে। এই পার্শ্ব প্রতিক্রিয়া প্রতিরোধ করতে, আপনাকেও করতে stty -echoহবে। অবশ্যই এটি অন্য সমস্ত কিছু প্রতিধ্বনি রোধ করতে চলেছে, যা সম্ভবত এই উত্তরটিকে কোনও উত্তর দেয় না যদি আপনি যা চান তা এসকে গোপন করে ^Cরাখত।
জোল

1
@jlmg যদি ^Cসর্বদা শেষ পর্যন্ত থাকে তবে আমি আপনার সাথে একমত হতে পারি। তবে ^Cকার্সারটি যেখানে ছিল সেখানে উইলটি মুদ্রিত হবে যা কমান্ডের যে কোনও জায়গায় অক্ষরগুলির জুড়ি ওভাররাইট করতে পারে। এর অর্থ যদি আপনাকে সেই কমান্ডের কিছু অংশ অনুলিপি করতে হয় তবে আপনি ম্যাংলেড কিছু দিয়ে শেষ করতে পারেন। এবং ^Cটার্মিনালটি দেখার সময় এটি এত সহজে স্বীকৃত নয় যে কমান্ডের শেষে থাকলে এটি হত।
ক্যাস্পারড

2

আপনি যদি এমন একটি কনফিগারেশন সন্ধান করার চেষ্টা করছেন যা সাধারণ প্রতিধ্বনি (সহ echoctl) এবং কেবল সংকেত উত্পন্ন চরিত্রগুলির প্রতিধ্বনিকে নিঃশব্দ করে দেবে, এবং আপনি নিশ্চিত যে এটি সম্ভব হবে কারণ আপনি আগে সেভাবে এটি কাজ করেছেন ...

আপনি সম্ভবত এটি সেভাবে দেখেছেন। কিন্তু এটি আর সম্ভব নয়, এই প্রতিশ্রুতিবদ্ধতার কারণে :

প্রতিশ্রুতিবদ্ধ ec5b1157f8e819c72fc93aa6d2d5117c08cdc961

এনটিটিটিওয়াইন লাইন শৃঙ্খলে প্রতিধ্বনিত INTR / QUIT / SUSP চালু করুন (উদাহরণস্বরূপ, যদি stty echoctl সেট করা থাকে এবং ctrl-C INTR হিসাবে সেট করা থাকে তবে ctrl-C "" ^ C "হিসাবে উপস্থিত হবে)।

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

আপনি যদি মনে রাখবেন যে লিনাক্স কীভাবে এটি প্রতিধ্বনি করে না^C , তবে পুরানো আচরণটি ফিরে পাওয়ার একমাত্র উপায় আপনার কার্নেলটি প্যাচ করা। সাম্প্রতিক সংস্করণগুলিতে, সিগন্যাল উত্পন্ন অক্ষরের প্রতিধ্বনন ড্রাইভার / টিটি / এন_ট্টি.সি এর 1215-1218 লাইনে রয়েছে

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