উত্তর:
এই লোকটি চেষ্টা করুন =):
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-তে আকর্ষণীয় লাইনে থাকুন