জিএনইউ কোর ইউটিলিটিগুলির সাথে ম্যাক ওএস এক্স ইউটিলিটিগুলি কীভাবে প্রতিস্থাপন করবেন?


179

আমি খুঁজে পেলাম ম্যাক ওএসএক্স এবং লিনাক্সে ইউটিলিটি কমান্ডের মধ্যে কিছু পার্থক্য রয়েছে। আমি আমার অভিজ্ঞতা একত্রিত করতে চাই

আমি কীভাবে আমার সমস্ত ম্যাক ইউটিলিটিগুলি জিএনইউ ইউটিলিটিগুলির সাথে প্রতিস্থাপন করতে পারি?




16
আমি আপনার হতাশাগুলির প্রতি সহানুভূতি জ্ঞাপন করি তবে আমি বিশ্বাস করি যে দীর্ঘমেয়াদে তাদের প্রতিস্থাপন করা হলে এটি আরও বেশি হতাশার কারণ হয়ে দাঁড়াবে - একই জিনিসটি করার চেষ্টা করার পরে আমি homebrewনীচে উল্লিখিত হিসাবে ব্যবহার করার পরামর্শ দিই , এবং তারপরে কেবল ইউটিলিটিগুলি ব্যবহার করতে শিখছি ক g( gsed, greadlinkইত্যাদি) সিস্টেম ইউটিলিটিগুলি প্রতিস্থাপনের পরিবর্তে।
সিডব্লিউ


3
আমি @cwd এর সাথে একমত নই, ব্যবহার --with-default-namesকেবল স্থানীয় ব্যবহারকারীকেই প্রভাবিত করে। এটি ম্যাক ওরিয়েন্টেড টার্মিনাল ইউটিলিটিগুলির সাথে একটি সমস্যা হতে পারে, তবে আপনি যদি সমস্ত কিছুর জন্য হোমব্রু ব্যবহার করেন তবে আপনি সম্ভবত লিনাক্স ব্যবহার করছেন বলে ভান করতে পারেন। ইটার্ম 2 এর সাথে মিশ্রিত, এটি আমার পক্ষে দুর্দান্ত কাজ করছে, আমি মূলত আমার লিনাক্স বাক্সগুলি নিয়ে ঘরে বসে ভান করতে পারি।
রায় ফস

উত্তর:


209

এটি g উপসর্গ সহ GNU ইউটিলিটিগুলির জন্য প্রতিলিপি যুক্ত করে /usr/local/bin/:

brew install coreutils findutils gnu-tar gnu-sed gawk gnutls gnu-indent gnu-getopt grep

brew search gnuঅন্যান্য প্যাকেজগুলির জন্য দেখুন । আপনি যদি এগ্রি প্রিফিক্স ব্যতীত কমান্ডগুলি ব্যবহার করতে চান তবে উদাহরণস্বরূপ /usr/local/opt/coreutils/libexec/gnubinআপনার অন্যান্য ডিরেক্টরিগুলির আগে যোগ করুন PATH

$ brew info coreutils
coreutils: stable 8.21
http://www.gnu.org/software/coreutils
Depends on: xz
/usr/local/Cellar/coreutils/8.20 (208 files, 9.4M)
/usr/local/Cellar/coreutils/8.21 (210 files, 9.6M) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/coreutils.rb
==> Caveats
All commands have been installed with the prefix 'g'.

If you really need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:

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

Additionally, you can access their man pages with normal names if you add
the "gnuman" directory to your MANPATH from your bashrc as well:

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

6
FWIW, আমি একটি Homebrew ফর্মুলা ঐ সব মহান গনুহ utils জন্য একটি মেটা-প্যাকেজ হিসাবে কাজ করে আছে: দেখুন shiny-and-gnu.rbgithub.com/al-the-x/homebrew-mine
আওয়ামী লীগ এক্স

1
প্রথম পাথ কাজ করে তবে মনপথ ব্যর্থ হয় কেন? OSX10.10 ব্যবহার করছি বলেই কি? আমি $ মনপথ প্রতিধ্বনিত হয়েছিল এবং আমি পেয়েছি /usr/local/opt/coreutils/libexec/gnuman:, মনে হয় মূল মনপথ অন্তর্ভুক্ত ছিল না। আমার বাশার্কে মনপথ কনফিডে মন্তব্য করার পরে, আমি কিছু পাইনি ecoh $MANPATH। এবং অবশ্যই আমি যদি ব্যবহার man pwdকরি তবে বিএসডি ম্যানুয়াল পেয়েছি। কিভাবে এটি ঠিক করবেন?
জেন

2
এর জন্য findutils, আপনাকে যুক্ত করতে হবে PATH="/usr/local/Cellar/findutils/4.4.2/bin:$PATH"যা ইনস্টলেশন কনসোল আউটপুটে বর্ণিত হয়নি।
শ্রীধর সারনোবাত

1
এছাড়াও, সঠিক ম্যান পৃষ্ঠা পেতে, এটি findutilsআপনার$MANPATH /usr/local/opt/findutils/share/man
ক্রিশ্চিয়ান লং

1
@Zen: সূচনা করার সঠিক উপায় MANPATHডিফল্ট সিস্টেম মান রাখার তাই হয়: MANPATH="/usr/local/opt/coreutils/libexec/gnuman:${MANPATH-/usr/share/man}"। কীটি নির্মাণে রয়েছে ${var-default_value}
ড্যান

49

এছাড়া brew install coreutils, এছাড়াও আপনি যেমন অন্য কিছু প্যাকেজ ইনস্টল করার প্রয়োজন হতে পারে gnu-sed, grep:

brew install findutils
brew install gnu-indent
brew install gnu-sed
brew install gnutls
brew install grep
brew install gnu-tar
brew install gawk

নোট করুন যে --with-default-namesবিকল্পটি জানুয়ারী 2019 থেকে অপসারণ করা হয়েছে, সুতরাং প্রতিটি বাইনারি যদি gউপসর্গ ব্যতীত ব্যবহার করতে হয় তবে সেই পথে যুক্ত করতে হবে ।

পুরানো রেফারেন্স (যখন --with-default-namesউপলভ্য ছিল): http://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/


নোট করুন brew install gawk(অন্য সকলের মতো নয়) প্রতিস্থাপন করবে awk(প্রতীকী লিঙ্কের মাধ্যমে /usr/local/bin/awk)। আপনি যদি আসলটি রাখতে চান তবে /usr/bin/awkঠিকrm /usr/local/bin/awk
বুদ্ধিমান

16

আমি নিশ্চিত নই যে আমি তাদের প্রতিস্থাপনের পরামর্শ দেব ; তবে আপনি এগুলিকে অন্য কোনও পথে ইনস্টল করতে পারেন এবং সেভাবে তাদের ব্যবহার করতে পারেন। সামগ্রিকভাবে, আপনি যদি লিনাক্স থেকে এসে থাকেন এবং আরও "জেনেরিক" * নিক্স ইউটিলিটি এবং অ্যাপের অনুরূপ একটি সিস্টেমে অ্যাক্সেস চান, তবে আমি ম্যাকপোর্টগুলি সন্ধান করার পরামর্শ দেব: http://www.macport.org

এটি কেবল উদাহরণ হিসাবে অ্যাপলের অন্তর্ভুক্ত জিসিসির বিপরীতে / ছাড়াও সর্বশেষতম "জেনেরিক" জিসিসি ব্যবহার করার অনুমতি দেয়।


3
উদাহরণস্বরূপ, ম্যাক ওএস এক্স থেকে টার এবং জিপ মেটাডেটা সম্পর্কে জানে যেটি জিএনইউ সংস্করণগুলি নয়।
lhf

1
অ্যাপল সরবরাহিত অ্যাপ্লিকেশন রয়েছে, যা কিছু কমান্ড লাইন সরঞ্জামের জন্য কেবল জিইউআই এবং আপনি যদি তাদের প্রতিস্থাপন করেন তবে অ্যাপগুলি অদ্ভুত আচরণ শুরু করতে পারে, তাই প্রতিস্থাপন না করে যুক্ত করে যান।
প্রথম Ƭ

রাইট; ম্যাকপোর্টের মতো কিছু এগুলি যুক্ত করে, এটি তাদের প্রতিস্থাপন করে না।
জোনাথন

আপনি যদি ম্যাকপোর্টসের সাথে ডিফল্টভাবে জিএনইউ ইউটিলিটিগুলি ব্যবহার করতে চান তবে /opt/local/libexec/gnubinআপনি আপনার PATHপরিবেশ পরিবর্তনশীলের সম্মুখভাগে যুক্ত করতে পারেন ।
মার্কশিপ

8

এটি করার জন্য আমি একটি স্ক্রিপ্ট লিখেছি! স্ক্রিপ্টটি এখানে (বা নীচে) দেখা যায় । যাইহোক, আমি সর্বদা গ্যারান্টি দিতে পারি না এই পোস্টটি লিঙ্কযুক্ত লিখিতটির সর্বশেষ সংস্করণটি প্রতিফলিত করবে।

স্ক্রিপ্টটি চালানোর পরে, হোমব্রু ইনস্টল করা হবে (যদি না ইতিমধ্যে থাকে), সমস্ত সম্পর্কিত জিএনইউ ইউটিলিটি ইনস্টল করা হবে (যদি না ইতিমধ্যে থাকে), এবং PATHইনস্টল ইউটিলিটিগুলি থেকে ভেরিয়েবলটি নির্মিত হবে।

#!/bin/bash

# Install Homebrew (if not already installed)
ruby -e "$(curl -fsSL "\
"https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Install required packages from Homebrew
brew tap homebrew/dupes
brew install coreutils binutils diffutils ed findutils gawk gnu-indent gnu-sed \
  gnu-tar gnu-which gnutls grep gzip screen watch wdiff wget bash gdb gpatch \
  m4 make nano file-formula git less openssh python rsync svn unzip vim \
  --default-names --with-default-names --with-gettext --override-system-vi \
  --override-system-vim --custom-system-icons

# Empty the .bash_path file that holds GNU paths
> ~/.bash_path

# Build PATH variable script in ~/.bash_path
for i in /usr/local/Cellar/*/*/bin; do
  echo 'export PATH="'$i':$PATH"' >> ~/.bash_path
done
for i in /usr/local/Cellar/*/*/libexec/gnubin; do
  echo 'export PATH="'$i':$PATH"' >> ~/.bash_path
done
for i in /usr/local/Cellar/*/*/share/man; do
  echo 'export MANPATH="'$i':$MANPATH"' >> ~/.bash_path
done
for i in /usr/local/Cellar/*/*/libexec/gnuman; do
  echo 'export MANPATH="'$i':$MANPATH"' >> ~/.bash_path
done

# Check if .bash_path is being called from .bash_profile
PATCH=`grep "~/.bash_path" ~/.bash_profile`
if [ "$PATCH" == "" ]; then
  # Add Ubuntu-style PS1 to .bash_profile
  cat <<EOF > ~/.bash_profile
export PS1="\[\033[1;32m\]\u@\h\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]# "
EOF
  # Add .bash_path to .bash_profile
  echo "source ~/.bash_path" >> ~/.bash_profile
fi

1
আপনি কি সমালোচনামূলক কোনও মন্তব্য না করেই ডাউনভোটদের ভালবাসেন না? স্ক্রিপ্টের জন্য আপনাকে ধন্যবাদ।
জাস্টিন ফোর্স

@ জাস্টিনফোরস কোন সমস্যা নেই! প্রতিক্রিয়ার জন্য ধন্যবাদ।
ক্লে ফ্রিম্যান

2
-1। এই স্ক্রিপ্টগুলি খুব বেশি যাদু করে। .bash_pathআপনি যদি ব্যবহারকারীর @ ব্যবহারকারী 495470 এবং @ xuhdev এর উত্তরগুলি অনুসরণ করেন তবে সমস্ত মেম্বলিংয়ে সত্যই প্রয়োজন হয় না। এবং পিএস 1 পরিবর্তন করা পুরোপুরি এই প্রশ্নের আওতার বাইরে।
গ্রেগ দুবিকি

1
@ গ্রেগডুবিকি দুর্ভাগ্যক্রমে, এই কয়েকটি প্যাকেজের জন্য বাশ পাথ "ম্যাংলিং" প্রয়োজন। আপনি নিজের জন্য এটি পরীক্ষা করতে পারেন। PS1 পরিবর্তন সম্পর্কিত ক্ষেত্রে: এই স্ক্রিপ্টটি ব্যক্তিগত ব্যবহারের জন্য। যে কেউ এটিকে ফিরিয়ে দিতে চায় সে খুব সহজেই এটি করতে পারে।
ক্লে ফ্রিম্যান

5

আমি একটি স্ক্রিপ্ট লিখেছি যা স্বচ্ছভাবে ম্যাকস সিএলআইকে একটি তাজা জিএনইউ / লিনাক্স সিএলআই অভিজ্ঞতা রূপান্তর করে

  • অনুপস্থিত জিএনইউ প্রোগ্রাম ইনস্টল করা হচ্ছে
  • পুরানো জিএনইউ প্রোগ্রাম আপডেট করা
  • প্রাক ইনস্টলড BSD প্রোগ্রামগুলি তাদের পছন্দের GNU বাস্তবায়নের সাথে প্রতিস্থাপন করে
  • জনপ্রিয় জিএনইউ / লিনাক্স বিতরণগুলির মধ্যে সাধারণ অন্যান্য প্রোগ্রাম ইনস্টল করা

https://github.com/fabiomaia/linuxify

git clone https://github.com/fabiomaia/linuxify.git
cd linuxify/
./linuxify install

এটি আপনাকে সহজেই সমস্ত কিছু পূর্বাবস্থায় ফেরানোর অনুমতি দেয়।

./linuxify uninstall

1
প্রথম কমান্ড চালানোর চেষ্টা করা ( git clone git@github.com.:fabiomaia/linuxify.git) এটি প্রথমে বলেছিল "হোস্ট 'github.com' এর সত্যতা প্রতিষ্ঠিত হতে পারে না"। আমি টাইপ করে yesএন্টার চাপলাম। তারপরে এটা git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.কি বললো ?
ইওলোগফিফ

@ আইজোগফিফ পরিবর্তে এইচটিটিপিএসের সাথে ক্লোনিংয়ের চেষ্টা করুনgit clone https://github.com/fabiomaia/linuxify.git
ফিবোমোমিয়া

1
হ্যাঁ, এটি কাজ করেছিল। দয়া করে আপনার উত্তর আপডেট করুন (এছাড়াও, শুরুতে এই ডলারগুলি সরিয়ে দিন - পাঠ্য নির্বাচন করার সময় সেগুলি অনুলিপি করা হয় এবং কনসোলে কপি-পেস্ট করা হয়)।
ইওলোগফিফ

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