আমি সমস্ত পাঠ্য ফাইল খুলতে চাই যা পাঠ্য সম্পাদক ব্যবহার করে ls কমান্ডের ফলাফল। আমি এটা কিভাবে করবো?
আমি সমস্ত পাঠ্য ফাইল খুলতে চাই যা পাঠ্য সম্পাদক ব্যবহার করে ls কমান্ডের ফলাফল। আমি এটা কিভাবে করবো?
উত্তর:
গিলস ঠিক একদম সঠিক , ls
উদাহরণস্বরূপ ফাইল নাম গ্লোব সম্প্রসারণ কমান্ড লাইনে কিছু না ব্যবহার করেই খুব সহজ করা যেতে পারে ls
! যদি আপনার তথাকথিত "পাঠ্য ফাইলগুলিতে" ফাইলগুলির নামের এক্সটেনশনগুলি সনাক্ত করতে হয় তবে আপনি এই জাতীয় কিছু করতে পারেন:
editor-command *.txt
কোনও কৌশল প্রদর্শনের স্বার্থে, আরও জটিল উদাহরণটি ব্যবহার করতে দিন যা কেবলমাত্র কোনও ফাইলের নামের পরিবর্তে সামগ্রীর উপর ভিত্তি করে ফাইল ফাইল ম্যাচ এবং ফাইলগুলি খোলার সাথে করা যায়নি। বলুন যে আপনি সমস্ত ফাইল খুলতে চেয়েছিলেন যার মধ্যে "কন্টেন্ট-টাইপ" স্ট্রিং রয়েছে।
ধরে নিলে আপনার সম্পাদক একাধিক ফাইলের নাম গ্রহণ করবে এবং সেগুলি একবারে পৃথক বাফারে একবারে খুলবে বা ধারাবাহিকভাবে এগুলির মাধ্যমে সেভাবে কাজ করবে, আপনি সহজেই চালাতে পারবেন:
editor-command $(grep -i content-type)
এখন আপনার আসল প্রশ্নে ফিরে আসুন, আসুন আপনাকে বলুন যে সেগুলি পাঠ্য ফাইল কিনা তা তাদের নামের উপর ভিত্তি করে নয়। এরপরে এগুলি সনাক্ত করার জন্য আপনাকে অন্য একটি প্রোগ্রাম ব্যবহার করতে হবে, তারপরে সেই ডেটার ভিত্তিতে এগুলি খুলুন। প্রোগ্রামটি file
আপনাকে বলবে যে কোনও ধরণের ফাইল কী, এবং আপনি কেবলমাত্র পাঠ্য ফাইলের জন্য তালিকাটি গ্রেপ করতে পারেন এবং তারপরে কেবলমাত্র মিলে যাওয়া ফাইলের নামগুলি খুলুন:
editor-command $(file -ni * | grep 'text/plain' | cut -d: -f1)
$()
কনস্ট্রাক্টের ভিতরে কমান্ড চেইনের আউটপুট সম্পাদকের আর্গুমেন্ট হিসাবে ব্যবহৃত হবে। আমি মাঝে মাঝে এটি দুটি পর্যায়ে করি। বলুন যে আমি কিছু সেট ফাইল সন্ধান করছি এবং নিজেকে "কন্টেন্ট-টাইপ" স্ট্রিংযুক্ত প্রতিটি এক্সএমএল ফাইলের একটি তালিকা পেতে পারি
find -type f -iname '*xml' | xargs grep -Hi 'content-type' | cut -d: -f1
... এবং সিদ্ধান্ত নিন আমি তাদের খুলতে চাই। আমি তখন সর্বশেষ কমান্ডের ইতিহাস শর্টকাট ব্যবহার করি এবং এটি করি:
vim $(!!)
... পূর্ববর্তী কমান্ডের সমস্ত ফলাফল ভিএমতে খুলতে, আমার প্রিয় সম্পাদক।
যদি আপনার সম্পাদক একসাথে কেবল একটি ফাইল স্বীকার করে নেয় এবং আপনাকে সম্পাদকদের স্পাও করা দরকার হয়, আপনি স্টেডিওর প্রয়োজনীয় টার্মিনাল ভিত্তিক সম্পাদক ব্যবহার করছেন কিনা তার উপর নির্ভর করে জেএমডিটির উত্তরেxargs
অথবা for
লুপের একটি বৈকল্পিক ব্যবহার করতে হবে ।
বর্তমান ডিরেক্টরিতে কিছু .txt
(যেমন *.txt
) নামে পরিচিত সমস্ত ফাইল খোলার জন্য :
$EDITOR *.txt
যেখানে $EDITOR
আপনার প্রিয় এডিটর, যেমন gedit *.txt
, nano *.txt
, vim *.txt
, emacs *.txt
বা যাই হোক না কেন। কেবলমাত্র *
বর্তমান ডিরেক্টরিতে সমস্ত ফাইল মেলে ব্যবহার করুন ।
লক্ষ্য করুন যে ls
কমান্ড জড়িত নেই। কাজটি ls
আসলে ফাইলগুলির একটি তালিকা প্রদর্শন করা নয়, যদিও আপনি যখন কোনও ডিরেক্টরিতে এটি চালু করেন তখনই এটি ঘটে। ls
ফাইলের বৈশিষ্ট্য (পরিবর্তনের সময়, অনুমতি, আকার এবং আরও কিছু) প্রদর্শন করতে যেখানে দরকারী। নির্দিষ্ট ওয়াইল্ডকার্ড প্যাটার্নের সাথে মেলে গুচ্ছ ফাইলগুলিতে কিছু করার জন্য, শেলের গ্লোবগুলি যথেষ্ট।
উন্নত পর্যাপ্ত সম্পাদক আপনাকে এটি ভিতরে থেকে করতে দেয়। উদাহরণস্বরূপ, ইম্যাক্সে, কেবলমাত্র সাধারণ ফাইল খোলার কমান্ড ব্যবহার করুন ( C-x C-f
) এবং প্রবেশ করুন *.txt
।
আপনি যদি সাব ডাইরেক্টরিগুলিতে, zsh বা ব্যাশ ≥4-তে ফাইলগুলিও মেলাতে চান তবে আপনি ব্যবহার করতে পারেন $EDITOR **/*.txt
।
এটি আপনার পাঠ্য সম্পাদকের কিছু সংক্ষিপ্তসার উপর নির্ভর করে। উন্নত সম্পাদকরা সম্ভবত এক মুহুর্তে কমান্ড লাইন থেকে একাধিক ফাইলগুলি খোলার পরিচালনা করতে পারবেন। তবে বলুন, উদাহরণস্বরূপ, আপনার সম্পাদক (নীচে আমার উদাহরণগুলিতে D সম্পাদনা) একবারে কেবল একটি খুলতে পারে। আপনি পাইপ একটি যথাযথ আউটপুট উচিত find
মধ্যে xargs
। এটি $ সম্পাদক টিটিওয়াই গ্রহণ না করার উপরও নির্ভর করে (সুতরাং, গ্রাফিকাল ব্যবহার করে)
find . -maxdepth 1 -type f -name '*.c' -print0 | xargs -r0n 1 $EDITOR
আপনি যদি কনসোল সম্পাদক ব্যবহার করতে চান তবে শেল লুপটি আরও উপযুক্ত হতে পারে তবে অনেকগুলি অস্বাভাবিক ফাইলের নাম (হোয়াইটস্পেস অক্ষর এবং অন্যান্য বিভিন্ন জিনিসকে সংকুচিত বা প্রতিস্থাপনের মাধ্যমে) ব্যর্থ হলে:
for i in *.c; do $EDITOR "$i"; done
for
কেসিং / হোয়াইটস্পেসের অক্ষর পরিবর্তন সহ অনেকগুলি ফাইলের নামের জন্য কেস ব্যর্থ হবে।
for
কেস প্রতিটি ফাইলের নামের সাথে কাজ করবে (সম্ভবত কিছু নাম শুরু হওয়া -
বা +
কিছু সম্পাদকের নাম বাদে for i in ./*.c
এটি ঠিক করে দেবে)।
editor-command *.css
, ইত্যাদি