Oracle 27일차

어제 문제

연습문제 – NOV1118.sh

디렉토리명을 입력하면 하위 파일 목록이 번호와 함께 출력.
번호를 입력받아 해당 번호에 해당하는 파일 정보 확인(ls -l 결과 출력)

# NOV1118.sh
#!/bin/sh

echo -n "디렉토리명 입력 : "
read dname

if [ -d $dname ]
then
  echo "$dname 디렉토리가 존재합니다"
else
  echo "$dname 디렉토리가 존재하지 않습니다"
  exit 1
fi

ls -1 $dname | cat -n

echo -n "자세히 보고 싶은 파일의 번호를 입력하세요 : "
read num

fname=$(ls -1 $dname | sed -n "${num}p")
ls -l $dname/$fname

exit 0

수업 내용

[chown]

소유자 변경하기

** 문법
chown [옵션] 소유자:그룹명 대상

** 옵션
-R : 하위 디렉토리까지 모두 변경

[awk]

자료처리에 필요한 명령어

** 문법
awk [옵션] ‘[/검색어] {명령어}’ 파일

  1. 산술 연산
    echo | awk ‘{print 1 + 2}’
    -> 3
  2. grep
    awk /itwill/ /etc/passwd
    -> itwill:x:1000:1000:itwill:/home/itwill:/bin/bash
  3. cut
    awk -F: ‘{print $1}’ /etc/passwd
    -> : 으로 분리된 첫번째 필드 출력
    awk -F: ‘{print $NF}’ /etc/passwd
    -> : 으로 분리된 마지막 필드 출력
    awk -F: ‘/itwill/ {print $NF}’ /etc/passwd
    -> itwill이 포함된 라인에서, : 으로 분리된 마지막 필드 출력
    awk -F: ‘/itwill/ {print $(NF-1)}’ /etc/passwd
    -> itwill이 포함된 라인에서, : 으로 분리된 마지막 필드 하나 이전 필드 출력
    awk -F: ‘/itwill/ {print $1″—“$7}’ /etc/passwd
    -> itwill—/bin/bash # 1번필드와 7번필드 사이 구분자를 내 맘대로 지정할 수 있다
    grep itwill /etc/passwd | cut -d: -f1,7
    -> itwill:/bin/bash # :이 같이 나왔다.

    ** sed나 awk에 변수 전달 시 변수로 인식시키는 방법 = 변수 옆을 single quote로 끊어주기
    awk -F: ‘/’$username’/ {print $1}’ /etc/passwd

[연습문제 – 35.awk.sh]

유저명을 입력받고, 유저가 존재하면 아래와 같이 출력
유저명 : itwill 홈디렉토리 : /home/itwill 로긴쉘 : /bin/bash

# 35_awk.sh
#!/bin/sh

echo -n "유저명을 입력하세요 : "
read uname
check=$(awk -F: '/'$uname'/ {print $1}' /etc/passwd)

if [ "$uname" = "$check" ]
then
  echo "유저가 존재합니다"
else
  echo "유저가 존재하지 않습니다"
  exit 1
fi

homeD=$(awk -F: '/'$uname'/ {print $6}' /etc/passwd)
loginS=$(awk -F: '/'$uname'/ {print $7}' /etc/passwd)

echo -n "유저명 : $uname"
echo -n "\t홈디렉토리 : $homeD"
echo "\t로긴쉘 : $loginS"

# 강사님 방법
awk -F: '/'^$uname'/ {print "유저명:"$1 "  홈디렉토리:"$6 "  로긴쉘:"$NF}' /etc/passwd

exit 0

[반복제어문]

반복문(for, while)의 흐름 제어

  1. continue : continue 뒤의 명령어를 실행하지 않고 반복문 첫 줄로 이동하여 다음 반복 수행
  2. break : break를 포함한 반복문만 중지
  3. exit : 프로그램 강제 종료(종료코드와 함께 전달)
#36_break.sh
#!/bin/sh

while [ 1 ]
do
  echo -n "패스워드를 입력하세요 : "
  read passwd

  if [ $passwd = "1234" ]
  then
    echo "패스워드 인증 성공"
    break
  else
    echo "패스워드가 틀렸습니다"
  fi
done

exit 0
# 37_continue.sh
#!/bin/sh

# 1~10 출력, 5는 제외

for i in $(seq 1 10)
do
  if [ $i -eq 5 ]
  then
    continue
  fi
  echo $i
done

echo "프로그램 종료"
exit 0

오라클리눅스(OEL) 7.9.0 다운

맨 위에 4.5GB 짜리만 받기

오라클 DB 12c R2 다운

맨 위에거만 linux x86 버전으로

Leave a Comment