কমান্ড চেইনকে কীভাবে ব্যাকগ্রাউন্ড করবেন?


15

আমি একটি কমান্ড চেইনের মতো ব্যাকগ্রাউন্ড করতে চাই cp a b && mv b c && rm a

আমি চেষ্টা করেছি cp a b && mv b c && rm a &কিন্তু এটিই শেষ প্রক্রিয়াটিকে ব্যাকগ্রাউন্ড করে।

আমি কমান্ড চেইনের ব্যাকগ্রাউন্ড করব কীভাবে?

উত্তর:


22

cp a b && mv b c && rm a &সঠিক. &তুলনায় কম নজির আছে &&। আসলে এবং নিউলাইন &ব্যতীত অন্য যে কোনও কিছু থেকে কম অগ্রাধিকার রয়েছে ;: &একই সিনট্যাকটিক বিভাগে রয়েছে ;, পার্থক্যটি যে পটভূমিতে চালিত ;হওয়ার সাথে সাথে অগ্রভাগে কমান্ড তালিকাটি &চালায়। আপনি নিজের জন্য এটি পরীক্ষা করতে পারেন:

$ dash -c 'sleep 2 && echo waited & echo backgrounded'
backgrounded
$ waited

Pdksh, ksh93, bash, csh, tcsh সহ একই।

ব্যতিক্রমটি zsh, যা অদ্ভুতভাবে বেমানান। এটি ম্যানুয়ালটিতে নথিভুক্ত করা হয়েছে :

একটি sublist একটি দ্বারা সমাপ্ত হয়ে গেলে &, &|অথবা &!, শেল পটভূমিতে এটা গত পাইপলাইন executes, এবং এটি সমাপ্ত হওয়া পর্যন্ত (অন্যান্য শাঁস যা ব্যাকগ্রাউন্ডে পুরো sublist চালানো থেকে পার্থক্য লক্ষ্য করুন) অপেক্ষা করুন নেই।

দুর্ভাগ্যক্রমে, zsh এমনকি sh বা ksh সামঞ্জস্যতা মোডে এইভাবে আচরণ করে। পুরো কমান্ডটি পটভূমিতে কার্যকর করা হয়েছে তা নিশ্চিত করার জন্য, এটির চারপাশে ব্রেস বা বন্ধনী যুক্ত করুন। প্যারেন্টিসেস একটি সাবশেল তৈরি করে যেখানে ব্রেসগুলি থাকে না, তবে এটি একটি অপ্রাসঙ্গিক (কিছু শেলের মধ্যে একটি মাইক্রো-অপ্টিমাইজেশন হিসাবে বাদে) যেহেতু একটি ব্যাকগ্রাউন্ড কমান্ড যে কোনও উপায়ে সাব-শেলের মধ্যে রয়েছে।

{ cp a b && mv b c && rm a; } &

8
তবে বাশ , { ... ; } &বর্তমান প্রক্রিয়া স্তরে কাঁটাচামচ করুন, যখন একটি সাব-শেল ( ... ) &থেকে কাঁটাচামচ করুন ... ফলাফল একই, তবে যাইহোক একটি সূক্ষ্ম পার্থক্য রয়েছে।
এফ। হাউরি

14

আপনি (cp a b && mv b c && rm a )&পুরো চেইনটি অন্তর্ভুক্ত করতে পছন্দ করতে পেরেন্টিজেসগুলিতে রাখতে পারেন ।


2
এবং গুরুত্বপূর্ণ বিষয় এটি পরিষ্কার করে দেয় যে পুরো শৃঙ্খলা ব্যাকগ্রাউন্ড, এমনকি এমন কোনও ব্যক্তির কাছেও যারা অপারেটরদের কীভাবে আবদ্ধ হয় তার বিধিগুলি জানেন না
জ্যাকওয়ার্ডি ২

2
@ গিলসের উত্তরে আমার মন্তব্যটি দেখুন, আমি মনে করি { ... ; }এটি একটি পছন্দনীয় ফর্ম (উপায়)।
এফ। হাউরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.