rm 명령을 파일을 백업하고 나중에 삭제하는 명령으로 변경해 보았습니다.
function move_to_trash () {
unset rm;
cp -v "$@" "/home/`whoami`/backup/" && rm "$@";
}
alias rm='move_to_trash'
산출:
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
'file1' -> '/home/dorchester/backup/file1'
cp 명령은 rm "$@" 명령을 시작하지 않고도 계속 실행되는데, 이는 정말 이상합니다. 이것은 무한 루프인 것 같습니다. 이 루프가 어떻게 발생하는지 알고 싶습니다. 또한 저는 bash 스크립트 접근 방식을 선호하지만 cp 명령을 가비지 명령(예: rmtrash)으로 변환하는 솔루션이 있다는 것을 알고 있습니다.
답변1
참고: unset 명령은 별칭을 삭제하지 않습니다.
function move_to_trash () {
cp -vr "$@" "/home/`whoami`/backup/" && command rm -rf "$@";
}
alias rm='move_to_trash'
이 코드는 파일이나 디렉터리를 삭제하려는 경우에 효과적입니다.