반응형

Linux의 Shell 사용법

* Shell : 사용자와 컴퓨터 하드웨어 또는 운영체제 간 인터페이스, bash라는 이름의 Bourne-Again Shell이 리눅스에서 기본적으로 사용된다.(사용하는 Shell의 종류에 따라 문법이 조금씩 달라질 수 있다.)

 

*쉘에서 파일 실행 시 ./를 앞에 반드시 붙여야 하는데, 이는 현재 디렉토리가 일반적으로 기본 path에 설정되어 있지 않기 때문이다. 

 

 

 

* 쉘 스크립트


서버작업 자동화 및 운영(DevOps)를 위해 기본적인 쉘 문법을 익힐 필요가 있다.
파일의 가장 위의 첫 라인은 #!/bin/bash 로 시작하며, 일반적으로 [파일이름.sh]로 저장한다. 

1) 주석 : #

 

2) 변수선언
변수명=데이터 (띄어쓰기를 쓰지 말아야 한다.)

 

3) 출력
echo $변수이름

 

4) 리스트 변수
daemons=("httpd" "mysqld" "vsftpd")

echo ${daemons[1]} → 배열의 두번째 인덱스 출력
echo $daemons[@]} → 배열의 모든 데이터 출력
echo ${daemons[*]} → 배열의 모든 데이터 출력
echo ${#daemons[@]} → 배열의 크기 출력

filelist = ( $(ls) ) → 배열의 ls 실행 결과를 배열로 받음
echo ${filelist[*]} → 배열의 모든 데이터 출력

5) 사전에 정의된 지역변수

$$ : 쉘의 프로세스 번호
$0 : 쉘스크립트 이름
$1 ~ $9 : 명령줄 인수(명령줄로 전달받는 인자)
$* : 모든 명령줄 인수리스트
$# : 인수의 개수
$? : 최근 실행한 명령어의 종료값
 - 0(성공), 나머지 에러

6) 연산자
expr : 숫자 계산
expr을 사용하는 경우 모두 띄어쓰기를 해야 하며 따옴표는 `를 사용해야 한다. 
연산자 *와 괄호() 앞에는 역슬래시()와 같이 사용

ex) num='expr \( 3 \* 5 \) / 4 + 7`

7) 조건문

*if문
if [ 조건 ]
then
명령문
else
명령문
fi


*for 문 
for 변수 in 변수값1 변수값2 ... 
do 
명령문 
done 

*while 문 

while [ 조건문 ] 
do 
명령문 
done 


*조건
-z 문자 : 문자가 null이면 참
-n 문자 : 문자가 null이 아니면 참
값1 -eq 값2 : 값이 같음
값1 -ne 값2 : 값이 같지 않음
값1 -lt 값2 : 1이 2보다 작음
값1 -le 값2 : 1이 2보다 작거나 같음
값1 -gt 값2
값1 -ge 값2

*파일 검사
 -e 파일명 : 파일이 존재하면 참
-d 파일명 : 파일이 디렉토리면 참
이것 등등 참고하기

* 논리연산
똑같음 &&, ||, !, true, false

 

* 기타
*tar : 일반 shell 명령어, 묶고 압축 
option :
1) x - 묶음 해제
2) c 파일 묶음
z : gunzip을 사용
f : 파일 이름을 지정
tar -cvzf 압축파일이름 압축파일명
tar -xvzf 압축 해제할 압축 아카이브 이름

*find : 검색
ex) find . -type -f -name '파일명검색어 -exec bash -c "명령어1; 명령어2;" \;
ex) find . -type f -name '*log.?' -mtime +GZIPDAY -exec bash -c "gzip {}" \;
파일명 검색한 다음 명령어를 실행해라. 

반응형

+ Recent posts