В чем разница между использованием терминала на mac и linux? [закрытый]
Я использую Ubuntu в течение последних четырех лет.
У меня есть базовые знания команд и я предпочитаю работать в терминале, а не через графический интерфейс. Недавно я начал использовать Mac.
Я пробовал несколько команд терминала (которые я использую на Ubuntu) в терминале Mac, и он, кажется, отвечает в основном таким же образом.
существуют ли какие-либо существенные различия в командах, которые я использую, задачах, которые они выполняют, или среде оболочки, в которой я должен быть в курсе?
2 ответов:
если вы сделали новую или чистую установку OS X версии 10.3 или более поздней, оболочка пользовательского терминала по умолчанию-bash.
Bash-это, по сути, расширенная и бесплатная версия GNU оригинальной оболочки Bourne, sh. Если у вас есть предыдущий опыт работы с bash (часто по умолчанию в установках GNU/Linux), это делает опыт командной строки OS X знакомым, в противном случае рассмотрите возможность переключения вашей оболочки либо на tcsh, либо на zsh, поскольку некоторые считают их более удобными для пользователя.
если вы обновили или используете OS X версии 10.2.x, 10.1.x или 10.0.x, оболочка пользователя по умолчанию-tcsh, Расширенная версия csh ('C-shell'). Ранние реализации были немного глючными, а синтаксис программирования немного странным, поэтому он разработал плохой рэп.
есть еще некоторые фундаментальные различия между 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, и мне больше всего нравится настраивать .bashrc (источник от
.bash_profileна OSX) файл с псевдонимами, некоторые примеры ниже. Теперь я поместил все свои псевдонимы в отдельный .bash_aliases файл и включить его с:if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fiв the .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'
ответ@Michael Durrant умело охватывает саму оболочку, но среда оболочки также включает в себя различные команды, которые вы используете в оболочке, и они будут похожи-но не идентичны-между OS X и linux. В общем, оба будут иметь одни и те же основные команды и функции (особенно те, которые определены в стандарте Posix), но многие расширения будут отличаться.
например, системы linux обычно имеют
useraddкоманда для создания новых пользователей, но OS X в OS X вы обычно используете графический интерфейс для создания пользователей; если вам нужно создать их из командной строки, вы используетеdscl(который linux не имеет) для редактирования базы данных пользователей (см. здесь).кроме того, некоторые команды, которые они имеют в общем будут иметь различные функции и параметры. Например, Linux на, как правило, включают ГНУ
sed, который использует-rвозможность вызова расширенных регулярных выражений; в OS X вы бы использовали-Eвозможность получить то же самое эффект.EDIT: другое отличие заключается в том, что многие команды linux позволяют указывать параметры после их аргументов (например,
ls file1 file2 -l), в то время как большинство команд OS X требуют, чтобы параметры были строго первыми (ls -l file1 file2).наконец, поскольку сама ОС отличается, некоторые команды в конечном итоге ведут себя по-разному между ОС. Например, в linux вы, вероятно, используете
ifconfigдля изменения конфигурации сети. На OS X,ifconfigбудет работать (возможно, с немного другой синтаксис), но ваши изменения, скорее всего, будут перезаписаны случайным образом демоном конфигурации системы; вместо этого вы должны отредактировать сетевые настройки с помощьюnetworksetup, а затем пусть демон конфигурации применит их к состоянию живой сети.
Comments