উত্তর:
এই লোকটি চেষ্টা করুন =):
sed -n 'line_num p' | bash
অথবা
"$(sed -n 'line_num p')"
line_numএবং pউদাহরণস্বরূপ, তাই যদি line_num, 123 তাহলে আপনি যা করতে পারেন sed -n 123p | bash। এবং যদি shযথেষ্ট হয় তবে তার shপরিবর্তে কেবল ব্যবহার করুন bash।
sed -n 'line_num p' | shঅন্য সমাধান হতে পারে? এটির কি আরও সামঞ্জস্য রয়েছে?
shআসলে কী তার উপরও নির্ভর করে । দেবিয়ান (এবং উত্পন্ন) সিস্টেমে shসাধারণত হয় dash। যদি স্ক্রিপ্টটি dash (বা অন্যথায় বহনযোগ্য সিনট্যাক্সের উপর নির্ভর করে) জন্য রচিত হয় তবে সম্ভবত, হ্যাঁ, তবে এটি যদি লেখা থাকে bashতবে প্রায় অবশ্যই না।
historyএবং আমি দেখতে পাই যে আমি 900 লাইনটি চালাতে চাই, আমি কি 900 লাইনটি চালাতে পারি?
আপনি যদি এটি ইন্টারেক্টিভভাবে করছেন, আপনি বাশ ইতিহাসে লাইনটি লিখতে পারেন:
history -s "$(sed -n 'line_num p')"
তারপরে ↑Enterপঠন বাফারে লাইনটি সন্নিবেশ করানোর জন্য টিপুন এবং এটি সম্পাদন করুন; এটি আপনাকে দেরি করার আগে লাইনে এক নজরে দেখার সুযোগ দেয়।
man history
historyএকটি অন্তর্নির্মিত, তাই এটিতে নথিবদ্ধ হয় help history(বা man bash, তবে এটি প্রচুর পড়া)। উপরের উদ্ধৃতি দিয়ে, history -s"একক প্রবেশের হিসাবে
আপনি করতে পারেন...
{ head -n"$((NUM-1))"; IFS= read -r line; } </path/to/script >/dev/null
eval "$line"
এটি $NUMআপনার স্ক্রিপ্ট থেকে শেল ভেরিয়েবলের মধ্যে কেবলমাত্র লাইন পেয়ে যাবে $lineএবং তারপরে এটি বর্তমান শেলের একটি কমান্ড হিসাবে মূল্যায়ন করবে।
এটি করার আরেকটি উপায় দেখতে পারা যায়:
</path/to/script sed "${NUM}q;d" >/tmp/"$$"
. /tmp/"$$" ; rm /tmp/"$$"
eval।
gnu sedহয়েছে eপতাকা কিছু তাই sed "${NUM}"'!d;s/^//e;q'এছাড়াও কাজ করবে
আপনি কি ভিপি (লিনাক্সে vi) দিয়ে আপনার স্ক্রিপ্ট সম্পাদনা করছেন? Vi তে ম্যাপিং যুক্ত করুন:
:nmap <F4> Y:!<C-R>"<C-H><CR>
এবং এরপরে আপনি vi 4-তে আকর্ষণীয় লাইনে থাকুন