লিনাক্স কমান্ডগুলিতে (!) সিম্বল বা অপারেটরের 10 টি আশ্চর্যজনক এবং রহস্যময় ব্যবহার


লিনাক্সের চিহ্ন বা অপারেটরটি লজিকাল নেগেশন অপারেটর হিসাবে ব্যবহার করা যেতে পারে পাশাপাশি ইতিহাস থেকে সাম্প্রতিক কমান্ডগুলি সামঞ্জস্য করতে বা পরিবর্তন সহ পূর্ববর্তী রান কমান্ড চালানোর জন্য ব্যবহার করা যেতে পারে। নীচের সমস্ত কমান্ডগুলি ব্যাশ শেলের মধ্যে সুস্পষ্টভাবে পরীক্ষা করা হয়েছে। যদিও আমি পরীক্ষা করে নিইনি তবে এর মধ্যে একটি বড় অংশ অন্য শেলটিতে চলবে না। এখানে আমরা লিনাক্স কমান্ডের চিহ্ন বা অপারেটরের আশ্চর্যজনক এবং রহস্যজনক ব্যবহারগুলিতে চলে যাই।

আপনি সম্ভবত আপনার ইতিহাস কমান্ড (ইতিমধ্যে/পূর্বে সম্পাদিত আদেশগুলি) থেকে একটি কমান্ড চালাতে পারবেন সে সম্পর্কে সচেতন হতে পারবেন না। প্রথমে "ইতিহাস" কমান্ড চালিয়ে কমান্ড নম্বরটি সন্ধান করুন।

$ history

ইতিহাসের আউটপুটে এখন প্রদর্শিত সংখ্যাটি দ্বারা ইতিহাস থেকে একটি কমান্ড চালান। ‘ইতিহাস’ কমান্ডের আউটপুটে 1551 নম্বরে উপস্থিত একটি কমান্ড চালান বলুন।

$ !1551

এবং এটি কমান্ড চালায় (উপরের ক্ষেত্রে শীর্ষ কমান্ড), যা 1551 নম্বরে তালিকাভুক্ত ছিল। ইতিমধ্যে কার্যকর হওয়া কমান্ড পুনরুদ্ধারের এই পদ্ধতিটি বিশেষত দীর্ঘতর সেই আদেশগুলি ক্ষেত্রে খুব সহায়ক। আপনাকে কেবল এটি ব্যবহার করে কল করতে হবে! [ইতিহাস কমান্ডের আউটপুটে এটি প্রদর্শিত হবে] নম্বর।

আপনি যে কমান্ডগুলি আগে চালিয়েছেন তাদের চলমান ক্রম দ্বারা চালিত হতে পারে সর্বশেষ রান কমান্ড হ'ল -1, দ্বিতীয় শেষ -2 হিসাবে, সপ্তম শেষ -7 হিসাবে উপস্থাপিত হবে ...।

সর্বশেষ কার্যকর করা কমান্ডের তালিকা পেতে প্রথমে ইতিহাসের কমান্ডটি চালান। ইতিহাস কমান্ডটি চালানো প্রয়োজন, যাতে আপনি নিশ্চিত হতে পারেন যে কোনও দুর্ঘটনাক্রমে কোনও বিপজ্জনক কমান্ড চালাচ্ছেন না তা নিশ্চিত করার জন্য rm কমান্ড> ফাইল র মতো কোনও কমান্ড নেই others এবং তারপরে ষষ্ঠ শেষ কমান্ড, আটটি সর্বশেষ আদেশ এবং দশম শেষ কমান্ডটি পরীক্ষা করুন।

$ history
$ !-6
$ !-8
$ !-10

আমার ডিরেক্টরি/‘হোম/$ইউএসআই/বাইনারি/ফায়ার ফক্স’ ডিরেক্টরিতে লিখিত তালিকা তৈরি করতে হবে যাতে আমি বরখাস্ত হই।

$ ls /home/$USER/Binary/firefox

তখন আমি বুঝতে পেরেছিলাম যে সেখানে কোন ফাইল কার্যকর রয়েছে তা দেখার জন্য আমার ‘ls -l’ বরখাস্ত করা উচিত ছিল? সুতরাং আমি আবার পুরো কমান্ড টাইপ করা উচিত! না আমার দরকার নেই এই নতুন কমান্ডের জন্য আমার কেবল শেষ যুক্তিটি বহন করা দরকার:

$ ls -l !$

এখানে ! $ শেষ কমান্ডে যুক্ত হওয়া যুক্তিগুলি এই নতুন কমান্ডে বহন করবে।

ধরা যাক আমি ডেস্কটপে ১ টেক্সট ফাইল তৈরি করেছি।

$ touch /home/avi/Desktop/1.txt

এবং তারপরে সিপি কমান্ডের সাহায্যে উভয় পাশের সম্পূর্ণ পথ ব্যবহার করে এটি ‘/ home/avi/Downloads’ এ অনুলিপি করুন।

$ cp /home/avi/Desktop/1.txt /home/avi/downloads

এখন আমরা সিপি কমান্ড দিয়ে দুটি আর্গুমেন্ট পাস করেছি। প্রথমটি হচ্ছে ‘/ home/avi/Desktop/1.txt’ এবং দ্বিতীয়টি হচ্ছে ‘/ home/avi/Downloads’, তাদের আলাদাভাবে পরিচালনা করতে দেয়, কেবলমাত্র উভয় যুক্তিই আলাদাভাবে মুদ্রণের জন্য প্রতিধ্বনি [আর্গুমেন্ট] চালিত করুন।

$ echo “1st Argument is : !^”
$ echo “2nd Argument is : !cp:2”

দ্রষ্টব্য 1 ম টি আর্গুমেন্ট "! ^" হিসাবে মুদ্রণ করা যেতে পারে এবং বাকী আর্গুমেন্টগুলি "! [নাম_ফ_কম্যান্ড]: [সংখ্যা_মুখে_সংক্রান্ত]]" সম্পাদনা করে মুদ্রণ করা যেতে পারে।

উপরের উদাহরণে প্রথম কমান্ডটি ছিল ‘সিপি’ এবং দ্বিতীয় আর্গুমেন্টটি মুদ্রণের জন্য প্রয়োজন। অতএব “! সিপি: 2” , যদি কোনও আদেশ আদেশ দেয় যে xyz 5 টি আর্গুমেন্ট দিয়ে চালানো হয় এবং আপনার 4 র্থ আর্গুমেন্ট পাওয়া দরকার, আপনি "! Xyz: 4" ব্যবহার করতে পারেন, এবং এটি আপনার পছন্দ মতো ব্যবহার করুন। সমস্ত যুক্তি "! *" দ্বারা অ্যাক্সেস করা যায়।

আমরা কীওয়ার্ডের ভিত্তিতে শেষ সম্পাদিত আদেশটি কার্যকর করতে পারি। আমরা এটি নিম্নলিখিত হিসাবে বুঝতে পারি:

$ ls /home > /dev/null						[Command 1]
$ ls -l /home/avi/Desktop > /dev/null		                [Command 2]	
$ ls -la /home/avi/Downloads > /dev/null	                [Command 3]
$ ls -lA /usr/bin > /dev/null				        [Command 4]

এখানে আমরা একই কমান্ডটি ব্যবহার করেছি (ls) তবে বিভিন্ন স্যুইচ এবং বিভিন্ন ফোল্ডারের সাথে। তবুও আমরা প্রতিটি কমান্ডের আউটপুট ‘/ dev/null’ তে প্রেরণ করেছি কারণ আমরা কমান্ডের আউটপুট নিয়ে কাজ করতে যাচ্ছি না তবে কনসোলও পরিষ্কার থাকে।

এখন কীওয়ার্ডের ভিত্তিতে সর্বশেষ রান কমান্ডটি কার্যকর করুন।

$ ! ls					[Command 1]
$ ! ls -l				[Command 2]	
$ ! ls -la				[Command 3]
$ ! ls -lA				[Command 4]

আউটপুটটি পরীক্ষা করে দেখুন এবং আপনি অবাক হয়ে যাবেন যে আপনি কেবল ls কীওয়ার্ড দিয়ে ইতিমধ্যে সম্পাদিত আদেশগুলি চালাচ্ছেন।

আপনি (!!) ব্যবহার করে আপনার শেষ রান কমান্ডটি চালাতে/পরিবর্তন করতে পারবেন। এটি চলমান কমান্ডের পরিবর্তন/টুইটের মাধ্যমে সর্বশেষ রান কমান্ডটি কল করবে। আপনাকে দৃশ্যপট দেখায়

শেষ দিন আমি আমার প্রাইভেট আইপি পেতে ওয়ান-লাইন স্ক্রিপ্ট চালিয়েছি তাই আমি চালাই,

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/

তারপরে হঠাৎ আমি বুঝতে পারলাম যে উপরের স্ক্রিপ্টটির আউটপুট আমাকে একটি ফাইল ip.txt এ পুনঃনির্দেশ করা দরকার, তাই আমার কী করা উচিত? আমার কি পুরো কমান্ডটি আবার টাইপ করা উচিত এবং আউটপুটটিকে কোনও ফাইলে পুনর্নির্দেশ করা উচিত? একটি সহজ সমাধান হ'ল একটি কোডে আউটপুট পুনর্নির্দেশের জন্য ইউপি নেভিগেশন কী এবং > ip.txt যুক্ত করা।

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/ > ip.txt

জীবন রক্ষাকারী ইউপি নেভিগেশন কীকে ধন্যবাদ। এখন নীচের শর্তটি বিবেচনা করুন, পরের বার আমি ওয়ান-লাইন স্ক্রিপ্টের নীচে চলব।

$ ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:

স্ক্রিপ্টটি চালানোর সাথে সাথে ব্যাশ প্রম্পটে "ব্যাশ: ifconfig: কমান্ড পাওয়া যায় নি" > বার্তাটি দিয়ে একটি ত্রুটি ফিরে পেয়েছে, অনুমান করা আমার পক্ষে মুশকিল ছিল না যে এই কমান্ডটি ব্যবহারকারীর হিসাবে চালানো উচিত যেখানে রুট হিসাবে চালানো।

তাহলে সমাধান কী? রুট এ লগইন করা এবং তারপরে পুরো কমান্ডটি আবার টাইপ করা কঠিন! এছাড়াও (ইউপি নেভিগেশন কী) শেষ উদাহরণে উদ্ধার করতে আসেনি। তাহলে? আমাদের উদ্ধৃতি ছাড়াই “!!” কল করতে হবে, যা সেই ব্যবহারকারীর জন্য শেষ কমান্ড কল করবে।

$ su -c “!!” root

এখানে su হ'ল সুইচ ব্যবহারকারী যা মূল, -c ব্যবহারকারী হিসাবে নির্দিষ্ট কমান্ড চালানো হয় এবং সবচেয়ে গুরুত্বপূর্ণ অংশ !! কমান্ড এবং সর্বশেষ রান কমান্ড দ্বারা প্রতিস্থাপিত হবে এখানে প্রতিস্থাপন করা হবে। হ্যাঁ! আপনাকে রুট পাসওয়ার্ড সরবরাহ করতে হবে।

আমি !! বেশিরভাগ নীচের পরিস্থিতিতে ব্যবহার করি,

১. আমি যখন সাধারণ ব্যবহারকারীরূপে অ্যাপটি-গেট কমান্ডটি চালাই, তখন সাধারণত আমি বলে ত্রুটি পাই যে আপনার মৃত্যুদণ্ড কার্যকর করার অনুমতি নেই।

$ apt-get upgrade && apt-get dist-upgrade

ওপস ত্রুটি… এটি সফল করতে কমান্ডের নীচে কার্যকর হওয়ার চিন্তা করবেন না ..

$ su -c !!

আমি একইভাবে করি,

$ service apache2 start
or
$ /etc/init.d/apache2 start
or
$ systemctl start apache2

ওওপিএস ব্যবহারকারীর এ জাতীয় কাজটি চালানোর জন্য অনুমোদিত নয়, তাই আমি চালিত ..

$ su -c 'service apache2 start'
or
$ su -c '/etc/init.d/apache2 start'
or
$ su -c 'systemctl start apache2'

<কোড >!

উ: ডিরেক্টরি থেকে সমস্ত ফাইল সরান যার নামটি 2.txt রয়েছে except

$ rm !(2.txt)

বি। ফোল্ডার থেকে সমস্ত ফাইলের প্রকারটি সরিয়ে ফেলুন, যার এক্সটেনশনটি ‘পিডিএফ’ except

$ $ rm !(*.pdf)

এখানে আমরা ব্যবহার করব! -d যদি ডিরেক্টরি উপস্থিত থাকে বা তার পরে না লজিকাল অ্যান্ড অপারেটর (&&) মুদ্রণ করে যে ডিরেক্টরিটি বিদ্যমান না থাকে এবং লজিকাল ওআর অপারেটর (কোড) ডিরেক্টরি মুদ্রণ করতে উপস্থিত।

যুক্তিটি হ'ল, যখন [আউটপুট আসে! -d/home/avi/Tecmint] 0 হয়, এটি লজিকাল এর বাইরে যা কার্যকর করে তা কার্যকর করবে এবং অন্যথায় এটি লজিকাল OR (||) এ যাবে এবং লজিকাল ওআর এর বাইরে যা রয়েছে তা কার্যকর করবে।

$ [ ! -d /home/avi/Tecmint ] && printf '\nno such /home/avi/Tecmint directory exist\n' || printf '\n/home/avi/Tecmint directory exist\n'

উপরের শর্তের মতো, তবে এখানে যদি পছন্দসই ডিরেক্টরিটি না উপস্থিত থাকে তবে এটি কমান্ডটি প্রস্থান করবে।

$ [ ! -d /home/avi/Tecmint ] && exit

স্ক্রিপ্টিং ল্যাঙ্গুয়েজে একটি সাধারণ বাস্তবায়ন যেখানে পছন্দসই ডিরেক্টরিটি উপস্থিত না থাকলে এটি একটি তৈরি করে।

[ ! -d /home/avi/Tecmint ] && mkdir /home/avi/Tecmint

এখন এ পর্যন্তই. আপনি যদি জানেন বা অন্য কোনও ব্যবহারের সন্ধানে আসেন ! যা জানার মতো, আপনি আমাদের প্রতিক্রিয়াতে আপনার পরামর্শ প্রদান করতে পছন্দ করতে পারেন। সংযুক্ত থাকুন!


সমস্ত অধিকার সংরক্ষিত. © Linux-Console.net • 2019-2024