这是备份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 行用于删除文件的先前版本,但我仍然不明白为什么我们必须 unalias 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
我不明白为什么作者选择重定向到 STDERR,因为该rm -f
选项做了同样的事情。