ওএস এক্স এর শেল কমান্ডগুলি লিনাক্স সংস্করণগুলির সাথে প্রতিস্থাপন করবেন?


32

ওএস এক্স-এর টার্মিনালে ডিফল্টরূপে উপলব্ধ কমান্ডগুলি তাদের লিনাক্স সংস্করণগুলির মতো আচরণ করবে বলে মনে হয় না। কীভাবে আমি তাদের সকলকে প্রকৃত জিএনইউ লিনাক্স কমান্ড দিয়ে প্রতিস্থাপন করতে পারি?

উদাহরণস্বরূপ সেড -i এর জন্য বিরক্তিকর অতিরিক্ত "" যুক্তি প্রয়োজন। এছাড়াও, এটি কেবল পাঠ্য ফাইলগুলির সাথেই কাজ করে। এটি অকেজো।


1
উম্ম ... সেড একটি "পাঠ্য সম্পাদক", এটি বাইনারি ফাইলগুলিও সংশোধন করতে পারে। আপনি এটি আরও কি করতে চান? আপনার ঠিক কী দরকার তা দয়া করে ব্যাখ্যা করুন। আমি আপনার সমস্যা বুঝতে পারি না, আপনি আরও কিছু উদাহরণ দিতে পারেন?
টেরডন

3
আসলে, সেড একটি স্ট্রিম এডিটর । পেডেন্টিক হওয়ার কথা নয়, তবে আসলে ফাইলটি সংশোধন করা নয়, যদি না সেই ফাইলগুলি স্ট্রিম হয়। ঠিক এই কারণেই -iপতাকাটি মানহীনedফাইল সম্পাদনা করার জন্য।
কোজিরো

উত্তর:


43

সাধারণ ক্ষেত্রে আপনি ডিফল্ট আদেশগুলি মোটেও প্রতিস্থাপন করতে পারবেন না (বা হওয়া উচিত নয় )। কারণটি হ'ল অনেকগুলি সিস্টেম প্রশাসনের স্ক্রিপ্ট এবং তৃতীয় পক্ষের প্যাকেজগুলি সম্ভবত ওএস এক্স-এর বাক্স থেকে বেরিয়ে আসা আচরণ করতে এই আদেশগুলি উপর নির্ভর করে

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

আপনি যা করতে পারেন তা হল একটি পরিবেশ ইনস্টল করা যা ডিফল্টগুলি ওভাররাইট না করে অন্য ডিরেক্টরিতে GNU ইউটিলিটিগুলি ইনস্টল করে এবং তারপরে আপনার PATHপরিবেশ পরিবর্তনশীলকে সামঞ্জস্য করে যাতে এটি সিস্টেম ডিরেক্টরি অনুসন্ধান করার আগে GNU ডিরেক্টরিতে প্রাপ্ত কমান্ডগুলিকে অগ্রাধিকার দেয়। আপনি এটিকে তারে যুক্ত করতে পারেন যাতে আপনি যদি কোনও ইন্টারেক্টিভ শেল শুরু করে থাকেন তবে এটি কেবল আপনার প্যাথটিকে সেট করে; আপনি কী করতে চান তা গুগল করতে পারেন bashবা এসইউতে অন্য প্রশ্ন জিজ্ঞাসা করতে পারেন (বা এটি অনুসন্ধান করুন, যেহেতু এটি সম্ভবত আগে জিজ্ঞাসা করা হয়েছিল) আপনি যদি এটি করতে চান তবে।

যেমন একটি পরিবেশের উদাহরণ হোমব্রু উদাহরণস্বরূপ sedঅন্যান্য জিনিসের মধ্যে জিএনইউ রয়েছে। একবার হোমব্রিউ ইনস্টল হয়ে গেলে আপনি টাইপ করতে পারেন

brew install coreutils

এবং GNU Coreutils ইনস্টল করুন । এই সাথে আপনি উপলব্ধ হবে sed, date, printf, wcএবং যে জিএনইউ / লিনাক্স, কিন্তু না OS X এর তবে সঙ্গে জাহাজ, "ওভাররাইড" ডিফল্ট OS X এর বাইনারি তাই নয় অনেক অন্যান্য সরঞ্জাম, তারা পূর্বে সমাধান করা হবে gডিফল্টরূপে। সুতরাং, Coreutils ইনস্টল করার পরে, আপনি GNU সেড ব্যবহার করতে চান, টাইপ করুন

gsed

এটি প্রতিবার টাইপ করার ক্ষেত্রে যদি ঝামেলা খুব বেশি হয় তবে আপনি আপনার রাস্তায় একটি "গনুবিন" ডিরেক্টরি যুক্ত করতে পারেন এবং কেবল জিএনইউ সিড দিয়ে কল করতে পারেন sed। আপনাকে নিম্নলিখিতগুলিতে আপনার যুক্ত করতে হবে ~/.bash_profile:

PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"

অবশ্যই, আপনি বাদাম (কার্নেল, ব্যবহারে X11, প্রাপ্ত syscall সামঞ্জস্য, ইত্যাদি) স্যুপ থেকে লিনাক্স পরিবেশ প্রয়োজন হলে আপনি যেমন একটি ভার্চুয়াল মেশিন, ইন লিনাক্স চালানোর জন্য আছে VirtualBox । লিনাক্সে চালনার জন্য ডিজাইন করা সফ্টওয়্যার বা স্ক্রিপ্টগুলি চালনার দরকার হলে এটি নিরাপদ বাজি।

হোমব্রব কেবলমাত্র এমন কিছু প্রোগ্রামের জন্য সামঞ্জস্যতা বহন করবে যা লিনাক্স-নির্দিষ্ট আচরণের প্রয়োজন হয় না। উদাহরণস্বরূপ inotifyশুধুমাত্র লিনাক্স এ উপলব্ধ। drm(ডাইরেক্ট রেন্ডারিং ম্যানেজার) কেবল লিনাক্স এ উপলব্ধ। আরও কিছু নিম্ন স্তরের সিস্টেম কল রয়েছে যা কেবলমাত্র লিনাক্সে উপলভ্য, এবং যার জন্য ওএস এক্সে সমতুল্য নেই, তাই লিনাক্স থেকে ওএস এক্সে কিছু প্রোগ্রাম পোর্ট করা গুরুত্বপূর্ণ কোড পরিবর্তন ছাড়াই অবৈধ বা অসম্ভব হতে পারে।



13
যে কারণেই brew install coreutilsঅন্তর্ভুক্ত নেই sed। আপনি brew install gnu-sedযদিও এটি আপডেট করেন তবুও আপনি এই ইনস্টলগুলি করতে পারেন gsedএবং নাও sedকরতে পারেন $PATH। আমি ম্যাকের গোপন করতে একটি সিমিলিংক তৈরি করেছি sed: ln -s $(which gsed) $(brew --prefix coreutils)/libexec/gnubin/sedতবে man gsedসঠিক ম্যানপেজটি দেখতে আপনাকে এখনও করতে হবে ।
dimo414

6
brew install gnu-sed --default-namesএটি ইনস্টল করবেsed
আইভোট্রন

1
পরিবর্তে --default-names, আপনি g-উপসর্গযুক্ত কমান্ডগুলি দিয়ে ইনস্টল করতে পারেন এবং তারপরে oh-my-zsh ইনস্টল করতে পারেন (অত্যন্ত প্রস্তাবিত) এবং প্লাগইনটি gnu-utils সক্ষম করতে পারেন।
বিবস্থ

3

আপনি একটি জেন্টো প্রিফিক্স ব্যবহার করতে পারেন যা ওএস এক্সকে সমর্থন করে, আপনি এটি বুটস্ট্র্যাপ করে এবং তারপরে আপনার প্যাথের উপসর্গ ডিরেক্টরিতে প্রাসঙ্গিক পাথগুলি যুক্ত করে এটি করতে পারেন । এটি হতে পারে এটি ইতিমধ্যে এটি আপনার জন্য করে। এটি করার পরে আপনি প্যাকেজ ইনস্টল করার জন্য স্ট্যান্ডার্ড জেন্টু কমান্ড ব্যবহার করতে পারেন।

emerge coreutils উদাহরণস্বরূপ আপনি মানক GNU ব্যবহারগুলি পাবেন।

দয়া করে নোট করুন যে জেন্টু ডিফল্টরূপে সংকলন করে, আপনি তার পরিবর্তে বাইনারি হোস্ট সেটআপ করতে চাইতে পারেন । এটি কেবলমাত্র নিবন্ধের দ্বিতীয়ার্ধে একটি ইউআরএল ব্যবহার করছে এবং এটি আপনার উপসর্গের PORTAGE_BINHOST="... your url here ..."মধ্যে রেখে দিচ্ছে ./etc/make.conf


1

@ Allquixotic এর পোস্ট অনুসরণ হিসাবে, এখানে সরকারী নির্দেশাবলী দেওয়া হয় brew install coreutils

সমস্ত কমান্ডগুলি 'g' উপসর্গের সাথে ইনস্টল করা হয়েছে।

যদি আপনার সত্যিকারের সাধারণ নামগুলির সাথে এই কমান্ডগুলি ব্যবহার করার দরকার হয় তবে আপনার বাশার্ক থেকে আপনার রাস্তায় একটি "গনুবিন" ডিরেক্টরি যুক্ত করতে পারেন

PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

অতিরিক্তভাবে, আপনি বাশার্ক থেকে আপনার মনপথে সাধারণ নামের সাথে "ম্যানুম্যান" ডিরেক্টরিতে তাদের ম্যান পৃষ্ঠাগুলি অ্যাক্সেস করতে পারেন

MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

0

সম্মানের সাথে sedআপনি Rudixপ্রকল্প থেকে একটি পূর্বনির্ধারিত বাইনারি ডাউনলোড করতে পারেন । আরও Rudixপ্যাকেজগুলির জন্য এখানে এবং এখানে দেখুন

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