rm 명령의 별칭(cp 명령 문제)

rm 명령의 별칭(cp 명령 문제)

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'

이 코드는 파일이나 디렉터리를 삭제하려는 경우에 효과적입니다.

관련 정보