গ্রেপ ফলাফল থেকে আসা লাইনগুলি কার্যকর করতে কীভাবে?


10

কিছু নির্দিষ্ট ইনস্টলেশন নির্দেশাবলী সহ আমি একটি পাঠ্য ফাইল পেয়েছি এবং আমি জানি যে আমি ফাইলটিতে একটি অনন্য ঘটনার জন্য গ্রেপ করতে পারি। উদাহরণস্বরূপ, পাঠ্য ফাইলে এমন কিছু রয়েছে:

MYDIR = `সন্ধান / হোম / ব্যবহারকারীর নাম somedir``
PERL5LIB = export PERL5LIB: Y MYDIR রফতানি করুন

ব্যাশে, আমি কীভাবে ফাইলের গ্রেপ পরে লাইনগুলি সম্পাদন করতে পারি? কিছুটা এইরকম:

"গ্রেপ সামিডির ইনস্টল করুন" থেকে ফলাফল সম্পাদন করুন
"গ্রেপ 'রফতানি PERL5LIB' ইনস্টললফাইল" থেকে ফলাফল সম্পাদন করুন

2
এই ফ্যাশনে স্বয়ংক্রিয়ভাবে কার্যকর করা কি কিশোর বয়স থেকে বিপজ্জনক নয়?
ফাহিম মিঠা

2
@ ফাহিম এবং @ অ্যাভিল্লা: কিশোর বয়স থেকে বেশি, সত্যই বিপজ্জনক! এছাড়াও, কিছুটা নাজুক।
কালেব

উত্তর:


4

অনুমিতি:

  • এই ফাইলটির উপর আপনার নিয়ন্ত্রণ রয়েছে এবং দূষিত কোডের ঝুঁকিতে নেই
  • আপনি এই চলকগুলি আপনার বর্তমান শেলটি সেট করতে চান

আপনি আপনার আদেশগুলি কোনও অস্থায়ী ফাইলে পুনর্নির্দেশ করতে এবং এটি কার্যকর করতে পারেন:

tmp=$(mktemp)
{
    grep somedir INSTALLFILE
    grep 'export PERL5LIB' INSTALLFILE
} > "$tmp"
. "$tmp"

অথবা আপনি ফলাফল মূল্যায়ন করতে পারে

eval "$(grep somedir INSTALLFILE)"
eval "$(grep 'export PERL5LIB' INSTALLFILE)"

একটি পুরানো উত্তর আপডেট করা। আমি আজ যা করবো তা হ'ল প্রক্রিয়া প্রতিস্থাপন ব্যবহার করা:

source <(
    grep somedir INSTALLFILE
    grep 'export PERL5LIB' INSTALLFILE
)

মনে রাখবেন যে এর জন্য source <(...)আপনার 4 বা ততোধিক বাশ দরকার। এটি পুরানো সংস্করণগুলির সাথে কাজ করে নি (zsh যদিও ঠিক ছিল)।
স্টাফেন চেজেলাস

11

একটি পৃথক শেল প্রক্রিয়াতে লাইনগুলি মূল্যায়ন করতে:

grep somedir INSTALLFILE | sh

চলমান শেল প্রক্রিয়াটিতে লাইনগুলি মূল্যায়ন করতে:

eval "$(grep somedir INSTALLFILE)"

গাছগুলির মধ্য দিয়ে একমাত্র বন দেখার জন্য +1। এর মাধ্যমে আমার উত্তর মুছে ফেলা হচ্ছে। @avilella: সুবিধার জন্য আপনি ব্যবহার করতে পারেন -A 1বা -B 1এক পতাকার অথবা আপনার অন্যান্য যেমন grepগুলি যে @Gilles সমাধান পারেন এক, grep এবং ব্যবহারের সঙ্গে উভয় লাইন আনতে।
কালেব

মনে রাখবেন যে কয়েকটি সিস্টেমে shআপনি যেটা প্রত্যাশা করেছিলেন তার পরিবর্তে অন্য শেলের জন্য একটি সিমিলিংক হতে পারে, ফলে ফলাফল অনাকাঙ্ক্ষিত হতে পারে। নিরাপদ থাকার জন্য, আপনি যে সঠিক শেলটি আশা করছেন তা নির্দিষ্ট করুন, যেমনgrep somedir INSTALLFILE | bash
thdoan

-2

আপনি কি খুঁজে পাওয়ার 'এক্সিকিউটর' বৈশিষ্ট্যটি ব্যবহারের বিষয়টি বিবেচনা করেছেন:

find somedir -name INSTALLFILE -exec {}\;

আমি মনে করি যে ওপি ফলাফলগুলি কার্যকর করতে দেখছে যা গ্রোম গ্রেপ ফিরে আসে, ফলাফল থেকে ফিরে আসা প্রতিটি ফলাফল নয়।
কালেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.