MacとLinuxでターミナルを使用する場合の違いは何ですか?[閉まっている]


89

私は過去4年間Ubuntuを使用しています。
シェルコマンドの基本的な知識があり、GUIを使用するよりもターミナルで作業することを好みます。最近、Macを使い始めました。

Macターミナルでいくつかのターミナルコマンド(Ubuntuで使用)を試しましたが、ほとんど同じように応答するようです。

使用するコマンド、それらが実行するタスク、または注意が必要なシェル環境に大きな違いはありますか?


8
再開してプログラマー交換に移動したいと思います。
Michael Durrant

1
MacとLinuxのターミナルコマンドの包括的なリストはWebのどこにありますか?
jasonleonhard 2017年

回答:


61

OS Xバージョン10.3以降を新規またはクリーンインストールした場合、デフォルトのユーザーターミナルシェルはbashです。

Bashは基本的に、オリジナルのBourneシェルshの拡張されたGNUフリーウェアバージョンです。以前にbashを使用した経験がある場合(多くの場合、GNU / Linuxインストールのデフォルト)、これによりOS Xコマンドラインエクスペリエンスが使い慣れます。そうでない場合は、シェルをtcshまたはzshに切り替えることを検討してください。

OS Xバージョン10.2.x、10.1.x、または10.0.xからアップグレードするか使用する場合、デフォルトのユーザーシェルは、csh( 'c-shell')の拡張バージョンであるtcshです。初期の実装は少しバグがあり、プログラミング構文は少し奇妙だったので、悪いラップが生まれました。

Gordon Davissonが非常に適切にリストしているため、MacとLinuxの間にはまだいくつかの基本的な違いがあります。たとえばuseradd、Macではifconfig動作せず、動作が異なります。

次の表は、さまざまなUNIXシェルを理解するのに役立ちます。

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

最後に、私はLinux(Ubuntu 11)とMac osXを使用しているため、bashを使用していますが、最も気に入っているのは.bash_profile、エイリアスを使用して.bashrc(OSX からソースを取得)ファイルをカスタマイズすることです。すべてのエイリアスを別の.bash_aliasesファイルに配置し、次のように含めます。

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

.bashrcまたは.bash_profileファイル内。

これはMacとLinuxの違いの例であることに注意してください。Macではを使用できないため--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のデフォルトのJavaクラス補完が好きです。
デイブニュートン

LinuxとMacOSのlsコマンドでcolorの動作が異なることを思い出してくれてありがとう。私は両方に同じbashrcを使用しており、lsが常に色を取得するように、一方のlsオプションまたは他方を条件付きで使用する方法を見つける必要があります。
Bastian

これを使用して、オペレーティングシステムに応じて1つのlsオプションまたは他のlsオプションを条件付きで使用します。 / foo ';; FreeBSD | OpenBSD)エイリアスfoo = '/ path / to / bsd / bin / foo' ;; *);; esac
Bastian

1
バスティアンは、あなたがのために色を持つことができるlsのLinux(両方で--color=all)とOSX( -G:以下付き) ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
マイケル・デュラント

TerminalBasics.pdfリンクが機能していないようです。ある本は、同じドキュメント?
プラズマ

29

@Michael Durrantの回答はシェル自体をカバーしていますが、シェル環境にはシェルで使用するさまざまなコマンドも含まれており、これらはOS Xとlinuxの間で類似していますが、同一ではありません。一般に、どちらも同じコアコマンドと機能(特にPosix標準で定義されているもの)を備えていますが、多くの拡張機能は異なります。

たとえば、Linuxシステムには通常、useradd新しいユーザーを作成するコマンドがありますが、OS Xにはありません。OS Xでは、通常、GUIを使用してユーザーを作成します。コマンドラインから作成する必要がある場合は、dscl(Linuxにはありません)ユーザーデータベースを編集します(ここを参照)。(更新:macOS High Sierra v10.13以降、sysadminctl -addUser代わりに使用できます。)

また、共通のコマンドには、機能やオプションが異なるものもあります。たとえば、一般的にLinuxにはGNUが含まれsedており、GNU は-rオプションを使用して拡張正規表現を呼び出します。OS Xでは-E、同じ効果を得るためにオプションを使用します。同様に、Linuxでは、ls --color=autoカラー出力を取得するために使用できます。macOSでは、最も近いものはls -Gです。

編集:もう1つの違いは、多くのLinuxコマンドでは引数の後にオプションを指定できることです(例:)がls file1 file2 -l、ほとんどのOS Xコマンドでは最初に厳密にオプションを指定する必要があります(ls -l file1 file2)。

最後に、OS自体が異なるため、一部のコマンドはOS間で動作が異なります。たとえば、Linuxでは、おそらくifconfigネットワーク構成の変更に使用します。OS Xではifconfig動作しますが(おそらく少し異なる構文で)、変更はシステム構成デーモンによってランダムに上書きされる可能性があります。代わりに、でネットワーク設定を編集しnetworksetup、configデーモンにそれらをライブネットワーク状態に適用させる必要があります。


3
ゴードンの素晴らしいポイント!私も答えがあっても+1します;)-そのための信用を得るべきではありませんか?
Michael Durrant

1
特にあなたの答えはそれ自体でかなり良い答えなので、私もあなたに投票をしました。
Gordon Davisson、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.