수업 내용
[연습문제 – 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