인용하다:`rm`을 `mv ~/.trash`와 같은 것으로 변경하는 방법
UNIX에는 휴지통 유틸리티가 없기 때문에 UNIX에서 휴지통 유틸리티를 구현하고 싶습니다. 파일
에서 별칭을 변경합니다..bashrc
rm='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