저는 지난 4 년 동안 우분투를 사용해 왔습니다.
셸 명령에 대한 기본 지식이 있으며 GUI를 사용하는 것보다 터미널에서 작업하는 것을 선호합니다. 최근에 Mac을 사용하기 시작했습니다.
Mac 터미널에서 몇 가지 터미널 명령 (Ubuntu에서 사용)을 시도했는데 거의 동일한 방식으로 응답하는 것 같습니다.
내가 사용하는 명령, 수행하는 작업 또는 알고 있어야하는 셸 환경에 중요한 차이점이 있습니까?
저는 지난 4 년 동안 우분투를 사용해 왔습니다.
셸 명령에 대한 기본 지식이 있으며 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이 예를 들어 useradd
Mac 에서는 사용하지 않고 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'
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에는 일반적으로 확장 정규식을 호출 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 데몬이이를 라이브 네트워크 상태에 적용하도록해야합니다.