방송대/UNIX시스템
shell 사용하기
피클s
2022. 8. 29. 15:53
shell 명령어
기본 shell 변경
$ chsh -s /bin/zsh
shell명령의 형식과 인식
$ [명령어] [옵션] [인수] # ex) docker run centos
chsh명령 : 기본 shell을 변경
$ chsh [옵션] [유저명]
명령어 종류
- 별칭 : alias
- 예약어 : do, while, case 등
- 함수 : shell 함수 정의
- 내장 명령 : cd, echo, pwd 등
- 일반 명령 : 실행파일이 존재
* 환경변수 PATH에 설정된 경로중에 실행파일이 존재하면 이름만으로 실행 가능
alias 명령 : 자주 사용되는 명령의 단축명령을 만드는 명령
$ alias k=kubectl
type명령 : 명령이 어떻게 해석되는지 알려주는 명령
$ type cd # cd is a shell builtin
which 명령 : 환경변수 PATH를 토대로 경로를 찾아 출력함
$ which rm
$ whereis rm
man 명령 : 메뉴얼 페이지 표시
명령 히스토리
history 명령 : 이전에 수행했던 명령 행의 목록을 불러옴
$ history 10
$ !! # 직전 명령을 불러옴
$ !행번호 # 히스토리 목록에서 해당 명령 불러옴
자동 완성 : 일부만 입력하고 Tab키를 입력하면 나머지를 자동완성
특수 문자
- 백슬래시 \ : 특수문자의 기능을 제거하는 이스케이프 명령 또는 다음줄로 넘어감
- 틸드 ~ : 사용자의 홈 디렉터리를 의미
- 도트 . : 현재 작업 디렉터리
- 더블도트 .. : 부모 디렉터리
- 파운드 # : 주소
- 달러 $ : 변수의 값을 추출
- 앰퍼샌드 & : 명령을 백그라운드로 실행
- 아스타리스크 * : 파일명에 사용할 때 0개 이상의 임의 문자와 대응
- 물음표 ? : 파일명에서 사용할 때 1개 문자와 대응됨
- 파이프 | : 앞 명령의 출력을 다음 명령의 입력으로 연결시킴
- < 또는 > : 파일로부터 입력받거나 결과를 파일로 출력할 때 사용
- >> : 표준 출력을 파일 끝에 덧붙일 때 사용
- 느낌표 ! : 명령 히스토리 기능을 이용할 때 사용
- 명령치환 `` $() : 명령의 인수로서 다른 명령의 결과를 사용
- 작은 따옴표 ' : 특수문자의 의미를 제거함
$ echo 'Today is $(date)' # -> 'Today is $(date)'
- 큰 따옴표 " : $, ``, \, !를 해석하여 실행함
$ echo "Today is $(date)" # -> Today is Mon Aug 29 06:31:25 UTC 2022
- 수식 : $[수식] 또는 $((수식))
- 변수 : $변수명
shell 변수
모든 변수와 값을 출력하기 위해 set명령을 사용
shell 변수
- 지역변수
- 설정 : 변수=값 (띄어쓰기 불가)
- 불러오기 : echo $변수
- 변수를 환경변수로 변경 : export 변수
환경 변수
- 대문자
- 전역변수
- printenv로 볼 수 있음
- 불러오기 : echo $변수
자주 사용되는 환경 변수
- HISTSIZE : 1개 셸에서 저장되는 명령 히스토리 목록의 최대 개수. 기본값 1000
- HOME : 홈 디렉터리
- MAIL : 사용자의 메일박스
- PATH : 명령 수행할 때 실행파일을 찾기 위한 디렉터리 목록
- PS1 : 쉘 프롬프트 표시하기 위한 문자열
- SHELL : 사용중인 기본 셸
- PWD : 현재 작업 디렉터리
- USER : 현재 사용자 계정
shell이 환경설정파일
- /etc/profile : 모든 사용자에게 적용. 로그인할 때 가장 먼저 수행(환경변수 설정 등)
- ~/.bash_profile : 로그인할 때 수행되며 개별 사용자에게 적용됨
- ~/.bashrc : 쉘을 시작할 때마다 수행되며 개발 사용자에게 적용됨.
- /etc/bashrc : 모든 사용자에게 적용. 쉘을 시작할 때마다 수행(alias, umaskm를 이용한 접근권한의 초기값, 함수 등)
- ~/.bash_logout : 로그아웃할 때 실행되는 스크립트