- 사용 가능한 shell list 확인하기
$ cat /etc/shells
- 현재 작업 shell 확인
$ echo $SHELL
- 로그인 shell 변경
$ cat /etc/passwd
$ chsh
Password:
Changing the login shell for byunghun
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]: 바꿀 shell 넣기 ex) /bin/sh
- Shell의 변수
데이터를 넣는 그릇
선언할 필요없이 사용가능
변수명 : 문자, 숫자, _(언더바)로 구성될 수 있지만, 시작은 반드시 문자나 _로 시작
- 변수 선언 : varname=value
$ fname=byung(ex)
$ lname=hyun
$ score=94
- 변수 확인 : echo, set
$ echo $fname or lname or score
출력 : byung or hyun or 94
$set (상당히 많은 변수들이 나오므로 grep명령어와 함께 사용 / 변수만 보여줘)
$set | grep 찾을 내용
- 변수 제거 : unset varname
$ unset fname
- Shell 환경변수
동작 되는 프로그램에게 영향을 주는 변수
- 환경 변수 선언 : export varName=value
$ export NAME=hyun
$ echo $NAME
- 시스템에 적용된 환경 변수 확인 : env
$ env ( grep /환경 변수만 보여줘
- 기억해야할 환경변수
PATH : 명령어 탐색 경로
HOME : 홈디렉토리의 경로. cd 명령 실행시 적용
USER : 로그인 사용자 이름
SHELL : 로그인 shell의 이름
- Metacharacters
Shell에서 의미를 정해놓은 문자들
\ ? () $ .. * % {} [] 등
Quoting Rul : 메타문자의 의미를 제거하고 단순 문자로 변경
- Backslash(\) : \바로 뒤의 메타 문자는 특별한 의미를 제거
- Double Quotes("") : ""내의 모든 메타문자의 의미를 제거, 단 $, ``은 제외
- Single Quotes('') : ''내의 모든 메타문자의 의미를 제거
Command 치환
명령어의 실행 결과를 치환하여 명령을 실행
Nesting Cmd
- $(Cmd)
- `Cmd`
ex)
$ echo "Today is $(data)"
$ echo "Today is `data`"
- alias : Shell의 명령에 새로운 이름을 부여 / 명령들을 조합하여 새로운 이름의 명령을 생성
관리 명령
alias 등록 : alias name='cmd'
alias 확인 : alias or alias name
alias 삭제 : unalias name
* vi .bashrc에 들어가서 alias명령어 저장할 수 있음
Shell의 Prompt란?
PS1 변수를 이용해 shell의 기본 프롬프트 모양을 설정
Bash shell에서만 Prompt 모양에 적용 가능한 특수 문자가 존재
\h : 호스트이름
\u : 사용자이름
\w : 작업 디렉토리 -절대경로
\W : 작업 디렉토리 - 상대경로
\d : 오늘 날짜
\t : 현재 시간
\$ : $또는 #프롬프트 모양
Communication Channels
- Redirection
STDIN 0< 0<< 입력을 키보드가 아닌 파일을 통해 받음
STOUT 1> 1>> 표준 출력을 터미널이 아닌 파일로 출력
STDERR 2> 2>> 표준 에러 출력을 터미널이 아닌 파일로 출력
ex)
$ mailx -s "제목" 보낼유저의 메일주소 0< ***.txt
ex)
$ data 1> data.out # 기존에 data.out 파일이 없으므로 파일을 생성하고 내용을 저장함
$ data >> data.out # 기존 내용에 overwrite함
- Pipeline
명령의 실행결과를 다음 명령의 입력으로 전달
리눅스의 명령어를 조합하여 사용
기호 : command1 | command2 | command3
- Shell Script
Linux cmd들을 모아 놓은 ASCII text파일
실행 퍼미션을 할당해야 실행 가능
#!/bin/bash 셔뱅.해시뱅. 스크립트를 실행할 sub shell이름
Shell 구문은 기본 top-down 방식으로 해석해서 실행됨
Sub Shell
$ ls /bin/bash
$ pwd // /home/user
$ /bin/bash
////////////////
$ cd /
$ pwd
$ exit
////////////////
$ pwd // /home/user
쉘 안에서 cd를 해도, 나오면 기존의 주소에 머물러 있음
- 위치 매개변수 (Positional Parameters)
입력하는 Argument들은 $0, $1, $2와 같은 변수에 저장되어 script에 전달
name of shell script : $0
first argument : $1
second argument : $2
Number of arguments in $#
List of all parameters in $@, $*
- Special shell variables
로그인 shell의 PID : $$
현재 작업 디렉토리 : $PWD
부모 프로세스 ID : $PPID