mycount 라는 utility를 shell script를 사용하여 작성하라.
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

mycount 라는 utility를 shell script를 사용하여 작성하라.에 대한 보고서 자료입니다.

목차

1. 개요

2. 전체구조

3. 모듈별 설명

4. 분석 및 토론

본문내용

변수와 동일한 디렉토리의 ls -al 한 결과를 파이프 라인을 이용하여 awk로 두 //번째 변수들이 2 이고(서브디렉토리) 다섯 번째 변수가 size변수값 이상인 값의 9번째 변//수들을 출력한 값의 줄 수를 wc -l을 이용해서 센다.
echo "File count" // file count 문자열을 출력한다
ls -al $directory | awk '{if($2==1 && $5>size) print $9}'| wc -l
//directory 변수와 동일한 디렉토리의 ls -al 한 결과를 파이프 라인을 이용하여 awk로 두 //번째 변수들이 1 이고(일반파일) 다섯 번째 변수가 size변수값 이상인 값의 9번째 변수들//을 출력한 값의 줄 수를 wc -l을 이용해서 센다.
if(!(-e $filename)) then //filename 변수의 이름과 동일한 이름을 갖는 파일이 있는지
//확인해본 후 없다면
'touch' $directory/$filename // directory 변수값과 동일한 폴더 아래에 filename 변수값과
//동일하며 아무런 내용은 없는 파일을 생성한다.
else // 같은이름의 파일이 존재한다면 this file is existence 라는
echo "this file is existence" // 메시지를 출력한다.
endif
echo "Do you want retry(y/n)?" // 사용자로부터 한번 더 이 프로그램을 실행시킬지를
// 물어봄
set try = $< // 사용자로부터 try 변수에 입력 받음
set directory =() // directory 변수와 size 변수 그리고 filename 변수를
set size=0 // 초기화 시킴
set filename = ()
if ($try == "n") break // try 변수 값이 n 이면 루프를 빠져나간다
end
exit 0 // 프로그램을 종료시킨다.
4. 분석 및 토론
문제점1.
특정크기이상의 파일을 검색하는 부분에서 find 의 명령에 옵션을 주어 찾아보려 했었지
만 find의 옵션 중 "-size n" 화일의 길이가 n 블럭(블럭당 512byte)이면 참 인 옵션을
이용하여 참 인 파일의 개수를 세어보려고 했지만 블럭당 512 byte 이므로 사용자로부터
입력받은 size에서 512로 나누어 줘야하는 불편함과 while문을 써서 루프를 돌려야한
다는 불편한 점 이 있어서 다른 방법을 찾아보게 되었다.
해결 1.
awk의 사용이 해결책이었다.
일단 ls -al | awk '{print $5}' 가 힌트가 되었다.
ls -al 의 결과에서 5번째 인수들만을 찍어주라는 명령어였다.
이를 이용하여 $5(5번째인수)가 사용자로부터 입력받은 어떤 크기와 비교하여 출력후 그
뒤에 wc -l (라인수만 계산)의 명령어를 사용하여 개수를 헤아릴 수 있게 되었다.
문제점 2.
파일과 서브디렉토리의 일정한 용량과 비교로 개수를 헤아릴 수 있었지만 서브디렉토리
와 파일의 구분을 해야만 했다. ls -al | a자 '{if($1=="d*") print $1}'을 이용하여 디렉
토리를 찾아보려고 애를 썼지만 문자열 비교가 되지 않았다.
해결 2.
서브디렉토리들의 공통점을 발견할 수 있었다. $2인자가 2인 것을 발견하였다. 이에 이
를 이용하여 해결할 수 있었다.
문제점 3.
쉘프로그램으로 소스코딩시
#! /bin/csh
printf "enter the size:"
set size=$<
echo $size
ls -al | awk '{if($2==2 && $5>$size ) print $9}'
구문 안에 있는 $size 가 awk 구문 안에 존재하기 때문에 $size를 인식 못함
해결 3.
외부에서 입력받은 값을 내부에서 사용해보기 위해서..
awk 의 -v 옵션을 사용해 변수를 지정해 보려고도 했지만 실패
구문 안에서의 scanf 사용도 해봤지만 error
문제는 변수는 내부에서 $size 가 아닌 size 로 해야 인식되었다.
비록 시간은 마니 걸렸지만 덕분에 awk 함수의 완벽한 사용 가능
문제점 4
임의의 파일을 생성하기 기능
echo "newfile" > $filename을 이용해서 생성하려고 했었으나 prompt에서는 가능했었
지만 shell 프로그램 안에서는 실행되지 않았다.
cat 이나 vi 또한 부가적인 명령어로 종료시켜주어야 하기 때문에 사용할 수 없었다.
해결 4.
touch를 이용해서 파일을 생성할 수 있었다. touch $filename
  • 가격1,800
  • 페이지수9페이지
  • 등록일2004.05.22
  • 저작시기2004.05
  • 파일형식한글(hwp)
  • 자료번호#251991
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니