বাশে বিলম্ব স্থগিতের (সিটিআরএল) ওয়াইসের উদ্দেশ্য কী?


30

ব্যাশ ম্যান পৃষ্ঠার পুরো অংশটি যা প্রযোজ্য কেবল তা বলে:

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

আমি কখনও ব্যবহার করি নি Ctrl- Y; আমি কেবল এটি সম্পর্কে শিখেছি। আমি কেবল Ctrl- Z(স্থগিত) দিয়ে ভাল কাজ করেছি ।

আমি এই বিকল্পটি কী তা কল্পনা করার চেষ্টা করছি । এটি কখন কার্যকর হবে?

(দ্রষ্টব্য যে এই বৈশিষ্ট্যটি সমস্ত ইউনিক্স রূপে বিদ্যমান নেই It's এটি সোলারিস এবং ফ্রিবিএসডি- তে উপস্থিত রয়েছে তবে লিনাক্সে নেই The সংশ্লিষ্ট সেটিংসটি stty dsusp)

সম্ভবত কম সাবজেক্টিভ্যালি: এমন কি এমন কিছু আছে যা দিয়ে সম্পাদন করা যায় Ctrl- Yযা কেবল সহজেই সম্পাদন করা যায় না Ctrl- Z?


@ গিলস, যদিও ফ্রিবিএসডি মনে হয় এটি একটি stty dsusp, তবে আমি এটিকে ^ ওয়াইয়ের উপর একটি সাইনস্টিপি পাঠাতে সক্ষম হইনি (আমি সোলারিসে করেছি)। তোমার আছে?
স্টাফেন চেজেলাস

উত্তর:


23

সিএসএসের জন্য 4BSD ম্যানুয়াল থেকে :

একজন ^Zঅবিলম্বে কার্যকর নেয় এবং মতো মুলতুবী আউটপুট এবং অপঠিত ইনপুটে একটি ইন্টারাপ্ট বাতিল করা হয় যখন এটি টাইপ করা হয়। আরও একটি বিশেষ কী রয়েছে ^Yযা কোনও প্রোগ্রাম এটি পড়ার চেষ্টা না করা অবধি স্টপ সিগন্যাল তৈরি করে না (2)। আপনি যখন কোনও কাজের জন্য কিছু কমান্ড প্রস্তুত করেছেন যা সেগুলি পড়ার পরে আপনি বন্ধ করতে চান সে ক্ষেত্রে এটি কার্যকরভাবে টাইপ করা যেতে পারে।

সুতরাং, উদ্দেশ্যটি হ'ল প্রথমটি প্রক্রিয়া চলাকালীন একাধিক ইনপুট টাইপ করা এবং সেগুলি শেষ হওয়ার পরে কাজটি বন্ধ করে দেওয়া।


এই বর্ণনাটি ব্যাশ ম্যানুয়াল থেকে সূক্ষ্মভাবে পৃথক। "... একটি স্টপ সংকেত উৎপন্ন করে না যতক্ষণ না একটি প্রোগ্রাম প্রচেষ্টা পড়তে করুন। " এটি স্ট্রিম ইনপুট সবকিছু মত শোনাচ্ছে পর্যন্ত^Y সফলভাবে পড়তে হবে, এবং তারপর ^Yধাক্কা খায় প্রক্রিয়া বন্ধ করা হবে না। আমি কি এই ঠিক পড়ছি?
ওয়াইল্ডকার্ড

ম্যাক ওএস এক্সে আমার পরীক্ষায় @ উইল্ডকার্ড, () ফিরে আসার আগে এই প্রক্রিয়াটি বন্ধ হয়ে গেছে (তবে পড়ার জন্য কল করার পরে ( যেটি ওয়াই রানগুলি ফিরে আসত )), এবং এটি পুনরায় চালু হওয়ার পরে এটি ^ ওয়াইয়ের আগে থেকেই ইনপুটটি গ্রহণ করে । আমি মনে করি এটি যেমন ব্যবহারের উদ্দেশ্যে ছিল, যদিও এটি একটি লাইনের শুরুতে ব্যবহৃত হবে, সুতরাং এই ক্ষেত্রে আচরণটি কোনও বিষয় নয়। আমার সন্দেহ হয় যে প্রকৃত কোডে, এটি স্থগিত করা হয় যখন process Y ব্যবহারকারী প্রসেস রিড বাফারটিতে অনুলিপি করা হত।
র্যান্ডম 832

আমি ঠিক বলেছিলাম, আসল বিএসডি কার্নেলের টিট্রেড ফাংশনে আপনি এটি দেখতে পারেন এবং আধুনিক ওএসএক্স
এলোমেলো 832

তবে, প্রক্রিয়াটি পুনরায় শুরু হওয়ার পরে, কলটি সফল হবে এবং আপনার টার্মিনালে টাইপ করা ডেটা এতে থাকবে ^Y, এমনকি যদি আপনি প্রক্রিয়াটি অস্বীকার না করে এবং প্রক্রিয়াটি পুনরায় শুরু করার আগে আপনার টার্মিনালটি বন্ধ করে দেন। রাইট? ( "... এটি পুনরায় চালু হওয়ার পরে এটি ^ ওয়াইয়ের আগে থেকেই ইনপুট গ্রহণ করে" " আমি এটাই বোঝাতে চাইছিলাম; আমি সাধারণত সি কোডে ডিল করি না)) :)
ওয়াইল্ডকার্ড

হ্যাঁ। এবং এটি শেষে কোনও নিউলাইন ছাড়াই প্রত্যাবর্তন করে, যা ক্যানোনিকাল মোডে পড়ার জন্য অস্বাভাবিক [যদি আপনি কিছু পাঠ্য টাইপ করেন এবং তারপরে ^ ডি একবার চাপেন তবে] আমি সন্দেহ করি যে তারা এই কেসটি সম্পর্কে খুব বেশি ভাবেননি, কারণ এটি সত্যই একটি লাইনের শুরুতে টাইপ করার ইচ্ছা।
র্যান্ডম 832

11

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


কিন্তু যদি টার্মিনাল যাহাই হউক না কেন থেকে ইনপুট পড়তে চেষ্টা যাচ্ছে, এটা হবে থামাতে যে সময়ে (এবং আপনার ইনপুট জন্য অপেক্ষা করুন), এবং আপনি যা করতে পারেন ^Zতা তারপর
ওয়াইল্ডকার্ড

হ্যাঁ। আপডেট দেখুন।
টমাসজ

আরও একটি পরীক্ষা করুন। @ উইল্ডকার্ড
টমাসজ

1
তবে যদি এটির একটি সময়সীমা পাওয়া যায়, তবে আপনি বিশেষ কিছু না করলে এটি কেবল কৌতূহলজনকভাবে শেষ হয় না?
ড্যানিয়েল ওয়াগনার

1
এটা হতে পারে. তবে এটি যেতে পারে এবং কিছু ডিফল্ট কাজও করতে পারে।
টমাসজ

4

আমি এমন একটি দৃশ্যের কথা ভাবতে পারি যেখানে এটি কার্যকর হতে পারে তবে এটি একটি স্বীকৃত এজ-কেসের কিছু।

ধরুন আপনি কোনও স্ক্রিপ্ট ডিবাগ করছেন যা ক্লিন-আপ রুটিনের অংশ হিসাবে মুছে ফেলার আগে আপনি অস্থায়ী ফাইলগুলি বিশ্লেষণ করতে চান যা সেগুলি লিখছে।

read fooফাইলগুলি লেখার পরে আপনি কোথাও যুক্ত করতে পারেন (তবে ক্লিনআপের আগে), স্ক্রিপ্টটি চালান, এবং টিপুন Ctrl- Yসেগুলি উত্পন্ন হওয়ার সাথে সাথে। এরপরে আপনার যা যা করা দরকার তা করতে পটভূমিতে স্থগিত স্ক্রিপ্টের সাথে একটি প্রম্পটে ফেলে দেওয়া হবে এবং তারপরে fgস্ক্রিপ্টটি সম্পূর্ণ করার অনুমতি দিতে পারেন ।


1
অসম্ভব বলে মনে হচ্ছে, কারণ স্ক্রিপ্টটি যাইহোক ইনপুটটির জন্য অপেক্ষা করবে। সুতরাং আপনি কেবল সহজেই এটির জন্য আপনাকে ইনপুট দেওয়ার অনুরোধ জানাতে এবং তারপরে স্থগিত করতে পারেন ^Z। অন্য কথায়: আপনি টাইপ পর fgস্ক্রিপ্টটি কিছু ইনপুট দিতে হবে যাহাই হউক না কেন আগেই অব্যাহত থাকবে। সুতরাং আমার প্রশ্ন; আমি এখনও এর বিন্দু দেখতে পাচ্ছি না ^Y। (যদিও উত্তর দেওয়ার জন্য ধন্যবাদ!) :)
ওয়াইল্ডকার্ড

2

আমি কেবলমাত্র দৃশ্যের কথা ভাবতে পারি (এবং এমনকি এটি আমি খুব দৃinc় মনে করি না) এটি হ'ল যদি আপনি শেল কমান্ডের জন্য কিছু টাইপ-ফরোয়ার্ড ব্যবহার করতে চান। বলুন কিছু কমান্ড চলছে যা ভবিষ্যতে কিছুটা সময় ইনপুট পড়বে। তারপরে আপনি এটি ^ ওয়াই করতে পারেন এবং তারপরে তত্ক্ষণাত্ পরবর্তী শেল কমান্ডটি টাইপ করুন যা চালানো কমান্ড স্থগিত করার পরে আপনি কার্যকর করতে চান। আমি মনে করি না বিএসডি ইউনিক্স ব্যবহারের কয়েক দশকে আমি সত্যিই এটি ব্যবহার করেছি।

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