Bash 스크립트는 디렉토리 이름을 명령줄 인수로 사용합니다!

Bash 스크립트는 디렉토리 이름을 명령줄 인수로 사용합니다!

디렉터리 이름을 명령줄 인수로 사용하고 디렉터리에 있는 .tmp 확장자 또는 .swp 확장자를 가진 길이가 0인 파일을 모두 삭제하여 디렉터리를 정리하는 Bash 스크립트를 작성하세요. 그런 다음 해당 디렉토리의 아카이브를 생성하고 아카이브를 압축하여 ~ 디렉토리에 넣으시겠습니까?

#!/bin/bash

if [ -d $1 ]
then
  find -empty -print -exec rm -f {} \;
  find . -name "*.tmp" -print -exec rm -f {} \;
  find . -name "*.swp" -print -exec rm -f {} \;
  tar -zxvf $filename.tar.gz /~/ \;
else
  echo "this file is not a directory"
fi

아카이브 섹션에서 멈췄습니다. 몇 가지 팁을 제공해 주실 수 있나요? 감사합니다. 좋은 하루 보내세요.

답변1

  1. 이게 숙제라면 그렇게 말해야 해요.
  2. 귀하의 스크립트는 귀하가 제공한 디렉토리 이름에 관계없이 현재 디렉토리만 검색합니다.
  3. 명령을 사용하여 스크립트를 작성하는 것은 자신이 수행하는 작업을 실제로 알지 않는 한 rm -f매우 나쁜 생각입니다 .find
  4. \;명령이 끝나면 tar오류가 발생합니다.
  5. #4에 따르면 명령 ;의 역할에 대해 혼란스러워하는 것 같습니다 find. find들어오는 명령의 끝이 어디인지 알려주는 인수로 전달됩니다 .
  6. 귀하의 tar명령은 아카이브를 생성하는 것이 아니라 아카이브에서 추출을 시도하고 있습니다.
  7. 당신의참조되지 않은 변수.
  8. /~/쉘은 이를 홈 디렉토리 이름으로 변환하지 않으며 ~단어의 시작 부분에만 나타납니다.
  9. 올바르게 수행되면 세 find명령을 모두 하나의 명령으로 결합할 수 있습니다.

나는 더 많은 것이 있다고 확신합니다. 이 사이트를 살펴보면 많은 것을 배울 수 있습니다.

우리는 돕고 싶지만 이것은 실제로 "숙제 도움말" 사이트가 아닙니다. 이를 입증하면 더 많은 도움을 받을 수 있습니다.단지 과제를 완수하고 싶은 것이 아니라 정말로 배우고 싶어합니다.

답변2

tar스크립트에 몇 가지 다른 문제가 있기 때문에 카탈로그 작성 방법에 대한 질문에 구체적으로 대답하려면 다음을 수행하십시오 .

tar -cvzf tarfile.tgz "$1"

tarfile.tar라는 gzip으로 압축된 tar가 생성되고 스크립트 매개변수의 디렉터리가 여기에 배치됩니다.

관련 정보