私は過去4年間Ubuntuを使用しています。
シェルコマンドの基本的な知識があり、GUIを使用するよりもターミナルで作業することを好みます。最近、Macを使い始めました。
Macターミナルでいくつかのターミナルコマンド(Ubuntuで使用)を試しましたが、ほとんど同じように応答するようです。
使用するコマンド、それらが実行するタスク、または注意が必要なシェル環境に大きな違いはありますか?
私は過去4年間Ubuntuを使用しています。
シェルコマンドの基本的な知識があり、GUIを使用するよりもターミナルで作業することを好みます。最近、Macを使い始めました。
Macターミナルでいくつかのターミナルコマンド(Ubuntuで使用)を試しましたが、ほとんど同じように応答するようです。
使用するコマンド、それらが実行するタスク、または注意が必要なシェル環境に大きな違いはありますか?
回答:
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'
zsh
のデフォルトのJavaクラス補完が好きです。
ls
のLinux(両方で--color=all
)とOSX( -G
:以下付き) ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
@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デーモンにそれらをライブネットワーク状態に適用させる必要があります。