Oracle 23일차

수업 내용

[연습문제 – 18_test.sh]

유저명을 입력받고 유저가 존재하면 해당 유저 소유의 파일의 수 출력

#!/bin/sh

echo "유저명을 입력하세요 : \c"
read uname

if cat /etc/passwd | grep -w $uname
then
  echo "$uname 유저가 존재합니다"
  echo "$uname 유저 소유 파일의 수 : \c"
  find . -user $uname -type f | wc -l
else
  echo "$uname 유저가 존재하지 않습니다"
  exit 1
fi

exit 0

# 강사님 코드
#!/bin/sh

echo "유저명을 입력하세요 : \c"
read uname

if cat /etc/passwd | grep -w $uname
then
  echo "$uname 유저가 존재합니다"
  echo "$uname 소유의 파일을 찾는 중입니다\c"
  for i in . . .
  do
    echo "$i\c"
    sleep 1
  done
  echo
  find / -user $uname -type f > .imsi 2> /dev/null
  fnum=$(cat .imsi | wc -l)
  echo "$uname 유저 소유 파일의 수 : $fnum"
else
  echo "$uname 유저가 존재하지 않습니다"
  exit 1
fi

exit 0

[리다이렉션]

표준 입력/출력 전환 방법

** 표준 입력 장치 : 키보드
** 표준 출력 장치 : 모니터

> : 덮어쓰기
>> : 이어쓰기
< : 하나의 문자열 전달
<< : 여러 문자열 전달

1> : 정상 출력만 리다이렉션
2> : 비정상 출력만 리다이렉션

[파일/디렉토리 권한]

ls -l의 첫번째 필드로 확인 가능 -> r, w, x로 구성

** 디렉토리 권한 해석
r : ls로 디렉토리 하위 목록 확인 가능
w : 해당 디렉토리에 파일이나 디렉토리를 생성, 삭제 가능
x : cd로 해당 디렉토리로 이동 가능

** 권한 구성(세 그룹으로 구성)
소유자, 소유자와 같은 그룹유저들, 그 외 유저들

[chmod]

권한 변경

** 문법
chmod [옵션] 권한 대상

** 권한 부여 방법
1) 숫자 : 2진법으로 변경 후의 권한을 주면 됨. ex)777, 664, 644
2) 기호 : u,g,o,a/+-=/rwx 로 무슨 권한을 어떻게 변경할 지 주면 됨.

** umask
파일 및 디렉토리 생성 시 기본 설정이 파일은 666, 디렉토리는 777이다.
이 기본 권한을 변경하고자 할 때 제외하고 싶은 권한을 전달하는 것.
ex) umask=0002 -> 002만큼 권한을 뺀다. 따라서 생성되는 파일은 664, 디렉토리는 775가 된다.

[crontab]

작업 예약 파일
crontab에 등록된 시간에 등록된 명령어를 자동 실행

** crontab 등록
crontab -e로 crontab file을 양식에 맞게 수정/등록(최초 실행 시 편집기를 물어본다 -> vim편집기로)

** 형식
분 시간 일 월 요일 명령어

** crontab 목록 확인
crontab -l

** 주의점
실행할 파일에 실행권한(x)이 부여돼있어야 함

[색 표현]

PS1에 정의되어있음

** 문법
“‘ctrl+v+[‘[글자색;배경색;특수기능m”
또는
“\033[글자색;배경색;특수기능m”

[연습문제 – 21_test.sh]

파일명을 입력받고 파일이 존재하는 경우 아래와 같이 출력
파일명 : 1_cut.sh
소유자 : itwill(파란색)
크기 : 192(빨간색)

#!/bin/sh

echo "파일명 입력 : \c"
read fname

if [ -f $fname ]
then
  echo "파일이 존재합니다"
else
  echo "파일이 존재하지 않습니다"
  exit 1
fi

blue="^[[34m"
red="^[[31m"
default="^[[0m"
uname=$(ls -l $fname | cut -d" " -f3)
size=$(ls -l $fname | cut -d" " -f5)

echo "${blue}소유자 : ${uname}"
echo "${red}크기 : ${size}${default}"
exit 0

Leave a Comment