C 셸: 파일 형식에 따라 다양한 작업 수행

C 셸: 파일 형식에 따라 다양한 작업 수행

저는 C Shell을 처음 접했습니다. 명령줄에서 파일을 읽고 zip 파일, .txt, 심볼릭 링크, 파이프 또는 기타 파일("알 수 없음")인지 확인하려고 합니다.

그런 다음 유형에 따라 몇 가지 명령을 실행하고 싶습니다. 예를 들어, txt 파일인 경우 이에 대한 정보("텍스트 파일입니다")를 인쇄하고 크기를 제공합니다.

이것이 내가 지금까지 얻은 것입니다:

!/bin/csh

if ( "echo ${1} | cut -d'.' -f2" == "zip" ) then
    echo $1 is a zip file
else
    echo sorry, $1 is not a zip file
endif

답변1

switch파일 이름을 분석하는 데 사용됩니다 .

switch ($1)
case *.zip:
  echo "$1 is a zip file"
  breaksw
default:
  echo "${1}: not supported"
endsw

파일 유형을 구문 분석하려면 출력을 구문 분석하십시오 ls. 첫 번째 문자는 파일 유형입니다.

switch ("`ls -logd "$1"`")
case d*:
  echo "$1 is a directory"
  breaksw
# ...
endsw

실제로 당신은 찾고있을 수 있습니다file파일의 내용을 분석하여 포함된 데이터의 형식을 결정하고 일반적이지 않은 파일의 파일 유형을 보고하는 명령입니다.

file -- "$1"

답변2

다른 셸에서와 마찬가지로 백틱을 사용하여 내부 명령의 결과를 평가합니다. 그래서 대신

"echo ${1} | cut -d'.' -f2"

이것은 문자열 "zip"과 확실히 같지 않은 문자열입니다.

`echo ${1} | cut -d'.' -f2`

내부 명령을 평가하고 결과를 반환합니다.

관련 정보