কোনটি সেড, অজক, পার্ল এবং শের সর্বাধিক বহনযোগ্য?


15

কেউ কি এই সরঞ্জামগুলি বহনযোগ্যতার জন্য রাখতে পারেন? এর মধ্যে কোনটি সবচেয়ে ন্যূনতম * নিক্স সিস্টেমেও পাওয়া যাবে তা নিশ্চিত ? তাদের মধ্যে কি 100% উপস্থিত থাকার বিষয়ে নিশ্চিত? আমার অনুমান যে আদেশটি নিম্নলিখিত:

  1. awk
  2. sed
  3. SH
  4. Perl

আমি যখন কল্পনা করেছি এমন কিছু সিস্টেম রয়েছে যা বোর্ন শেলটিতে ডিফল্ট হয় না, কিছু শেল ডিফল্ট হিসাবে উপস্থিত থাকবে, তা কি সর্বদা থাকবে /bin/sh? সম্ভবত এটি যদি বোর্ন ধরণের শেল না হয়। উভয় awkএবং sedপৃষ্ঠাগুলি তাদের পসিএক্স স্পেসিফিকেশনে ব্যাখ্যা করে যাতে সম্ভবত তারা সর্বদা উপস্থিত থাকবেন। তাই নাকি? আমি নিশ্চিত যে উভয়ই যে কোনও * নিক্সে ইনস্টল করা হবে? এম্বেড থাকা সিস্টেম সহ?


এম্বেড থাকা সিস্টেমগুলি প্রায়শই ন্যূনতম থাকার জন্য বহনযোগ্যতা ত্যাগ করে। অনেকেই পসিক্স অনুগত নয়।
জর্ডানম

@ জোর্ডানামের মানে কি এই যে তারা অনুমানযোগ্যভাবে এগুলির কোনও নেই? আমি এমন একটি সিস্টেম ধরে নিচ্ছি যা কমপক্ষে একটি সর্বনিম্ন শেল ইন্টারফেস সরবরাহ করে। আমি জানি যে, busybox উপলব্ধ sh, awkএবং sedউদাহরণ এবং আমার, busybox ভিত্তিক ন্যাস জন্য এছাড়াও Perl হয়েছে।
টেরডন

1
আপনার কাছে এগুলি থাকতে পারে তবে তারা যা করে তা সিস্টেমে পৃথক হয়ে যায়, তাই যা বলা হয়েছে তেমন প্রশ্ন করা যায় না।
স্টাফেন চেজেলাস

@ স্টাফেন চ্যাজেলাস আহ, আপনি কি আমাকে তখন এটিকে সঙ্কুচিত করতে সাহায্য করতে পারেন? এগুলি সিস্টেম এক্স-এ পাওয়া যাওয়ার সম্ভাবনা অনুসারে কী এইগুলি বাছাই করা সম্ভব নয়? আমার অভিজ্ঞতাটি কঠোরভাবে লিনাক্স এবং বেশ কয়েকটি এম্বেড এনএএস সিস্টেম। আমি জানি যে এগুলি 4 ছাড়া আপনি কখনই জিএনইউ / লিনাক্স পাবেন না তবে আপনি উপস্থিত থেকে অনুমান করা সবচেয়ে নিরাপদ কোনটি আপনি আমাকে একটি ধারণা দিতে পারবেন না?
টেরডন

উত্তর:


15

কোনটি সেড, অজক, পার্ল এবং শের সর্বাধিক বহনযোগ্য?

sed, shএবং awkপসিএক্স দ্বারা পোর্টেবল নির্দিষ্ট করা হয়, perlএটি কোনও স্ট্যান্ডার্ড দ্বারা ব্যাক করা হয় না।

কেউ কি এই সরঞ্জামগুলি বহনযোগ্যতার জন্য রাখতে পারেন?

আপনি যদি অনুগত কোডটিতে লেগে থাকেন তবে তিনটি পসিক্স কমান্ডের পোর্টেবিলিটির কোনও অর্ডার হওয়া উচিত নয়।

এর মধ্যে কোনটি সবচেয়ে ন্যূনতম * নিক্স সিস্টেমেও পাওয়া যাবে তা নিশ্চিত?

তিনটি পসিক্স এবং অন্যান্য অনেকগুলি ইউটিলিটি একটি ওএসের জন্য পসিক্স বাধ্যতামূলক। ওএসগুলিকে হ্রাস করার কারণে তাদের মধ্যে কিছু অভাব দেখা দিয়েছে বা অসম্পূর্ণ / অবহিত বাস্তবায়ন সরবরাহের কারণে বিদ্যমান রয়েছে exist

প্রকৃতপক্ষে, অপারেটিং সিস্টেমগুলির মতো বেশিরভাগ (সমস্ত না থাকলে) মুক্ত এবং ওপেন সোর্স ইউনিক্স সম্ভবত তাদের চেষ্টা করার সাথে সাথে কনফারেন্স প্রক্রিয়াটি পাস করতে পারে না এবং তারা কখনই চেষ্টা করে না।

তাদের মধ্যে কি 100% উপস্থিত থাকার বিষয়ে নিশ্চিত?

আমি ওএসের মতো একটি * নিক্স পেয়ে বোর্ন সিনট্যাক্স ভিত্তিক শেল অনুপস্থিত পেয়ে অবাক হব, তবে কিছু সম্ভব, বিশেষত এমবেডেড সিস্টেমগুলির দ্বারা।

আমার অনুমানটি হ'ল আদেশটি নিম্নরূপ: কিছু শেল ডিফল্ট হিসাবে উপস্থিত থাকবে, তা কি সর্বদা / বিন / এস-তে থাকবে?

/bin/shসম্ভবত বোর্ন সিনট্যাক্স পারিবারিক শেল হতে পারে তবে এটি পসিক্স কমপ্লায়েন্ট, এমনকি পসিক্স কমপ্লায়েন্ট সিস্টেম হিসাবে গ্যারান্টিযুক্ত নয়। উদাহরণস্বরূপ, এটি /usr/xpg4/bin/shসোলারিস 10 এবং তারও বেশি বয়স্কে /bin/shরয়েছে যদিও উত্তরাধিকারের মূল বোর্ন শেল যা পসিক্স নয়।


12

অটটুলগুলি থেকে একটি কিউ নিন: বোর্ন এবং পসিক্স শেলের সর্বনিম্ন সাধারণ ডিনোমিনেটরটির সাথে লেগে থাকুন - সম্ভবত এটির দ্বারা বাড়ানো হয়েছে sed- যদি আপনাকে এমন কিছু লিখতে হয় যা অবশ্যই সর্বত্র কাজ করে । এমন কিছু সিস্টেম থাকতে পারে যেখানে কিছু ভেঙ্গে যায় তবে আপনি পুনরায় লিখে এই জাতীয় সমস্যাগুলি নিয়ে কাজ করতে পারেন।

উদাহরণস্বরূপ, কিছু প্রাচীন সিস্টেমে বিস্তৃত ত্রুটিগুলিতে সমস্যা আছে test, ওরফে [:

 if [ $foo = bar ] ; then...

সুতরাং অটোকনফ অনুশীলনটি হ'ল একক অক্ষর উপসর্গ সহ ডাবল কোটে আবার লিখতে হবে :

 if [ x"$foo" = "xbar" ] ; then...

আপনি "x$foo"এখানে ব্যবহার করতে পারেন । এই সম্ভাবনার বিরুদ্ধে এই রক্ষীরা যেটি $fooবৈধ বিকল্প হতে পারে test(1)এবং যেহেতু [এটি একটি উপনাম test, এটি প্রকাশের ভুল ব্যাখ্যা করতে পারে। সমাধানটি এমন একটি পরিস্থিতি স্থাপন করা হয় যেখানে অজানা যুক্তিটি [সর্বদা শুরু হয় x, যার অর্থ এটির বিশেষ অর্থ হতে পারে না [

(অটোকনফ এর testপরিবর্তে ব্যবহারেরও [পরামর্শ দেয় তবে এম 4 এর সাথে সম্ভাব্য দ্বন্দ্বের প্রতিক্রিয়া হিসাবে সেই পরামর্শ আসে যা [এর বাক্য গঠনতেও ব্যবহার করে ))

awk হল পসিক্স , সুতরাং তাত্ত্বিকভাবে এটি সর্বত্র পাওয়া যায়। এটি এমনকি ব্যাসিবক্সেও রয়েছে তাই আপনার awkখুব কার্যকর কিছু সীমাবদ্ধ এম্বেডড লিনাক্স সিস্টেমে একটি বাস্তবায়ন হবে । তবুও, আমি awkব্যতীত কোনও সিস্টেম জুড়ে এসে অবাক হব sed। আমি মনে করি এটি জটিলতায় নেমে এসেছে: সহজ সরঞ্জামগুলি আক্রমণাত্মক ট্রিজেজ থেকে বেঁচে থাকার সম্ভাবনা বেশি।

পার্ল কোনও বিস্তৃত স্ট্যান্ডার্ড, পসিক্স বা অন্যথায় অংশ নয়, তাই আপনি যদি লক্ষ্য পরিবেশ সম্পর্কে আগাম কিছু না জানেন তবে আপনি কেবল এটির উপর নির্ভর করতে পারবেন না। পার্ল এতে ডিফল্টরূপে ইনস্টল করা হয় না:

  • Cygwin
  • ফ্রিবিএসডি এবং নেটবিএসডি
  • স্ল্যাকওয়্যার সহ কিছু লিনাক্সের জন্য "ন্যূনতম" ইনস্টল করা হয়
  • অনেক এম্বেড থাকা লিনাক্স যা তাদের ব্যবহারের ভূমির জন্য মূলত ব্যাসিবক্সে নির্ভর করে

অটোকনফ ম্যানুয়ালটিতে পোর্টেবল শেল প্রোগ্রামিংয়ের একটি অধ্যায় রয়েছে যা আপনার পক্ষে সহায়ক হবে। শেষ অধ্যায় কভার সরঞ্জামের মত sed, awk, এবং অনেক অন্যদের।


ধন্যবাদ, তবে আমি এগুলির বহনযোগ্যতার ক্রমটি নিয়ে ভাবছি। যদি আমি আপনাকে সঠিকভাবে পড়ি তবে আপনি এটির পরামর্শ দিচ্ছেন shএবং sedসর্বাধিক বহনযোগ্য। ঠিক আছে, অন্যদের কি? এবং shসত্যিই কি পোর্টেবল? যদি ডিফল্ট শেলটি সি-শেল ডেরিভেটিভ হয়? এই জাতীয় সিস্টেমে কি এখনও একটি সিলেট লিঙ্ক থাকবে /bin/sh?
টেরডন

সম্পাদনার জন্য ধন্যবাদ, যদিও এটি উভয়ই sedএবং awkব্যস্তবক্স দ্বারা সরবরাহ করা হয়েছে, আপনি sedঅনুপস্থিত খুঁজে পেয়ে কেন আরও অবাক হবেন ? যদি ব্যস্তবক্স বিকল্পগুলিও সেড এবং অজস্র সরবরাহ করে তবে আপনার কী ধারণা আছে?
টেরডন

পুনঃপোজিক বনাম বোর্ন শেল , দুজনের এলসিডিতে আটকে থাকার পরামর্শটি পুনরায় লিখেছিলেন। পুনরায়: পরীক্ষার উদ্ধৃতি দিয়ে , আমি এর কারণটি ভুল করেছিলাম, তবে অটোকনফ ম্যানুয়ালটিতে অধ্যায়টি খুঁজে পেয়েছি যেখানে কারণটি আচ্ছাদিত রয়েছে এবং সেই অনুসারে উত্তরটি সম্পাদনা করেছে। পুনঃ সেড বনাম অজক এবং ব্যাসিবক্স , আমি এটি ব্যাখ্যা করেছি: বৃহত্তর জটিলতা এবং ট্রিজেস। sedকম করে, তাই এর বাইনারি আরও ছোট হবে, সুতরাং এটির তুলনায় কম কারণ রয়েছে awkযা মোটামুটি জটিল। (আমার সিস্টেমে 20 কিবি বনাম 48 কিবি।) পুনরায়: ব্যস্তবক্স বিকল্প , আমি অন্য কোনও স্টপ শপিং বিকল্প সম্পর্কে অবগত নই।
ওয়ারেন ইয়ং

+1 কারণ আমি এখানে আপনার সাধারণ shঅনুমানের সাথে একমত (যে সর্বনিম্ন সাধারণ ডিনোমিনেটর একরকম হবে - টের্ডন র‌্যাঙ্কের ওপরে awkএবং sedএই ওও-এর উপরে?) যদিও এটি অটোটুলের উদ্দেশ্যগুলির সাথে কেবল কাকতালীয়, যেহেতু কিছু পরিবেশ, বিশেষত ছোট্ট, বিল্ডিং, পিরিয়ডের উদ্দেশ্যে নয়।
স্বর্ণলোকস

1
@ ওয়ারেন ইউং এই জাতীয় জিনিস সম্পর্কে আমি ভাবছিলাম। সমস্ত * নিক্স সিস্টেমে আসলে ডিফল্টরূপে বোর্ন শেল ইনস্টল করা হবে কিনা আমার ধারণা ছিল না (ছিল)। যদি তারা সমস্ত একটি আছে /bin/sh, তারপর কিছু ভিন্ন কিন্তু আমি না জানি যে সব এক হবে। উপায়টি গ্রহণ না করার জন্য দুঃখিত, আমি আপনার এবং জেলিয়াগ্রারের উত্তর দুটিই আমার প্রশ্নের উত্তর দিয়েছিলাম torn আমি তাকে বেছে নিয়েছিলাম কারণ এটি এটিকে আরও সরাসরি সম্বোধন করেছে এবং কারণ তার কম রেপ রয়েছে :)।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.