Skip to content
- 시작 파일(start-up file)
- /etc/profile : 전체 사용자에게 적용되는 환경 설정, 시작 프로그램 지정
- /etc/bashrc : 전체 사용자에게 적용되는 별명과 함수들을 정의
- ~/.bash_profile : 각 사용자를 위한 환경을 설정, 시작 프로그램 지정
- ~/.bashrc : 각 사용자를 위한 별명과 함수들을 정의
- .bash_profile 예
|
# .bash_profile if [ -f ~/.bashrc ] then . ~/.bashrc fi PATH=$PATH:$HOME/bin BASH_ENV=$HOME/.bashrc USERNAME="root" export USERNAME BASH_ENV PATH |
- .bashrc 예
|
# .bashrc # 사용자의 별명 설정 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias ll='ls -al --color=yes' # 시스템 시작 파일 실행 if [ -f /etc/bashrc ] then . /etc/bashrc fi |
- alias : 별명
- alias 별명=명령어 : 명령어가 나타내는 기존 명령에 대해 새로운 이름을 별명으로 정의
|
$ alias dir=‘ls –aF’ $ dir $ alias h=history $ alias ll=‘ls –l’ |
- alias : 현재까지 정의된 별명들을 확인
|
$ alias alias dir=‘ls –aF’ alias h=history alias ll=‘ls –l’ |
- unalias 별명 : 이미 정의된 별명 해제
- history : 히스토리
- HISTSIZE=1000 : 기억할 히스토리의 크기 지정
- HISTFIESIZE=2000 : 로그아웃 후에도 히스토리가 저장될 크기 설정
- 재실행
- !! : 바로 전 명령 재실행
- !n : 이벤트 번호가 n인 명령 재실행
- !문자열 : 문자열로 시작하는 최후 명령 재실행
- !?문자열 : 문자열을 포함하는 최후 명령 재실행
- 변수 : 하나의 값(문자열)만을 저장할 수 있는 변수
|
$ 변수이름=문자열 $ city=seoul $ echo $city # 변수의 값 사용 seoul $ city=pusan # 변수에 어느 때나 필요하면 다른 값을 대입 $ country=korea city=seoul # 한 번에 여러 개의 변수를 생성 $ country=대한민국 city=서울 $ echo $country $city 대한민국 서울 $ address="서울시 용산구" # 따옴표를 이용하여 여러 단어로 구성된 문자열 저장 가능 |
- 리스트 변수 : 한 변수에 여러 개의 값(문자열)을 저장할 수 있는 변수
|
$ 이름=( 문자열리스트 ) $ cities=(서울 부산 목포) $ echo ${cities[*]} 서울 부산 목포 $ echo ${cities[1]} 부산 $ echo ${#cities[*]} # 리스트 크기 3 $ echo ${cities[3]} $ cities[3]=제주 $ echo ${cities[3]} 제주 |
- read : 표준 입력 / 읽기,
- 표준입력에서 한 줄을 읽어서 단어들을 변수들에 순서대로 저장
- 마지막 변수에 남은 단어들 모두 저장
-
|
$ read 변수1 ... 변수n $ read x y Merry Christmas ! $ echo $x Merry $ echo $y Christmas ! 변수를 하나만 사용 $ read x Merry Christmas ! $ echo $x Merry Christmas ! |
- 환경변수와 지역변수
- 환경변수와 지역변수 두 종류로 나눌 수 있다.
- 환경 변수는 값이 자식 프로세스에게 상속되며 지역변수는 그렇지 않다.
-
|
$ country=대한민국 city=서울 $ export country # country를 환경변수로 등록 $ echo $country $city 대한민국 서울 $ bash # 자식 쉘 시작 $ echo $country $city 대한민국 $ ^D # 자식 쉘 끝 $ echo $country $city 대한민국 서울 |
- 사전 정의 환경변수
|
$USER : 사용자 이름 $TERM : 터미널 타입 $PATH : 명령어를 검색할 디렉터리들의 리스트 $HOME : 홈 디렉터리 $SHELL : 로그인 쉘의 경로명 $MAIL : 메일 박스의 경로명 $HOSTNAME : 호스트 이름 |
- 사전 정의 지역변수
|
$$ : 쉘의 프로세스 번호 $0 : 쉘 스크립트 이름 $1 ~ $9 : 명령줄 인수 $* : 모든 명령줄 인수 리스트 $# : 명령줄 인수의 개수 |
- Bash 쉘 스크립트 작성
- state.bash 작성
|
#!/bin/bash # state.bash echo -n 현재 시간: date echo 현재 사용자: who echo 시스템 현재 상황: uptime |
- chmod u+x state.bash
- ./state.bash or nohup ./state.bash &
- 문법
- if
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
if [ $# -ne 1 ] then echo 사용법: $0 파일 exit 1 fi if [ $# -eq 0 ] then dir="." else dir=$1 fi echo -n '점수 입력: ' read score if (( $score >= 90 )) then echo A elif (( $score >= 80 )) then echo B elif (( $score >= 70 )) then echo C else echo 노력 요함 fi |
- 비교 연산자
|
정수1 -eq 정수2 : 두 정수가 같으면 참 아니면 거짓 정수1 -ne 정수2 : 두 정수가 다르면 참 아니면 거짓 정수1 -gt 정수2 : 정수1이 정수2보다 크면 참 아니면 거짓 정수1 -ge 정수2 : 정수1이 정수2보다 크거나 같으면 참 아니면 거짓 정수1 -lt 정수2 : 정수1이 정수2보다 작으면 참 아니면 거짓 정수1 -le 정수2 : 정수1이 정수2보다 작거나 같으면 참 아니면 거짓 |
- 문자열 비교 연산자
|
문자열1 == 문자열2 : 두 문자열이 같으면 참 아니면 거짓 문자열1 != 문자열2 : 두 문자열이 다르면 참 아니면 거짓 -n 문자열 : 문자열이 null이 아니면 참 -z 문자열 : 문자열이 null이면 참 |
|
#!/bin/bash # 사용법: reply.bash # 계속 여부를 입력받아 프린트한다. echo -n "계속 하겠습니까 ?" read reply if [ $reply == "예" ] then echo 예 elif [ $reply == "아니오" ] then echo 아니오 fi |
- 파일 관련 연산자
|
-a 파일 : 해당 파일이 존재하면 참 -e 파일 : 해당 파일이 존재하면 참 -r 파일 : 사용자가 해당 파일을 읽을 수 있으면 참 -w 파일 : 사용자가 해당 파일을 쓸 수 있으면 참 -x 파일 : 사용자가 해당 파일을 실행할 수 있으면 참 -O 파일 : 사용자가 해당 파일의 소유자이면 참 -z 일 : 해당 파일의 크기가 0이면 참 -f 파일 : 해당 파일이 일반 파일이면 참 -d 파일 : 해당 파일이 디렉터리이면 참 |
|
if [ -e $file ] then # $file이 존재하면 wc $file else # $file이 존재하지 않으면 echo "오류 ! 파일 없음“ fi if [ -d $dir ] then echo -n $dir 내의 파일과 서브디렉터리 개수: ls $dir | wc -l else echo $dir\: 디렉터리 아님 fi |
- 부울 연산자
|
! : 부정(negation) && : 논리곱(logical and) || : 논리합(logical or) |
|
# $file이 일반 파일이고 쓸수 있으면 if [ -f $file ] && [ -w $file ] then uptime > $file fi if [ ! -e $file ] then # $file이 존재하지 않으면 echo $file : 파일 없음 fi if [ ! -d $file ] then # $dir이 디렉터리가 아니면 echo $file : 디렉터리 아님 fi |
- let을 이용한 산술 연산
|
$ let 변수=수식 $ let a=2*3 $ echo $a 6 $ let a=$a+2 $ echo $a 8 $ let a*=10 $ let b++ |
- 산술 연산자
|
- : 단일항 음수 ! : 논리 부정 * / % : 곱셈, 나눗셈, 나머지 + - : 덧셈, 뺄셈 << >> : 비트 좌이동, 비트 우이동 <= >= < > : 관계 연산 == != : 동등, 비동등 || && : 논리합, 논리곱 & ^ | : 비트 and, 비트 xor, 비트 or |
- 스위치
|
#!/bin/bash # 사용법: score2.bash # 점수에 따라 학점을 결정하여 프린트한다. echo -n '점수 입력: ' read score let grade=$score/10 case $grade in "10" | "9") echo A;; "8") echo B;; "7") echo C;; *) echo 노력 요함;; esac |
- for 반복문
|
#!/bin/bash # 사용법: invite.bash # 저녁 초대 메일을 보낸다. invitee=(lee kim choi) for person in ${invitee[*]} do echo "초대의 글 : 오늘 저녁 식사 모임에 초대합니다." | \ mail "${person}@gmail.com" done |
- while 반복문
|
#!/bin/bash # 사용법: power.bash # 2의 1승부터 10승까지 프린트 let i=2 let j=1 while (( $j <= 10 )) do echo '2 ^' $j = $i let i*=2 let j++ done |
- 함수 정의
|
#!/bin/bash # 사용법: lshead.bash lshead() { echo "함수 시작, 매개변수 $1" date echo "디렉터리 $1 내의 처음 3개 파일만 리스트" ls -l $1 | head -4 } echo "안녕하세요" lshead /tmp exit 0 |
error: Content is protected !!