সিটিআরএল + সি টিপে কমান্ডটি থামানো থেকে বিরত করুন


28

সুতরাং, আমি কিছু জোর্ক 1 খেলছিলাম এবং আমি আমার এক বন্ধুকে দেখানোর জন্য কিছু পাঠ্য অনুলিপি করতে গিয়েছিলাম, তবে আমি CTRL+ টিপতে ভুলক্রমে শিফট কীটি রাখা ভুলে গিয়েছিলাম C। এটি আদেশটি বন্ধ করে দিয়েছিল এবং আমি আমার জোর্কের ডেটা হারিয়ে ফেলেছি ...

সেখানে আউট তাদের "সহায়ক" টিপ কিছু বাছাই যে আমি কমান্ড যখন কীগুলি টেপে বাঁধন প্রতিরোধ ব্যবহার করতে পারেন CTRL+ + C?

নোট করুন যে জোরক টার্মিনালের অভ্যন্তরে চালিত হয়। এটি একটি টার্মিনাল-ভিত্তিক খেলা যেখানে আপনি বিভিন্ন ক্রিয়া সম্পাদনের জন্য আদেশ দেন।


সুতরাং আপনি কী চান Ctrl + c সমস্ত অ্যাপ্লিকেশন সম্পূর্ণরূপে বন্ধ করতে? যদিও এটি ভবিষ্যতে বিপর্যয়কর হতে পারে।
জবিন

উত্তর:


30

কী সংমিশ্রণটি Ctrl+ Cঅক্ষরটি প্রেরণ করে ^C(বাইট মান 3)। এর ফলে টার্মিনালটি পূর্বগ্রাউন্ডে চলমান প্রোগ্রামটিতে SIGINT সিগন্যাল প্রেরণ করে ¹ এই সিগন্যালের প্রচলিত ক্রিয়াটি হ'ল বর্তমান কমান্ডকে বাধাগ্রস্ত করা: ক্রমাগত কমান্ডগুলি প্রক্রিয়াকরণের জন্য ডিজাইন করা প্রোগ্রামগুলি তাদের শীর্ষ স্তরের প্রম্পটে ফিরে যায়, যখন একক ব্যাচ কমান্ড বা অবিচ্ছিন্ন মিথস্ক্রিয়া প্রস্থান হিসাবে প্রোগ্রাম করা হয়। স্পষ্টতই আপনি যে প্রোগ্রামটি ব্যবহার করছেন সেটি দ্বিতীয় মডেল অনুযায়ী ডিজাইন করা হয়েছিল।

এই সিগন্যাল-প্রেরণ কীটি কার্নেলের সাধারণ টার্মিনাল ইন্টারফেসের একটি বৈশিষ্ট্য, যা সমস্ত টার্মিনাল এমুলেটর এবং প্রকৃত শারীরিক টার্মিনাল দ্বারা ভাগ করা হয়। কমান্ডের সাহায্যে কোন কীটি এই সিগন্যালটি প্রেরণ করবে সেইসাথে অন্যান্য কীগুলি (বিশেষত অগ্রভাগের প্রোগ্রামটি স্থগিত করার জন্য SIGSTOPCtrlZ প্রেরণ করছে ) আপনি কনফিগার করতে পারেন stty। সাইন্টের জন্য কীটি Ctrl+ তে _(বর্তমান টার্মিনালে) স্যুইচ করতে :

stty intr '^_'

এটি পুরোপুরি অক্ষম করতে:

stty intr ''

সমস্ত সেটিংস ডিফল্টে পুনরায় সেট করতে:

stty sane

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

¹ আরও স্পষ্টভাবে , অগ্রভাগ প্রক্রিয়া গ্রুপের সমস্ত প্রক্রিয়াগুলির জন্য যার জন্য টার্মিনালটি নিয়ন্ত্রণকারী টার্মিনাল


32

CTRLঅগ্রভাগের কাজের জন্য + Cএকটি বিঘ্নিত সংকেত ( SIGINTযা সংকেত সংখ্যা 2) প্রেরণ করে । আপনি trap '' 2জোরক শুরু করার আগে কমান্ডটি ব্যবহার করে সিগন্যালটিকে "ট্র্যাপ করে" অক্ষম করতে পারেন ।

পুনঃ সক্ষম CTRL+ + C(untrap SIGINT) সঙ্গে trap 2

টিপ : আপনি এর মতো কিছু যুক্ত করতে পারেন ~/.bashrc:

alias zork="(trap '' 2 && cd ~/path/to/zork/ && frotz ZORK1.DAT)"

এইভাবে আপনি সিগন্যালটি অক্ষম ও পুনরায় সক্ষম করতে কখনই ভুলবেন না এবং কেবল zorkটার্মিনালে টাইপ করে গেমটি শুরু করা সহজ ।

দ্রষ্টব্য : আপনি যদি সংখ্যার পরিবর্তে সিগন্যাল নামটি ব্যবহার করতে পারেন তবে এটি যদি আপনার পক্ষে আরও সুবিধাজনক হয় তবে trap '' sigintবা trap '' int। আমি কেবল সংখ্যাগুলি ব্যবহার করতে অভ্যস্ত, যেমন ইন kill -9এবং এ জাতীয়।

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