एक मैक बनाम लिनक्स पर टर्मिनल का उपयोग करने के बीच अंतर क्या हैं? [बन्द है]


89

मैं पिछले चार वर्षों से उबंटू का उपयोग कर रहा हूं।
मुझे शेल कमांड का मूल ज्ञान है और मैं GUI का उपयोग करने के बजाय टर्मिनल में काम करना पसंद करता हूं। हाल ही में मैंने एक मैक का उपयोग करना शुरू किया है।

मैंने मैक टर्मिनल में कुछ टर्मिनल कमांड (जो मैं उबंटू पर उपयोग करता हूं) की कोशिश की है और यह ज्यादातर उसी तरह से जवाब देता है।

क्या मेरे द्वारा उपयोग किए जाने वाले कार्य, जो वे करते हैं या मुझे पता होना चाहिए कि शेल वातावरण में कोई महत्वपूर्ण अंतर हैं?


8
मैं प्रोग्रामर एक्सचेंज को फिर से खोलना और स्थानांतरित करना चाहूंगा।
माइकल ड्यूरेंट

1
वेब पर कहीं भी मैक बनाम लिनक्स टर्मिनल कमांड की एक व्यापक सूची है?
जस्सोनलहार्ड २ 27'१on

जवाबों:


61

यदि आपने OS X संस्करण 10.3 या उससे अधिक हाल ही में एक नया या क्लीन इंस्टॉल किया है, तो डिफ़ॉल्ट उपयोगकर्ता टर्मिनल शेल बैश है।

बैश मूल बॉर्न शेल, श के मूल रूप से संवर्धित और GNU फ्रीवेयर संस्करण है। यदि आपके पास बैश (अक्सर GNU / लिनक्स इंस्टॉलेशन पर डिफ़ॉल्ट) के साथ पिछला अनुभव है, तो यह OS X कमांड-लाइन के अनुभव को परिचित बनाता है, अन्यथा अपने शेल को tcsh या zsh पर स्विच करने पर विचार करें, क्योंकि इनमें से कुछ उपयोगकर्ता के अनुकूल हैं।

यदि आप OS X संस्करण 10.2.x, 10.1.x या 10.0.x से उन्नत या उपयोग करते हैं, तो डिफ़ॉल्ट उपयोगकर्ता शेल tcsh है, जो कि csh ('c-shell') का एक उन्नत संस्करण है। प्रारंभिक कार्यान्वयन थोड़ा छोटा था और प्रोग्रामिंग सिंटैक्स थोड़ा अजीब था, इसलिए इसमें एक बुरा रैप विकसित हुआ।

अभी भी मैक और लिनोक्स के बीच कुछ मूलभूत अंतर हैं जैसे कि गॉर्डन डेविसन इतनी उपयुक्त सूची, उदाहरण के लिए useraddमैक पर नहीं और ifconfigअलग तरह से काम करता है।

निम्न तालिका विभिन्न यूनिक्स गोले को जानने के लिए उपयोगी है।

sh      The original Bourne shell   Present on every unix system 
ksh     Original Korn shell         Richer shell programming environment than sh 
csh     Original C-shell            C-like syntax; early versions buggy 
tcsh    Enhanced C-shell            User-friendly and less buggy csh implementation 
bash    GNU Bourne-again shell      Enhanced and free sh implementation 
zsh     Z shell                     Enhanced, user-friendly ksh-like shell

आपको ये मार्गदर्शिकाएँ उपयोगी भी लग सकती हैं:

http://homepage.mac.com/rgriff/files/TerminalBasics.pdf

http://guides.macrumors.com/Terminal
http://www.ofb.biz/safari/article/476.html

एक अंतिम नोट पर, मैं लिनक्स (उबंटू 11) और मैक ओएसएक्स पर हूं इसलिए मैं बैश का उपयोग करता हूं और मुझे जो चीज सबसे ज्यादा पसंद है वह है .bashrc (ओएसएक्स .bash_profileपर स्रोत से ) उपनाम के साथ फाइल, नीचे कुछ उदाहरण। मैंने अब अपने सभी उपनामों को एक अलग .bash_aliases फ़ाइल में रखा और इसे इसके साथ शामिल किया:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

.bashrc या .bash_profile फ़ाइल में।

ध्यान दें कि यह एक मैक-लिनक्स अंतर का एक उदाहरण है क्योंकि एक मैक पर आपके पास नहीं हो सकता है--color=auto । पहली बार मैंने ऐसा किया (बिना जाने) मैंने lsअमान्य होने के लिए फिर से परिभाषित किया जो कि हटाए जाने तक थोड़ा खतरनाक था --auto-color!

आप https://unix.stackexchange.com/q/127799/10043 उपयोगी भी पा सकते हैं

# ~/.bash_aliases
# ls variants
#alias l='ls -CF' 
alias la='ls -A' 
alias l='ls -alFtr' 
alias lsd='ls -d .*' 
# Various
alias h='history | tail'
alias hg='history | grep'
alias mv='mv -i' 
alias zap='rm -i'
# One letter quickies:
alias p='pwd'
alias x='exit'
alias {ack,ak}='ack-grep'
# Directories
alias s='cd ..'
alias play='cd ~/play/'
# Rails
alias src='script/rails console'
alias srs='script/rails server'
alias raked='rake db:drop db:create db:migrate db:seed' 
alias rvm-restart='source '\''/home/durrantm/.rvm/scripts/rvm'\'''
alias rrg='rake routes | grep '
alias rspecd='rspec --drb '
#
# DropBox - syncd
WORKBASE="~/Dropbox/97_2012/work"
alias work="cd $WORKBASE"
alias code="cd $WORKBASE/ror/code"
#
# DropNot - NOT syncd !
WORKBASE_GIT="~/Dropnot"
alias {dropnot,not}="cd $WORKBASE_GIT"
alias {webs,ww}="cd $WORKBASE_GIT/webs"
alias {setups,docs}="cd $WORKBASE_GIT/setups_and_docs"
alias {linker,lnk}="cd $WORKBASE_GIT/webs/rails_v3/linker"
#
# git
alias {gsta,gst}='git status' 
# Warning: gst conflicts with gnu-smalltalk (when used).
alias {gbra,gb}='git branch'
alias {gco,go}='git checkout'
alias {gcob,gob}='git checkout -b '
alias {gadd,ga}='git add '
alias {gcom,gc}='git commit'
alias {gpul,gl}='git pull '
alias {gpus,gh}='git push '
alias glom='git pull origin master'
alias ghom='git push origin master'
alias gg='git grep '
#
# vim
alias v='vim'
#
# tmux
alias {ton,tn}='tmux set -g mode-mouse on'
alias {tof,tf}='tmux set -g mode-mouse off'
#
# dmc
alias {dmc,dm}='cd ~/Dropnot/webs/rails_v3/dmc/'
alias wf='cd ~/Dropnot/webs/rails_v3/dmc/dmWorkflow'
alias ws='cd ~/Dropnot/webs/rails_v3/dmc/dmStaffing'

1
मुझे zshडिफ़ॉल्ट जावा वर्ग पूर्णता पसंद है।
डेव न्यूटन

मुझे याद दिलाने के लिए धन्यवाद कि रंग लाइनक्स और मैकोस एलएस कमांड पर अलग तरह से व्यवहार करता है। मैं दोनों के लिए एक ही bashrc का उपयोग करता हूं और सशर्त रूप से एक ls विकल्प या दूसरे का उपयोग करने का तरीका खोजने की आवश्यकता है ताकि यह सुनिश्चित हो सके कि ls हमेशा रंग प्राप्त करता है।
बस्तियन

मैं इसे ऑपरेटिंग सिस्टम के अनुसार सशर्त रूप से एक ls विकल्प या दूसरे का उपयोग करने जा रहा हूं: _myos = "$ (uname)" और फिर Linux में $ _myos का मामला) उर्फ ​​फू = '/ path / to / linux / bin / foo ';; FreeBSD | OpenBSD) उर्फ ​​foo = '/ path / to / bsd / bin / foo' ;; *) ;; esac
बास्तियन

1
बास्टियन, आपके पास lsलिनक्स ( --color=all) और OSX ( -G) दोनों के लिए निम्नलिखित के साथ रंग हो सकते हैं : ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
माइकल डुरंट

TerminalBasics.pdf लिंक मृत प्रतीत होता है। क्या यह वही दस्तावेज है?
प्लाज्मा

29

@ मिचेल डुरंट का जवाब केवल शेल को कवर करता है, लेकिन शेल पर्यावरण में शेल में आपके द्वारा उपयोग किए जाने वाले विभिन्न कमांड भी शामिल हैं और ये समान नहीं हैं - लेकिन समान नहीं हैं - ओएस एक्स और लिनक्स के बीच। सामान्य तौर पर, दोनों के पास एक ही कोर कमांड और विशेषताएं होंगी (विशेष रूप से पॉज़िक्स मानक में परिभाषित), लेकिन बहुत सारे एक्सटेंशन अलग होंगे।

उदाहरण के लिए, लिनक्स सिस्टम में आम तौर पर useraddनए उपयोगकर्ता बनाने की आज्ञा होती है, लेकिन OS X नहीं। ओएस एक्स पर, आप आमतौर पर उपयोगकर्ताओं को बनाने के लिए जीयूआई का उपयोग करते हैं; यदि आपको उन्हें कमांड लाइन से बनाने की आवश्यकता है, तो आप dsclउपयोगकर्ता डेटाबेस को संपादित करने के लिए उपयोग करें (जो कि लिनक्स के पास नहीं है) ( यहां देखें )। (अपडेट: macOS हाई सिएरा v10.13 में शुरू, आप sysadminctl -addUserइसके बजाय उपयोग कर सकते हैं ।)

साथ ही, कुछ कमांड जो उनके पास हैं उनमें अलग-अलग विशेषताएं और विकल्प होंगे। उदाहरण के लिए, linuxes में आमतौर पर GNU शामिल होता है sed, जो -rविस्तारित नियमित अभिव्यक्तियों को लागू करने के विकल्प का उपयोग करता है ; OS X पर, आप -Eसमान प्रभाव प्राप्त करने के लिए विकल्प का उपयोग करेंगे । इसी तरह, लिनक्स में आप ls --color=autoरंगीन आउटपुट प्राप्त करने के लिए उपयोग कर सकते हैं ; macOS पर, निकटतम समतुल्य है ls -G

संपादित करें: एक और अंतर यह है कि कई लिनक्स कमांड उनके तर्कों (जैसे ls file1 file2 -l) के बाद विकल्पों को निर्दिष्ट करने की अनुमति देते हैं , जबकि अधिकांश ओएस एक्स कमांडों को पहले कड़ाई से आने के लिए विकल्पों की आवश्यकता होती है ( ls -l file1 file2)।

अंत में, चूंकि ओएस खुद ही अलग है, कुछ कमांड ओएस के बीच अलग-अलग व्यवहार करते हैं। उदाहरण के लिए, लिनक्स पर आप शायद ifconfigअपने नेटवर्क कॉन्फ़िगरेशन को बदलने के लिए उपयोग करेंगे। ओएस एक्स पर, ifconfigकाम करेगा (शायद थोड़ा अलग सिंटैक्स के साथ), लेकिन आपके बदलावों को सिस्टम कॉन्फ़िगरेशन नीम द्वारा बेतरतीब ढंग से अधिलेखित किए जाने की संभावना है; इसके बजाय आपको नेटवर्क वरीयताओं को संपादित करना चाहिए networksetup, और फिर कॉन्फ़िगर डेमॉन को लाइव नेटवर्क स्थिति पर लागू करने दें।


3
महान अंक गॉर्डन! हालांकि, मेरे पास भी एक जवाब होगा;) - क्या मुझे इसके लिए कुछ विश्वसनीय नहीं मिलना चाहिए ?!
माइकल डुरंट

1
खासकर जब से तुम्हारा अपने आप में एक अच्छा जवाब है; मैंने आपको एक वोट दिया है।
गॉर्डन डेविसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.