নন-ব্লকিং বাশ কমান্ড


11

ধরা যাক আমার নীচে নীচে একটি বাশ স্ক্রিপ্ট রয়েছে:

#!/bin/sh
gedit
rm *.temp

আমি যখন এটি ব্যবহার করে কার্যকর করি sh ./test.sh, তখন geditপপ-আপ হয় তবে rmঅংশটি বন্ধ না হওয়া পর্যন্ত চলবে না gedit

আমি চাই স্ক্রিপ্টটি geditবন্ধ না থাকলেও চলতে থাকবে ; যেমন geditবাশ কার্যকর করতে বাধা দিচ্ছে না।

আমি যে উদাহরণটি দিয়েছি তা হ'ল একটি উদাহরণ ( rmপ্রথমটি স্থাপন করা কোনও বাস্তব পরিস্থিতিতে কাজ করবে না)।

উত্তর:


25

আপনি যে শব্দটির সন্ধান করছেন সেটিকে একটি "ব্যাকগ্রাউন্ডিং" কাজ বলা হয়। আপনি যখন শেল বা স্ক্রিপ্টে কোনও কমান্ড চালাবেন আপনি ব্যাকগ্রাউন্ডে প্রেরণ করতে শেষে একটি পতাকা যুক্ত করতে পারেন এবং নতুন কমান্ড বা স্ক্রিপ্টের বাকী অংশটি চালিয়ে যেতে পারেন। সহ বেশিরভাগ শেলগুলিতে sh, এটি &চরিত্রটি।

#!/bin/sh
gedit &
rm ./*.temp

এই ভাবে, শেল অবসান জন্য অপেক্ষা করে না geditএবং উভয় rmএবং geditএকই সময়ে চালানো হবে।

"ব্লকিং" শব্দটি সাধারণত ইনপুট / আউটপুট স্ট্রিমগুলির সাথে করতে হয়, প্রায়শই ফাইল বা কোনও ডিভাইসে। এটি আপনি যে অর্থে ব্যবহার করেছেন সেটির অনুরূপ কিছুতে সংকলিত ভাষাগুলিতেও ব্যবহার করা হয়েছে, তবে ব্যাশ এবং অনুরূপ শেল স্ক্রিপ্টিং-এ, পরিভাষা (এবং ফাংশন!) বরং ভিন্ন।


ধন্যবাদ! এটি ব্যাখ্যা করে যে আমি কেন গুগলে কেবল ফিফো এবং ইনপুট ফলাফল পাচ্ছি: ডি
প্লান্ট

আমার ধারণাটি হ'ল, প্ল্যান্ট বাইরে থেকে কোনও স্ক্রিপ্টকে প্রভাবিত করতে চান, প্রতিটি ক্রিয়াকলাপটি পটভূমিতে সম্পাদন করতে চান, স্ক্রিপ্টটি পুনরায় লেখার জন্য নয়।
ব্যবহারকারী অজানা

@ ব্যবহারকারীর: তিনি কী চেয়েছিলেন তা অনুমান করতে এমনকি কয়েকজন পড়তে আমার সময় লেগেছিল। আপনি স্পষ্টতার জন্য প্রশ্নটিতে মন্তব্য করতে পারেন।
কালেব

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