wkf원문 : http://cafe.naver.com/seokiya.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=126
카페라서 가입을 해야하는군요.
1. /etc/profile - 콘 쉘이 로그인 쉘로 지정된 모든 사용자가 로그인할 때마다 이 파일을 읽는다.
2. $HOME/.profile - 콘 쉘이 로그인 쉘로 지정된 사용자가 로그인할 때마다 홈 디렉토리에 파일이 있으면 읽는다.
3. $HOME/.kshrc - 콘 쉘이 로그인 쉘로 지정된 사용자가 로그인할 때마다 $HOME/.profile파일에서 따로 설정이
되어 있으면 추가로 읽는 파일이다.
#쉘 스크립트
- 쉘에 의해 실행되는 명령을 포함한 텍스트 파일
- 쉘 스크립트의 첫 라인은 어느 쉘이 실행하는지 표기한다
#!/bin/sh
#쉘 구문
- 단일 따옴표(')
- 쉘에서 제공하는 가장 제한된 형태의 인용법. 단일 따옴표로 둘러싸인 텍스트는 쉘에 의해 무시된다.
- 이중 따옴표(")
- 이중 따옴표로 둘러싸인 텍스트는 쉘에서 인용된 텍스트 내 대부분의 특수 문자를 무시한다.
- 변수를 참조할 때는 보통 큰 따옴표(" ")로 묶어 주는게 좋습니다
- 역 따옴표(`)를 이용한 명령 치환
- 제어 흐름문
- if 문
- if 문은 항상 fi 문으로 종료한다.
#특수 문자
- #
- 주석
- `
- 명령어 치환
-`명령어`라고 하면 명령어의 결과를 변수값으로 설정할 수 있음.
-다른말로 backticks나 역쿼우트(backquote)라고도 함.
- $
- 변수 치환(변수의 값을 참조하는 것)
- |
- 파이프. 여러 명령어들을 연결하는 방법으로써, 한 명령어의 출력을 다음 명령어나 쉘에게 전달.
- &
- 작업을 백그라운드로 돌리기. 명령어 뒤에 &를 붙여 주면 백그라운드로 실행됩니다.
- {}
- 코드 블럭. [중괄호] "인라인 그룹"이라고도 부르는 중괄호 한 쌍은 실제로 익명의 함수를 만들어 냅니다만
보통의 함수와는 달리 코드 블럭 안의 변수들을 스크립트의 다른 곳에서 볼 수가 있다.
- 중괄호로 묶인 코드 블럭은 I/O 재지향되거나 재지향을 받을 수 있다.
$0 - 쉘 스크립트의 이름
$1 - $9 - 첫 번째 아규먼트,두 번째 아규먼트, ... , 아홉번 째 아규먼트
${10} - ${n} - 열 번째 아규먼트, 열한 번째 아규먼트, ... ,n번째 아규먼트
$# - 아규먼트의 개수
$@ - 쉘 스크립트에 입력된 모든 아규먼트
$* - 쉘 스크립트에 입력된 모든 아규먼트
조건문
본쉘 콘쉘 의미
[-r file_name] [[-r file_name]] file_name의 내용을 읽을 수 있는지 검사
[-w file_name] [[-w file_name]] file_name의 내용을 변경할 수 있는지 검사
[-x file_name] [[-x file_name]] file_name을 실행할 수 있는지 검사
불가능 [[-O file_name]] file_name의 소유주가 스크립트를 실행하는 사람인지 검사(Owner)
불가능 [[-G file_name]] file_name의 그룹 소유주가 스크립트를 실행하는 사람이 속한 그룹인지 검사
[-f file_name] [[-f file_name]] file_name이 일반적인 파일인지 검사
[-d file_name] [[-d file_name]] file_name이 디렉토리인지 검사
[-c file_name] [[-c file_name]] file_name이 캐릭터 디바이스 파일인지 검사
[-b file_name] [[-b file_name]] file_name이 블록 디바이스 파일인지 검사
불가능 [[-L file_name]] file_name이 심볼릭 링크인지 검사
[-s file_name] [[-s file_name]] file_name의 크기가 0보다 큰 값인지 검사
불가능 [[-e file_name]] file_name이 존재하는지 검사(Exist)
본쉘 콘쉘 의미
[$num1 -eq $num2] ((num1 == num2)) num1과 num2가 같은 값인지 검사(equal)
[$num1 -ne $num2] ((num1 != num2)) num1과 num2가 다른 값인지 검사(not equal)
[$num1 -lt $num2] ((num1 < num2)) num1이 num2보다 작은 값인지 검사(Less than)
[$num1 -gt $num2] ((num1 > num2)) num1이 num2보다 큰 값인지 검사(greater than)
[$num1 -le $num2] ((num1 <= num2)) num1이 num2보다 작거나 같은 값인지 검사(less than or equal)
[$num1 -ge $num2] ((num1 >= num2)) num1이 num2보다 크거나 같은 값인지 검사(greater than or equal)
본쉘 콘쉘 의미
[str1 = str2] [[str1 == str2]] str1과 str2가 같은 값인지 검사
[str1 != str2] [[str1 != str2]] str1과 str2가 다른 값인지 검사
불가능 [[str1 == pattern]] str1이 pattern으로 표현할 수 있는지 검사
불가능 [[str1 != pattern]] str1이 pattern으로 표현할수 없는지 검사
[str1 < str2] [[str1 < str2]] str1과 str2를 사전 순으로 비교하여 str1이 앞서 있는지 검사
[str1 > str2] [[str1 > str2]] str1과 str2를 사전 순으로 비교하여 str2가 앞서 있는지 검사
[-z str2] [[-z str2]] str1의 길이가 0인지 검사
[-n str2] [[-n str2]] str1의 길이가 1이상인지 검사
본쉘 콘쉘 의미
-o || 양쪽 조건 중 어느 하나만 만족하면 모든 조건이 만족
-a && 양쪽 조건 모두 다를 만족하면 모든 조건이 만족
! 조건이 결과 값을 반대로 바꿈
if문 - 조건의 진리 값이 참인 경우와 거짓인 경우로 나누어서 어느 부분을 선택하여 실행할 것인지를 결정
if 조건문 if 조건문 if 조건문
then then then
명령어들 -> 명령어 -> 명령어
fi else elif 조건문
명령어 then
fi 명령어
else
명령어
fi
Case문 : if문의 또다른 형태
case value in
pattern1|pattern2)
명령어
;;
pattern3|pattern4)
명령어
;;
pattern5|pattern6)
명령어
;;
*)
명령어
;;
esac
for문 : 미리 정해진 횟수를 반복할 때 사용
for var in list_of_value
do
명령어
done
while문 : 조건을 만족하는 동안 반복하는데 사용
while 조건문
do
명령어
done
until문 : 조건이 만족되지 않은 동안에만 반복한다.
until 조건문
do
명령어들
done
select문 : 메뉴를 만들고 사용자가 메뉴에서 선택한 값에 따라서 명령어를 실행할 때 사용
select var in list_of_value
do
명령어들
done
[출처] 쉘 스크립트(기본적인 것들) (여러가지 정보가 있는 방) |작성자 서기야
'컴퓨터 활용 > 리눅스 활용' 카테고리의 다른 글
[Makefile] Makefile 작성하기 (옵션) (0) | 2011.10.31 |
---|---|
실무 예제로 배우는 UNIX 쉘 프로그래밍-정보문화사 (0) | 2011.10.26 |
[쉘 스크립트] 파일 이름, 경로, 확장자 구하기 (0) | 2011.10.26 |
[쉘 스크립트] TEST 명령어 (0) | 2011.10.26 |
[쉘 스크립트] 디렉토리 및 파일 개수 구하기 (0) | 2011.10.26 |
vi 설정 적용 (0) | 2011.10.03 |
[리눅스] vi 명령어 (1) | 2011.09.25 |
[VMWare] Fedora 14 on VMware – How to Install VMware Tools on Fedora 14 (0) | 2011.09.25 |
[쉘 스크립트] dd 명령어 (1) | 2011.09.22 |
[쉘 스크립트] grep 명령어 사용법 (0) | 2011.08.25 |