我過去四年來一直在使用Ubuntu。
我有一個shell命令的基本知識,我更喜歡在終端上工作,而不是使用GUI。最近我開始使用Mac。在Mac和Linux上使用終端之間有什麼區別?
我已經嘗試了幾個終端命令(我在Ubuntu上使用)在Mac終端,它似乎以基本相同的方式迴應。
在我使用的命令,它們執行的任務或我應該注意的shell環境中,是否有任何顯着差異?
我過去四年來一直在使用Ubuntu。
我有一個shell命令的基本知識,我更喜歡在終端上工作,而不是使用GUI。最近我開始使用Mac。在Mac和Linux上使用終端之間有什麼區別?
我已經嘗試了幾個終端命令(我在Ubuntu上使用)在Mac終端,它似乎以基本相同的方式迴應。
在我使用的命令,它們執行的任務或我應該注意的shell環境中,是否有任何顯着差異?
如果您執行了OS X 10.3或更新版本的新安裝或全新安裝,則默認的用戶終端shell爲bash。
Bash本質上是原始Bourne shell sh的增強版和GNU免費版本。如果您以前有bash經驗(通常是GNU/Linux安裝中的默認設置),這會使OS X命令行體驗變得很熟悉,否則請考慮將shell切換到tcsh或zsh,因爲有些人覺得這些更加用戶友好。
如果您從OS X版本10.2.x,10.1.x或10.0.x進行升級,則默認用戶shell是tcsh,它是csh('c-shell')的增強版本。早期的實現是有點bug,編程語法有點怪,所以它開發了一個壞的說唱。
作爲Gordon Davisson,mac和linux仍然存在一些根本差異,例如Mac上的useradd
和ifconfig
的工作方式不同。
下表對於瞭解各種unix shell非常有用。
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(源自.bash_profile
在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'
@邁克爾杜蘭特的回答巧妙地覆蓋殼體本身,而是shell環境還包括您在shell中使用,並且這些都將是類似的各種命令 - 但不完全相同 - 在OS X和Linux之間。一般而言,兩者將具有相同的核心命令和功能(尤其是那些在Posix標準中定義的),但許多擴展將會不同。
例如,Linux系統一般有useradd
命令來創建新用戶,但OS X沒有。在OS X上,通常使用GUI來創建用戶;如果需要從命令行創建它們,則使用dscl
(Linux不具備)來編輯用戶數據庫(請參閱here)。
此外,一些命令他們的共同點將有不同的功能和選項。例如,linuxes通常包含GNU sed
,它使用-r
選項來調用擴展正則表達式;在OS X上,您可以使用-E
選項來獲得相同的效果。
編輯:另一個區別是,很多linux命令允許在其參數後面指定選項(例如ls file1 file2 -l
),而大多數OS X命令需要嚴格優先選項(ls -l file1 file2
)。
最後,由於操作系統本身是不同的,一些命令拉閘的操作系統之間的行爲不同。例如,在Linux上,您可能會使用ifconfig
來更改網絡配置。在OS X上,ifconfig
可以工作(可能語法略有不同),但您的更改可能會被系統配置守護進程隨機覆蓋;相反,您應該使用networksetup
編輯網絡首選項,然後讓配置守護程序將它們應用到實時網絡狀態。
偉大的戈登!即使我也有答案,我會+1!) - 我不應該爲此獲得某些榮譽嗎?! –
特別是因爲你自己是一個相當好的答案;我也給了你一票。 –
我想重新打開並轉向程序員交換。 –
有沒有web上任何地方的mac和linux終端命令的完整列表? – jasonleonhard