মূলত, এটি পূর্ববর্তী কমান্ডের সর্বশেষ যুক্তি।
!$পূর্ববর্তী কমান্ডের "শেষ"। নিম্নলিখিত উদাহরণটি বিবেচনা করুন: আমরা কোনও ফাইলে একটি শব্দ খুঁজতে শুরু করি:
grep -i joe /some/long/directory/structure/user-lists/list-15
জো যদি সেই ব্যবহারকারী তালিকায় থাকে তবে আমরা তাকে এটি থেকে সরাতে চাই। হয় হয় দীর্ঘক্ষণ ডিরেক্টরি গাছের সাথে আমরা যুক্তি হিসাবে আগুন জ্বালাতে পারি, বা vi !$কোন ব্যাশটি প্রসারিত হয় ঠিক তেমন :
vi /some/long/directory/structure/user-lists/list-15
( উত্স ; উপায় গাইড,)
এই !$টোকেন এবং বিশেষ শেল ভেরিয়েবলের মধ্যে পার্থক্য মূল্যহীন $_। আসলে, উভয়ই পূর্ববর্তী কমান্ডের শেষ যুক্তিতে প্রসারিত হয়। যাইহোক, !$সময় প্রসারিত হয় ইতিহাস সম্প্রসারণ , যখন $_সময় প্রসারিত হয় প্যারামিটার সম্প্রসারণ । এর একটা গুরুত্বপূর্ণ ফল যে, যখন আপনি ব্যবহার করেন !$, প্রসারিত কমান্ড আপনার ইতিহাসে সংরক্ষিত হয়।
উদাহরণস্বরূপ, কীস্ট্রোকগুলি বিবেচনা করুন
(পরিবর্তিত কেবলমাত্র অক্ষরগুলি হ'ল $!এবং $_মাঝখানে))
পূর্ববর্তী সময়ে, আপনি টিপলে Up, কমান্ড লাইনটি পড়ে echo Foo Jar, সুতরাং stdout এ লেখা শেষ লাইনটি Foo Jar।
পরবর্তীকালে, আপনি টিপলে Up, কমান্ড লাইনটি পড়ে echo $_ bar, তবে এখন $_আগের তুলনায় তার আলাদা মান রয়েছে — প্রকৃতপক্ষে, $_এখন Jar, তাই স্টাডআউটে লেখা শেষ লাইনটি Jar Jar।
আরেকটি পরিণতি হ'ল _অন্যান্য প্যারামিটার বিস্তৃতিতে ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ, কমান্ডের ক্রম
printf '%s ' isomorphism
printf '%s\n' ${_%morphism}sceles
কপি করে প্রিন্ট isomorphism isosceles। তবে কোনও অনুমান " ${!$%morphism}" প্রসার নেই।
বাশ-এ সম্প্রসারণের পর্যায়গুলি সম্পর্কে আরও তথ্যের জন্য EXPANSIONবিভাগটি দেখুন man 1 bash( এটি অনলাইন সংস্করণে শেল প্রসারণ বলা হয় )। HISTORY EXPANSIONঅধ্যায় পৃথক হয়।
echoআপনি যদি নিশ্চিত হন না যে এটি কী করবে তা সাধারণত চেষ্টা করার চেষ্টা করা নিরাপদ ।