bash 쉘 사용하기 / 메뉴얼 / Bash 쉘 요약 정리
일 하다보니까 쉘 스크립트를 많이 사용하게된다.
그래서 내 블로그에 좀 정리해놓고 필요할때마다 찾아보면 좋을것 같아서 나에게 필요한 실무적인 내용을 정리해본다.
vi *.sh (* 에는 필요한 아무 이름을 입력)
을 입력하고 파일을 만든다.
vi test.sh 라고 파일을 만들었다고치자.
그 다음에는 chmod +x test.sh 또는 chmod 755 test.sh 를 쳐서
test.sh 파일을 실행가능한 파일로 바꾼다.
예약변수를 알아두면 좋다.
서버를 운영하다보면 여러 업체나 개발자들이 PATH를 설정하고 참조하는데
나중에 확인해봐야하는 경우가 생긴다.
예약 변수(Reserved Variable)
HOME | 사용자의 홈 디렉토리 |
PATH | 실행 파일을 찾을 경로 |
LANG | 프로그램 사용시 기본 지원되는 언어 |
PWD | 사용자의 현재 작업중인 디렉토리 |
FUNCNAME | 현재 함수 이름 |
SECONDS | 스크립트가 실행된 초 단위 시간 |
SHLVL | 쉘 레벨(중첩된 깊이를 나타냄) |
SHELL | 로그인해서 사용하는 쉘 |
PPID | 부모 프로세스의 PID |
BASH | BASH 실행 파일 경로 |
BASH_ENV | 스크립트 실행시 BASH 시작 파일을 읽을 위치 변수 |
BASH_VERSION | 설치된 BASH 버전 |
BASH_VERSINFO | BASH_VERSINFO[0] ~BASH_VERSINFO[5] 배열로 상세정보 제공 |
MAIL | 메일 보관 경로 |
MAILCHECK | 메일 확인 시간 |
OSTYPE | 운영체제 종류 |
TERM | 로긴 터미널 타입 |
HOSTNAME | 호스트 이름 |
HOSTTYPE | 시스템 하드웨어 종류 |
MACHTYPE | 머신 종류(HOSTTYPE 과 같은 정보지만 조금더 상세하게 표시됨) |
LOGNAME | 로그인 이름 |
UID | 사용자 UID |
EUID | su 명령에서 사용하는 사용자의 유효 아이디 값(UID 와 EUID 값은 다를 수 있음) |
USER | 사용자의 이름 |
USERNAME | 사용자 이름 |
GROUPS | 사용자 그룹(/etc/passwd 값을 출력) |
HISTFILE | history 파일 경로 |
HISTFILESIZE | history 파일 크기 |
HISTSIZE | history 저장되는 개수 |
HISTCONTROL | 중복되는 명령에 대한 기록 유무 |
DISPLAY | X 디스플레이 이름 |
IFS | 입력 필드 구분자(기본값: - 빈칸) |
VISUAL | VISUAL 편집기 이름 |
EDITOR | 기본 편집기 이름 |
COLUMNS | 현재 터미널이나 윈도우 터미널의 컬럼 수 |
LINES | 터미널의 라인 수 |
LS_COLORS | ls 명령의 색상 관련 옵션 |
PS1 | 기본 프롬프트 변수(기본값: bash\$ ) |
PS2 | 보조 프롬프트 변수(기본값: > ), 명령을 "\"를 사용하여 명령 행을 연장시 사용됨 |
PS3 | 쉘 스크립트에서 select 사용시 프롬프트 변수(기본값: #? ) |
PS4 | 쉘 스크립트 디버깅 모드의 프롬프트 변수(기본값: + ) |
TMOUT | 0 이면 제한이 없으며 time 시간 지정시 지정한 시간 이후 로그아웃 |
위치 매개 변수(Positional Parameters)
$0 | 실행된 스크립트 이름 |
$1 | $1 $2 $3...${10} 인자 순서대로 번호가 부여된다. 10번째부터는 "{}"감싸줘야 함 |
$* | 전체 인자 값 |
$@ | 전체 인자 값($* 동일하지만 쌍따옴표로 변수를 감싸면 다른 결과 나옴) |
$# | 매개 변수의 총 개수 |
특수 매개 변수(Special Parameters)
$$ | 현재 스크립트의 PID |
$? | 최근에 실행된 명령어, 함수, 스크립트 자식의 종료 상태 |
$! | 최근에 실행한 백그라운드(비동기) 명령의 PID |
$- | 현재 옵션 플래그 |
$_ | 지난 명령의 마지막 인자로 설정된 특수 변수 |
논리 연산자(Logical Operators)
문자 | 설명 |
---|---|
&& , -a | 논리 AND |
|| , -o | 논리 OR |
산술 연산자(Arithmetic Operators)
문자 | 설명 |
---|---|
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
++ | 누승(exponentiation) |
% | modulo 나 mod (정수 나누기에서 나머지 값) |
+= | 상수값 만큼 증가(plus-equal) |
-= | 상수값 만큼 감소(minus-equal) |
*= | 상수값을 곱함(times-equal) |
/= | 상수값으로 나눔(slash-equal) |
%= | 상수값으로 나눈 나머지 값(mod-equal) |
비트 연산자(Bitwise Operators)
문자 | 설명 |
---|---|
<< | 비트 왼쪽 쉬프트(쉬프트 한 번당 2를 곱하는 것과 동일함) |
<<= | left-shift-equal |
>> | 비트 오른쪽 쉬프트(쉬프트 한 번당 2로 나눔) |
>>= | right-shift-equal(<<=와 반대) |
& | 비트 and |
&= | 비트 and-equal |
| | 비트 OR |
|= | 비트 OR-equa |
~ | 비트 negate |
! | 비트 NOT |
^ | 비트 XOR |
^= | 비트 XOR-equa |
기타 연산자(Miscellaneous Operators)
문자 | 설명 |
---|---|
, | 콤마 연산자(comma operator), 2개 이상의 산술 연산을 묶어줌 |
정수 비교(Integer Comparison)
문자 | 설명 |
---|---|
-eq | 같음 |
-ne | 같지 않음 |
> , -gt | 더 큼(> 이중 소괄호에서 사용 가능) |
>= , -ge | 더크거나 같음(>= 이중 소괄호에서 사용 가능) |
< , -lt | 더 작음(< 이중 소괄호에서 사용 가능) |
<= , -le | 더 작거나 같음(<= 이중 소괄호에서 사용 가능) |
문자열 비교(String Comparison)
문자 | 설명 |
---|---|
= , == | 같음 |
!= | 같지 않음 |
< | ASCII 알파벳 순서에 더 작음 |
> | ASCII 알파벳 순서에서 더 큼 |
-z | 문자열이 NULL, 길이가 0인 경우 |
-n | 문자열이 NULL이 아님 |
${변수} | 문자열이 NULL이 아님 |
'공부방' 카테고리의 다른 글
솔라리스10에서 환경변수 추가하기 (0) | 2017.05.09 |
---|---|
솔라리스(Solaris) 시스템정보 확인 명령어 (0) | 2017.02.03 |
bash shell 이란 (0) | 2017.01.30 |
윈도우10에서 Bash 쉘 쓰기 (0) | 2017.01.30 |
우리나라에서 내진설계(정보통신설비 내진 중심)란? (0) | 2016.09.13 |
bash shell 이란
In computing, a shebang is the character sequence consisting of the characters number sign and exclamation mark (#!) at the beginning of a script. It is also called sha-bang,[1][2] hashbang,[3][4] pound-bang,[5] or hash-pling.[6]
Under Unix-like operating systems, when a script with a shebang is run as a program, the program loader parses the rest of the script's initial line as an interpreter directive; the specified interpreter program is run instead, passing to it as an argument the path that was initially used when attempting to run the script.[7] For example, if a script is named with the path path/to/script, and it starts with the following line:
#!/bin/sh
then the program loader is instructed to run the program /bin/sh instead, passing path/to/script as the first argument.
#!를 shebang(샤방) 라인이라고 부른다.
*.sh 스크립트에 처음
#!/bin/bash
#!/usr/bin/env bash 등으로 사용하는데
이렇게 쓰면 /bin/sh를 로드하지 않고 대신 #!에 지정한 쉘을 interpreter directive(인터프리터 지시자)로 구분한다.
(https://en.wikipedia.org/wiki/Shebang_(Unix) - 발취)
========================================
bash 는 Bourne Again Shell 의 약자입니다. 가장 현대적이고 강력한* 셀입니다. Steven Bourne 이라는 사람이 만든 Bourne Shell (약칭: sh) 을, 개량한 것이 bash 이에요
* Korn shell 이라는 강력한 셀도 있지만, bash 와 달리 100% 무료는 아닙니다.
발표된 순으로 셀의 종류를 나열하자면 다음과 같습니다:
Bourne shell (sh) - 1979년에 발표
C shell (csh)
Korn shell (ksh)
Bourne Again shell (bash) - 1988에 처음 발표
(http://mwultong.blogspot.com/2006/07/shell-bash-shell.html - 발최)
========================================
리눅스에서 쓸 수 있는 모든 쉘들처럼, BASH(Bourne Again Shell)은 뛰어난 명령 라인 쉘이면서, 그 자체로도 하나의 스크립팅 언어이다. 당신은 쉘 스크립팅을 이용해서 쉘이 가진 능력을 충분히 활용할 수 있으며, 쉘 스크립팅이 아니었으면 수많은 명령을 필요로 했을 많은 일들을 자동적으로 처리할 수도 있다. 당신의 리눅스 박스에 놓여 있는 많은 프로그램들은 쉘 스크립트들이다. 만일 쉘 스크립트가 어떻게 작동하는지 배우고 싶거나 당신이 가지고 있는 쉘 스크립트를 수정하고 싶다면, bash 문법을 이해하는 것은 필수적이다. 게다가, bash 언어를 이해하면 정확히 당신이 원하는 방식으로 일을 하는 당신 자신의 프로그램을 작성할 수 있다.
========================================
- Shell의 종류
bash ( Bourne-Again Shell )
프롬프트 : #
실행파일은 /bin/bash
Bourne again shell은 최초로 개발된 쉘인 Bourne shell의 변종이라 할 수 있습니다.
리눅스에서 가장 많이 사용되는 IEEE POSIX 호환이며 Borune shell과 호환되는 쉘로서
GNU 프로젝트에 의해 만들어지고 배포되고 있습니다. 명령행 편집 기능을 제공합니다
sh ( Bourne Shell )
프롬프트 : $
본 쉘 보다는 개발된 C쉘이나 콘 쉘과 기능적인 면을 비교해 보면 본 쉘에 미흡한 점이 있다. 그 중 가장 큰 단점은 상호 대화형(Interactive)
방식을 취하고 있지 않다는 점이다. 이러한 상호 대화형 방식을 사용하고자 한다면 쉘을 바꿔서 작업하는 것이 좋을 것이다.
- Steven Bourne의 Bourne Shell, sh
- 쉘 명령 대본을 작성하는데 이용되는 쉘
- 강력한 명령 프로그래밍 언어 기능을 갖는 쉘
- 가장 오래 동안 모든 유닉스 시스템의 표준 구성 요소
csh ( C 프로그램 스타일의 Shell )
프롬프트 : %
버클리 캘리포니아 대학에서 개발된 프로그래머들에게 적합한 shell입니다. ( csh는 C쉘이며 sh는 본 쉘이다 )
대화형 사용법에서는 Bourne shell과 대부분 호환되지만 전혀 다른 프로그래밍 인터페이스를 가지고 있고, 히스토리 대체라는 복잡한
기능으로 대신하고 있지만 명령행 편집 기능은 제공하지 않습니다.
- Bill Joy의 C Shell, csh
- C언어와 유사한 언어를 사용
- 상호 대화형 방식으로 구성
ksh ( Korn Shell )
프롬프트 : $
일반적으로 유닉스에서 가장 많이 사용되고 있는 shell이며 Bourne shell에 처음으로 현대적
인 shell 기능(C shell로부터 차용한 것이다.)을 도입한 shell 입니다. Bourne shell과 호환
되고, 명령행 편집 기능을 제공합니다.
zsh
프롬프트 : %
Korn Shell과 매우 유사한 셸이지만 Korn Shell보다 더 많고 유용한 기능 등을 추가하여 개선시킨 것이다.
tc Shell
프롬프트 : >
코넬 대학에서 C Shell 수정본에 Korn Shell의 기능을 포함하여 개발된 셸이다. 95%의 C Shell과 5%의 새로운 기능이 추가되어 만들어졌다.
(http://unabated.tistory.com/entry/LinuxUnix%EC%89%98-Shell-%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%EC%A2%85%EB%A5%98 - 발최)
'공부방' 카테고리의 다른 글
솔라리스(Solaris) 시스템정보 확인 명령어 (0) | 2017.02.03 |
---|---|
bash 쉘 사용하기 / 메뉴얼 / Bash 쉘 요약 정리 (0) | 2017.01.30 |
윈도우10에서 Bash 쉘 쓰기 (0) | 2017.01.30 |
우리나라에서 내진설계(정보통신설비 내진 중심)란? (0) | 2016.09.13 |
ActiveX 제거하기 그리고 HTML5 (0) | 2016.09.13 |