MySQL 데이터베이스를 백업하는 스크립트입니다.
#!/bin/bash
FILE=minime.sql.`date +%F`
DBSERVER=127.0.0.1
DATABASE=wordpress
USER=root
PASS=789789
unalias rm 2> /dev/null
rm $FILE 2> /dev/null
rm $FILE.gz 2> /dev/null
mysqldump --opt --user=$USER --password=$PASS $DATABASE > $FILE
gzip $FILE
echo "$FILE.gz was created"
ls -l $FILE.gz
명령에는 3줄이 이전 버전의 파일을 삭제하기 위한 것이라고 나와 있지만 왜 rm의 별칭을 해제하고 stderr를 /dev/null로 리디렉션해야 하는지 이해가 되지 않습니다.
unalias rm 2> /dev/null
rm $FILE 2> /dev/null
rm $FILE.gz 2> /dev/null
답변1
rm
스크립트 작성자는 명령이 기존 명령문에 의해 수정되지 않았는지 확실히 확인하고 싶을 수도 있습니다 alias
.
작성자는 /bin/rm
대신 절대 경로를 사용하여 이를 수행 할 수도 있습니다 rm
.
RM="/bin/rm"
$RM $FILE ...
rm
rm -f
해당 옵션이 동일한 작업을 수행하므로 작성자가 STDERR로 리디렉션하기로 선택한 이유를 이해할 수 없습니다 .