Mac과 Linux에서 터미널을 사용하는 것의 차이점은 무엇입니까? [닫은]


89

저는 지난 4 년 동안 우분투를 사용해 왔습니다.
셸 명령에 대한 기본 지식이 있으며 GUI를 사용하는 것보다 터미널에서 작업하는 것을 선호합니다. 최근에 Mac을 사용하기 시작했습니다.

Mac 터미널에서 몇 가지 터미널 명령 (Ubuntu에서 사용)을 시도했는데 거의 동일한 방식으로 응답하는 것 같습니다.

내가 사용하는 명령, 수행하는 작업 또는 알고 있어야하는 셸 환경에 중요한 차이점이 있습니까?


8
재개하여 프로그래머 교환으로 이동하고 싶습니다.
Michael Durrant 2011

1
웹 어디에서나 Mac 대 Linux 터미널 명령의 포괄적 인 목록이 있습니까?
jasonleonhard

답변:


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이 예를 들어 useraddMac 에서는 사용하지 않고 ifconfig다르게 작동 하므로 Mac과 Linux 사이에는 여전히 근본적인 차이점이 있습니다 .

다음 표는 다양한 유닉스 쉘을 아는 데 유용합니다.

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 클래스 완성을 좋아 합니다.
Dave Newton

Linux 및 macos ls 명령에서 색상이 다르게 작동한다는 것을 상기시켜 주셔서 감사합니다. 나는 둘 다에 대해 동일한 bashrc를 사용하고 ls가 항상 색상을 얻도록 조건부로 하나의 ls 옵션 또는 다른 옵션을 사용하는 방법을 찾아야합니다.
Bastian

이 옵션을 사용하여 운영 체제에 따라 하나의 ls 옵션 또는 다른 하나를 조건부로 사용할 것입니다. _myos = "$ (uname)"그리고 Linux에서는 $ _myos) alias foo = '/ path / to / linux / bin / foo ';; FreeBSD | OpenBSD) alias foo = '/ path / to / bsd / bin / foo';; *) ;; esac
Bastian

1
Bastian, lsLinux ( --color=all) 및 OSX ( -G) 모두에서 다음과 같은 색상을 사용할 수 있습니다 . ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
Michael Durrant

TerminalBasics.pdf 링크 가 작동하지 않는 것 같습니다. 가 같은 문서?
Plasma

29

@Michael Durrant의 대답은 셸 자체를 다루지 만 셸 환경에는 셸에서 사용하는 다양한 명령도 포함되어 있으며 OS X와 ​​Linux 사이에서 비슷하지만 동일하지는 않습니다. 일반적으로 둘 다 동일한 핵심 명령과 기능 (특히 Posix 표준에 정의 된 기능)을 갖지만 많은 확장 기능이 다릅니다.

예를 들어, Linux 시스템에는 일반적으로 useradd새 사용자를 생성 하는 명령이 있지만 OS X에는 없습니다. OS X에서는 일반적으로 GUI를 사용하여 사용자를 만듭니다. 명령 줄에서 생성해야하는 경우 dscl(Linux에는 없음)을 사용하여 사용자 데이터베이스를 편집합니다 ( 여기 참조 ). (업데이트 : macOS High Sierra v10.13부터 sysadminctl -addUser대신 사용할 수 있습니다 .)

또한 공통된 일부 명령은 다른 기능과 옵션을 갖습니다. 예를 들어, Linux에는 일반적으로 확장 정규식을 호출 sed하는 -r옵션을 사용하는 GNU가 포함됩니다 . OS X에서는 -E옵션을 사용 하여 동일한 효과를 얻을 수 있습니다. 마찬가지로, 리눅스에서는 ls --color=auto색상 화 된 출력을 얻기 위해 사용할 수 있습니다 . macOS에서 가장 가까운 것은 ls -G.

편집 : 또 다른 차이점은 ls file1 file2 -l대부분의 OS X 명령은 옵션이 가장 먼저 오도록 옵션을 요구하는 반면 (예 :) 많은 Linux 명령에서 옵션을 지정할 수 있다는 것 ls -l file1 file2입니다.

마지막으로 OS 자체가 다르기 때문에 일부 명령은 OS간에 다르게 작동합니다. 예를 들어 Linux에서는 ifconfig네트워크 구성을 변경 하는 데 사용할 수 있습니다. OS X에서는 ifconfig작동하지만 (아마 약간 다른 구문으로) 변경 사항은 시스템 구성 데몬에 의해 임의로 덮어 쓰기 될 수 있습니다. 대신를 사용하여 네트워크 기본 설정을 편집 networksetup한 다음 config 데몬이이를 라이브 네트워크 상태에 적용하도록해야합니다.


3
그레이트 포인트 고든! 나도 답이 있어도 +1하겠습니다;)-나는 그것에 대해 약간의 신뢰를 얻어야하지 않습니까?!
Michael Durrant 2011

1
특히 당신의 대답은 그 자체로 아주 좋은 대답이기 때문에; 나도 당신에게 투표를했습니다.
Gordon Davisson 2011
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.