web-dev-qa-db-ja.com

MacとLinuxで端末を使用する場合の違いは何ですか?

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

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

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

86
mchandy

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

Bashは本質的に、オリジナルのBourne Shell 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には基本的な違いがいくつかあります。たとえば、Macではuseraddifconfigは異なります。

次の表は、さまざまな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を使用します。最も気に入っているのは、.bashrc(OSXの.bash_profileからのソース)ファイルをエイリアスでカスタマイズすることです。以下の例。ここで、すべてのエイリアスを個別の.bash_aliasesファイルに配置し、次のものに含めます。

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

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

Macでは--color=autoを使用できないため、これはmac-linuxの違いの例であることに注意してください。初めて(これを知らずに)無効にするとlsを再定義しましたが、これは--auto-colorを削除するまで少し不安でした!

https://unix.stackexchange.com/q/127799/1004 役に立つこともあります

# ~/.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'
58
Michael Durrant

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

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

また、共通のコマンドには、異なる機能とオプションがあります。たとえば、Linuxには通常GNU sedが含まれています。これは-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を使用してネットワーク設定を編集し、構成デーモンにライブネットワーク状態に適用させる必要があります。

26
Gordon Davisson