![함수를 사용하지 않고 휴지통 기능 만들기](https://linux55.com/image/136042/%ED%95%A8%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%ED%9C%B4%EC%A7%80%ED%86%B5%20%EA%B8%B0%EB%8A%A5%20%EB%A7%8C%EB%93%A4%EA%B8%B0.png)
저는 오래된 Linux 학습 프로젝트를 진행 중이며 작업 중 하나가 아래에 설명되어 있습니다.
"파일을 .Trash라는 디렉토리로 이동하여 영구 삭제로부터 파일을 보호하는 별칭을 만듭니다. 30일보다 오래된 .Trash의 내용을 주기적으로 삭제하도록 crontab에 대한 명령을 만듭니다(디렉토리인 경우에도)."
이 작업을 수행하려면 alias cli 명령을 사용할 것으로 예상했습니다. 함수를 사용하거나 입력을 허용하는 작은 스크립트를 작성할 수 없습니다.
우선 이게 가능한가요? 책에 나와있으니까 그럴 것 같아요. 둘째, 어디서부터 시작해야 할까요? 이 중 일부는 분명합니다. .Trash 디렉토리를 만들었고 rm 대신 별칭을 사용하는 개념을 이해할 수 있지만 이를 수행하기 위해 별칭에 어떤 cli 작업을 넣을 수 있습니까?
Alias trash=mv xxx .trash xxx
위의 경우 사용자 입력 또는 변수 정보가 필요합니다. 여기서 내가 보지 못하는 것은 무엇입니까?
답변1
Linux이기 때문에 GNU를 mv
사용할 수 있다고 가정합니다. -t
이동해야 하는 경로 이름 앞에 대상 디렉터리를 지정할 수 있는 옵션이 있습니다 .
따라서 간단한 사항은 다음과 같습니다.
alias trash='mkdir -p "$HOME/.trash" && mv -b -t "$HOME/.trash"'
trash
그러면 대신 사용할 수 있는 별칭이 생성됩니다 rm
(그러나 실제로는 어떤 옵션도 허용되지 않습니다 rm
). 당신이 사용할 때
trash thisfile thatdir
실제로 구현된 것은
mkdir -p "$HOME/.trash" && mv -b -t "$HOME/.trash" thisfile thatdir
또한 이 별칭은 휴지통 디렉터리가 아직 존재하지 않거나 삭제된 경우 홈 디렉터리에 휴지통 디렉터리를 생성합니다. 또한 동일한 이름의 파일이 이미 존재하는 경우 mv -b
(또 다른 GNU 전용 플래그)를 사용하여 휴지통 폴더에 백업을 생성합니다.mv
이 휴지통 디렉터리에서 오래된 항목을 정리하는 크론 작업은 다음과 같은 작업을 수행합니다.
find "$HOME/.trash" -mindepth 1 -ctime +30 -delete 2>/dev/null
이렇게 하면 30일이 지난 모든 콘텐츠가 삭제되고 디렉터리 자체에 스팸이 발송되는 것을 방지할 수 있습니다. 디렉토리는 모든 내용이 사라질 때까지 삭제되지 않습니다.