আমি একটি কমান্ড চেইনের মতো ব্যাকগ্রাউন্ড করতে চাই cp a b && mv b c && rm a
।
আমি চেষ্টা করেছি cp a b && mv b c && rm a &
কিন্তু এটিই শেষ প্রক্রিয়াটিকে ব্যাকগ্রাউন্ড করে।
আমি কমান্ড চেইনের ব্যাকগ্রাউন্ড করব কীভাবে?
আমি একটি কমান্ড চেইনের মতো ব্যাকগ্রাউন্ড করতে চাই cp a b && mv b c && rm a
।
আমি চেষ্টা করেছি cp a b && mv b c && rm a &
কিন্তু এটিই শেষ প্রক্রিয়াটিকে ব্যাকগ্রাউন্ড করে।
আমি কমান্ড চেইনের ব্যাকগ্রাউন্ড করব কীভাবে?
উত্তর:
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; } &
আপনি (cp a b && mv b c && rm a )&
পুরো চেইনটি অন্তর্ভুক্ত করতে পছন্দ করতে পেরেন্টিজেসগুলিতে রাখতে পারেন ।
{ ... ; }
এটি একটি পছন্দনীয় ফর্ম (উপায়)।
{ ... ; } &
বর্তমান প্রক্রিয়া স্তরে কাঁটাচামচ করুন, যখন একটি সাব-শেল( ... ) &
থেকে কাঁটাচামচ করুন ... ফলাফল একই, তবে যাইহোক একটি সূক্ষ্ম পার্থক্য রয়েছে।