লিনাক্স কমান্ড চেইনিং মানে, একাধিক কমান্ড কম্বাইন করা এবং সেগুলো অপারেটরের আচরণের উপর ভিত্তি করে এক্সিকিউট করা। লিনাক্সে কমান্ড চেইনিং কিছুটা শেল স্ক্রিপ্ট শেলে লিখার মতো, এবং টার্মিনাল থেকে সরাসরি এক্সিকিউট করা। চেইনিং প্রক্রিয়াটি অটোমেট করা সম্ভব করে তোলে। আরো, একটি অ্যানঅ্যাটেন্ডেড মেশিন চেইনিং অপারেটরগুলির সাহায্যে অনেক বেশি সিস্টেম্যাটিকভাবে কাজ করতে পারে।
আরও পড়ুন: Awk এবং রেগুলার এক্সপ্রেশন ব্যবহার করে ফাইলে টেক্সট ফিল্টার করা
এই আর্টিকেলটি প্রায়শই ব্যবহৃত কমান্ড-চেইনিং অপারেটর গুলোর ওপর আলোকপাত করার লক্ষ্যে, সংক্ষিপ্ত বর্ণনা এবং সংশ্লিষ্ট উদাহরণ সহ, যা নিশ্চিতভাবে আপনার প্রোডাক্টিভিটি বাড়াবে এবং সিস্টেম লোড কমিয়ে ছোট এবং অর্থবহ কোড লিখতে সাহায্য করবে।
১. एम्पারস্যান্ড অপারেটর (&)
'&'-র ফাংশন হলো কমান্ডটিকে ব্যাকগ্রাউন্ডে রান করানো। শুধু কমান্ডটি টাইপ করুন তারপর একটি হোয়াইট স্পেস এবং '&'। আপনি একসাথে একাধিক কমান্ড ব্যাকগ্রাউন্ডে রান করতে পারেন।
ব্যাকগ্রাউন্ডে একটি কমান্ড চালান:
admin@wsxdn.com:~$ ping -c5 www.tecmint.com &
একসাথে দুটি কমান্ড ব্যাকগ্রাউন্ডে চালান:
admin@wsxdn.com:/home/tecmint# apt-get update & apt-get upgrade &
২. সেমিকোলন অপারেটর (;)
সেমিকোলন অপারেটর একাধিক কমান্ড একসাথে রান করার সম্ভব করে, এবং কমান্ড এক্সিকিউশন ক্রমাগতভাবে ঘটে।
admin@wsxdn.com:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test
উপরের কমান্ড কম্বিনেশন প্রথমে update ইনস্ট্রাকশন, তারপর upgrade ইনস্ট্রাকশন এবং সর্বশেষে বর্তমান ওয়ার্কিং ডিরেক্টরির অধীনে 'test' ডিরেক্টরি তৈরি করবে।
৩. AND অপারেটর (&&)
AND অপারেটর (&&) দ্বিতীয় কমান্ডটি শুধু এক্সিকিউট করবে, যদি প্রথম কমান্ডের এক্সিকিউশন সফল হয়, অর্থাৎ, প্রথম কমান্ডের এক্সিট স্ট্যাটাস 0 হয়। এই কমান্ডটি শেষ কমান্ডের এক্সিকিউশন স্ট্যাটাস চেক করার জন্য খুবই উপকারী।
উদাহরণস্বরূপ, আমি টার্মিনালে links কমান্ড ব্যবহার করে tecmint.com ভিজিট করতে চাই, কিন্তু তার আগে হোস্ট লাইভ কিনা না তা চেক করতে চাই।
admin@wsxdn.com:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com
৪. OR অপারেটর (||)
OR অপারেটর (||) প্রোগ্রামিং-এ 'else' স্টেটমেন্টের মতো। উপরের অপারেটর আপনাকে দ্বিতীয় কমান্ড এক্সিকিউট করতে দেয় শুধু যদি প্রথম কমান্ডের এক্সিকিউশন ব্যর্থ হয়, অর্থাৎ, প্রথম কমান্ডের এক্সিট স্ট্যাটাস '1' হয়।
উদাহরণস্বরূপ, আমি non-root অ্যাকাউন্ট থেকে 'apt-get update' এক্সিকিউট করতে চাই এবং যদি প্রথম কমান্ড ব্যর্থ হয়, তবে দ্বিতীয় 'links www.tecmint.com' কমান্ডটি এক্সিকিউট হবে।
admin@wsxdn.com:~$ apt-get update || links tecmint.com
উপরের কমান্ডে, যেহেতু ব্যবহারকারী-কে সিস্টেম আপডেট করার অনুমতি ছিল না, অর্থাৎ প্রথম কমান্ডের এক্সিট স্ট্যাটাস '1' এবং তাই শেষ কমান্ড 'links tecmint.com' এক্সিকিউট হয়।
যদি প্রথম কমান্ড সফলভাবে এক্সিকিউট হয়, এক্সিট স্ট্যাটাস '0' হলে? স্পষ্টই! দ্বিতীয় কমান্ড এক্সিকিউট হবে না।
admin@wsxdn.com:~$ mkdir test || links tecmint.com
এখানে, ব্যবহারকারী তার হোম ডিরেক্টরিতে 'test' ফোল্ডার তৈরি করে, যার জন্য সে অনুমতিপ্রাপ্ত। কমান্ডটি সফলভাবে এক্সিকিউট হয় এক্সিট স্ট্যাটাস '0' দিয়ে এবং তাই কমান্ডের শেষ অংশ এক্সিকিউট হয় না।
৫. NOT অপারেটর (!)
NOT অপারেটর (!) প্রোগ্রামিং-এ 'except' স্টেটমেন্টের মতো। প্রদত্ত কন্ডিশন ছাড়া সব কমান্ডটি এক্সিকিউট করবে। এটি বুঝতে, আপনার হোম ডিরেক্টরিতে 'tecmint' ডিরেক্টরি তৈরি করুন এবং সেখানে 'cd' করুন।
admin@wsxdn.com:~$ mkdir tecmint admin@wsxdn.com:~$ cd tecmint
এরপর, 'tecmint' ফোল্ডারে বিভিন্ন ধরনের ফাইল তৈরি করুন।
admin@wsxdn.com:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html
দেখুন, 'tecmint' ফোল্ডারের ভিতরে সব নতুন ফাইল তৈরি হয়েছে।
admin@wsxdn.com:~/tecmint$ ls a.doc a.html a.pdf a.xml b.doc b.html b.pdf b.xml
এখন 'html' ফাইল ছাড়া সব ফাইল একসাথে স্মার্টভাবে ডিলিট করুন।
admin@wsxdn.com:~/tecmint$ rm -r !(*.html)
শেষ এক্সিকিউশন ভেরিফাই করতে ls কমান্ড ব্যবহার করে সব উপলব্ধ ফাইল লিস্ট করুন।
admin@wsxdn.com:~/tecmint$ ls a.html b.html
৬. AND – OR অপারেটর (&& – ||)
উপরের অপারেটরটি আসলে 'AND' এবং 'OR' অপারেটরের কম্বিনেশন। এটি 'if-else' স্টেটমেন্টের মতো।
উদাহরণস্বরূপ, tecmint.com-এ পিং করি, সফল হলে 'Verified' ইকো করি না হলে 'Host Down'।
admin@wsxdn.com:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"
নমুনা আউটপুট
PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms --- www.tecmint.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms Verified
এখন, আপনার ইন্টারনেট সংযোগ ডিসকানেক্ট করুন, এবং একই কমান্ডটি আবার চেষ্টা করুন।
admin@wsxdn.com:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"
নমুনা আউটপুট
ping: unknown host www.tecmint.com Host Down
৭. PIPE অপারেটর (|)
এই PIPE অপারেটর অত্যন্ত উপকারী যেখানে প্রথম কমান্ডের আউটপুট দ্বিতীয় কমান্ডের ইনপুট হিসেবে কাজ করে। উদাহরণস্বরূপ, 'ls -l'-এর আউটপুট 'less'-এ পাইপলাইন করুন এবং কমান্ডের আউটপুট দেখুন।
admin@wsxdn.com:~$ ls -l | less
৮. কমান্ড কম্বিনেশন অপারেটর {}
দুই বা অধিক কমান্ড কম্বাইন করুন, দ্বিতীয় কমান্ডটি প্রথম কমান্ডের এক্সিকিউশনের ওপর নির্ভরশীল।
উদাহরণস্বরূপ, 'bin' ডিরেক্টরি উপলব্ধ কিনা চেক করুন এবং সংশ্লিষ্ট আউটপুট দিন।
admin@wsxdn.com:~$ [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.
৯. প্রেসিডেন্স অপারেটর ()
এই অপারেটর কমান্ডকে প্রেসিডেন্স অর্ডারে এক্সিকিউট করা সম্ভব করে।
Command_x1 &&Command_x2 || Command_x3 && Command_x4.
উপরের সুডো কমান্ডে, যদি Command_x1 ব্যর্থ হয়? Command_x2, Command_x3, Command_x4-র কোথাও এক্সিকিউট হবে না, এর জন্য আমরা প্রেসিডেন্স অপারেটর ব্যবহার করি, যেন:
(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)
উপরের সুডো কমান্ডে, যদি Command_x1 ব্যর্থ হয়, Command_x2ও ব্যর্থ হয় কিন্তু এখনও Command_x3 এবং Command_x4 এক্সিকিউট হয় Command_x3-এর এক্সিট স্ট্যাটাসের ওপর নির্ভর করে।
১০. ক্যাটেনেশন অপারেটর (\)
ক্যাটেনেশন অপারেটর (\) নামানুসারে, শেলে বড় কমান্ডগুলো একাধিক লাইনে ক্যাটেনেট করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, নিচের কমান্ডটি test(1).txt টেক্সট ফাইলটি খুলবে।
admin@wsxdn.com:~/Downloads$ nano test\(1\).txt
আজ এপর্যন্ত। আমি খুব শীঘ্রই আরেকটি আকর্ষণীয় আর্টিকেল নিয়ে আসছি। তখন পর্যন্ত টিউন্ড থাকুন, সুস্থ থাকুন এবং Tecmint-এর সাথে কানেক্টেড থাকুন। আমাদের কমেন্ট সেকশনে আপনার মূল্যবান ফিডব্যাক দিতে ভুলবেন না।