rm 별칭을 mv로 변경

rm 별칭을 mv로 변경

인용하다:`rm`을 `mv ~/.trash`와 같은 것으로 변경하는 방법

UNIX에는 휴지통 유틸리티가 없기 때문에 UNIX에서 휴지통 유틸리티를 구현하고 싶습니다. 파일
에서 별칭을 변경합니다..bashrcrm='move.sh"

위의 참조 가이드에 따라 move.sh 스크립트에 함수를 작성했습니다.

스크립트: move.sh

 #!/bin/sh
    
 TRASH=<trash directory path>
    
 move()
 {
   mv "$@" $TRASH;  
 }
 move

실행하면 다음 오류가 발생합니다. 누군가 내가 뭘 잘못하고 있는지 알아내도록 도와줄 수 있나요?

mv: 인수 부족 (1) 사용법: mv [-f] [-i] f1 f2
mv [-f] [-i] f1 ... fn d1
mv [-f] [-i] d1 d2

답변1

첫째, 이것이 전체 스크립트라면 먼저 함수를 만들 필요가 없습니다. 간단히 작성하세요:

#!/bin/bash
TRASH=<trash directory path>
echo "$TRASH"
mv "$@" "$TRASH"

그러나 스크립트의 질문에 대답하자면 가장 명백한 실수는 함수에 인수를 전달하지 않는다는 것입니다. 즉, 스크립트의 마지막 줄에도 스크립트 매개변수가 전달되어야 합니다. move가 되어야 한다 move "$@".

그 외에도 명확한 이유가 없다면 항상 변수를 인용하는 것을 잊지 마세요.


원하는대로 .bashrc함수를 직접 만드십시오.

cat <<'EOF' | tee -a "$HOME/.bashrc"
trash(){ local t="/my/trash/path"; [[ -n "$*" ]] && echo "$t" && mv "$@" "$t" ;}
EOF

표준 명령을 재정의하지 말 것을 강력히 권장합니다. 이것이 바로 예제에서 rm그렇게 한 이유입니다.trash

관련 정보