আমি কীভাবে বাশের নির্দেশের বাকী একটি তালিকা বাতিল করতে পারি?


10

বাশ-এ, মাঝে মধ্যে আমি কমান্ডের একটি তালিকা টাইপ করব এবং হিট করব Enterএবং কেবলমাত্র পরে বুঝতে পারি যে তালিকার শেষের কাছে কিছু কমান্ডের সাথে একটি ভুল আছে is আমি জানি যে আমি Ctrl+ Cটিপলে এটি বর্তমানে চলমান কমান্ডটি শেষ করবে এবং বাকী তালিকাটি বাতিল করে দেবে। তালিকায় বাকি বাতিল করতে কোন উপায় আছে কি ছাড়া বর্তমানে চলমান কমান্ড সসীম?

উদাহরণস্বরূপ, ধরা যাক আমি এরকম কিছু টাইপ করেছি

foo; bar

অথবা

foo && bar

কোথায় fooএকটি দীর্ঘকাল ধরে চলমান আদেশ আছে যে বাধা না দেওয়া খুব গুরুত্বপূর্ণ, এবং barঅপরিবর্তনীয় এবং অযাচিত কিছু (বলুন, shutdown -h nowবা rm -rf /) করুন। যদিও fooএখনও চলমান হয়, যাক শেল কহন একটি সাধারণ উপায় fooফিনিস কিন্তু চালানোর জন্য না barপরে? (হ্যাঁ, আমি অনুমতিগুলি পরিবর্তন করতে পারলাম barযাতে এটি কার্যকর করা যায় না, তবে এটি বিশেষভাবে সুবিধাজনক নয় যদি আমি এর barমধ্যে rmএমন কিছু ব্যবহার করতে চাই তবে না আমার নিজের মালিকানা না থাকলে barবা barকোনও বিল্টিন না থাকলে এটি কাজ করবে না ))


আপনি শেষ পরিবর্তন করতে পারেন barকমান্ড some_command: ^bar^some_commandনিষ্পন্ন করা হবে আগে।
GAD3R

3
@ জিএডি 3 আর: তবে এটি বর্তমান লাইনে কোনও পরিবর্তন করবে না, এটি একটি নতুন শুরু করবে।
আরকাদিউস দ্রবকিজিক

উত্তর:


3

আমি পর্যবেক্ষণ করেছি যে CtrlZপ্রোগ্রামটিকে ব্যাকগ্রাউন্ড প্রক্রিয়াতে স্থানান্তর করতে ব্যবহারটি কৌশলটি করে।

foo && bar

foo; barপ্রয়োজনীয়ভাবে নিয়ন্ত্রণ না দেয় এমন মন্তব্যে এটিকে নির্দেশ করার জন্য @ আরকাদিউস দ্রাব্যাসিককে ধন্যবাদ জানাই ।

তারপর:

^Z

[1]+  Stopped                 foo

কমান্ডটি কেবল প্রথম কাজটি থামায় এবং

fg %1

এটি fooঅগ্রভাগে কেবলমাত্র টাস্ক নিয়ে আসে এবং টাস্কটি সম্পূর্ণ করে এবং প্রস্থান করে।

পিএস: এটি একটি ফাইলে দুটি স্ক্রিপ্ট লেখার মাধ্যমে পরীক্ষা করা যায়। পিছনে পিছনে সময় দেওয়ার জন্য কয়েক সেকেন্ডের জন্য ঘুমন্ত প্রথমটি।

আমি CtrlZহারাতে পেরেছি কেন কেবল কমান্ডটি পরিচালনা করে এবং বাকিটি ছেড়ে দেয়। জানতে আগ্রহী।


1
আমি এটি পুনরুত্পাদন করতে পারি না। আপনি কোন bashসংস্করণ ব্যবহার করেন? আমি ব্যবহার GNU bash, version 4.3.46(1)-release (x86_64-slackware-linux-gnu)। আমি 2 টি বাশ স্ক্রিপ্ট লিখেছি যা বিভিন্ন ফাইলগুলিতে লেখা :: পেস্টবিন . comwrite1.sh / rbKmdWgB এবং write2.sh: পেস্টবিন . com / bNx3VRws ws আমি তাদের মত সঞ্চালন করুন: ./write1.sh ; ./write2.sh। প্রথম লিপিটি wrote 1কয়েকবার প্রতিধ্বনিত হয় , আমি টিপছি C-z, এটি বলে [1]+ Stopped ./write1.shএবং আমি তাত্ক্ষণিকভাবে দ্বিতীয় স্ক্রিপ্টের আউটপুট দেখতে পাচ্ছি: wrote 2বারবার প্রতিধ্বনিত হচ্ছে।
আরকাদিউস দ্রবকিজিক

2
আমি মনে করি যে এই পদ্ধতিটি command1 && command2পাইপলাইনগুলির সাথে কাজ করে তা হ'ল প্রক্রিয়াটিতে সংকেত Control-zপ্রেরণ SIGCHLDকরে। এটি দিয়ে চেক করা যায় echo $?Bashতারপরে দেখুন যে প্রথম প্রক্রিয়াটি সফলভাবে শেষ হয়নি এবং পরবর্তী প্রক্রিয়াগুলি কার্যকর করে না।
আরকাদিউস দ্রবকিজিক

আমি ব্যবহার করছি GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)। হ্যাঁ, আমি মনে করি আপনি ঠিক বলেছেন। foo; barকাঙ্ক্ষিত উপায়ে নিয়ন্ত্রণ করা যায় না। Ctrl+Zকমান্ড চালানো থাকলে আমরা দ্বিতীয় প্রক্রিয়াটির প্রয়োজনীয় স্টপটি করতে পারি foo && bar। আমি উত্তর আপডেট করব। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
রেভানথ চেতলুরু

@ আরকাদিউসড্রাবসিজিক সিটিআরএল-জেড সিকটিএসটিপি পাঠায় না?
মুড়ু

@ রিভান্থচেতালুরু নোট যা barএখনও স্থগিত রয়েছে এবং jobsআউটপুট প্রদর্শিত হবে , তাই সম্ভবত এটিও হত্যা করা উচিত।
মুড়ু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.