rm에 대한 호출을 가로채서 파일을 영구적으로 삭제하는 대신 휴지통으로 옮기는 방법이 있습니까?
답변1
거기에webupd8.org의 레시피이를 위해. 링크 부패를 방지하기 위한 중요한 정보는 다음과 같습니다(몇 가지 추가 사항 포함).
sudo apt-get install trash-cli
그러면 있는 그대로 사용하거나 별칭을 만들 수 있는 trash
, empty-trash
및 명령 list-trash
이 설치됩니다 (아래 참조).restore-trash
rm
trash
명령 의 의미 trash
는 표준과 약간 다릅니다 . 디렉토리를 삭제하기 위해 플래그가 rm
필요하지 않습니다 . -r
이것이 귀찮다면 webupd8.org는 PATH에 넣고 호출할 수 있는 다음 스크립트를 제안합니다 trash-rm
.
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"; do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]; then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0
;;
(--recursive) recursive=0
;;
(*)
if [ $recursive != 0 -a -d "$f" ]; then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi
;;
esac
done
trash "${cmd[@]}"
Ubuntu 12.04 이상에서는 스크립트의 마지막 명령이 trash-put "${cmd[@]}"
대신이어야 합니다 trash "${cmd[@]}"
(명령이 에서 로 변경되었으므로 trash
) trash-put
.
그런 다음 스크립트를 실행 가능하게 만듭니다.
chmod +x trash-rm
의 일부 디렉토리에 있으면 PATH
~/.bashrc에 별명을 추가하십시오. 그러면 bash가 실제 명령 대신 스크립트를 호출하게 됩니다 rm
.
alias rm="trash-rm"
djeikyb가 올바르게 지적했듯이 .bashrc 별칭 트릭은 .bashrc가 수정된 사용자와 bash 터미널 세션에서만 작동합니다.
그리고 그게 다여야합니다.
답변2
libtrash(Ubuntu의 libtrash 패키지)가 이 작업을 수행하는 것 같지만 한 번도 사용한 적이 없습니다.