Запишите маленький сценарий обертки, который использует date
управляйте и называет Вашу команду резервного копирования.
#!/bin/bash
NOW=`/bin/date +"%m%d%Y-%H%M%S"`
if [[ "$?" != "0" ]]; then
NOW="UNKNOWN_DATE"
fi
mysqldump -u username -ppassword database > /path/to/file/$NOW.sql
if [[ "$?" != "0" ]]; then
echo "$0: backup failed with error code $?"
fi
grep -r foo *
не ищет соответствия в скрытых файлах или каталогах, также *
расширен оболочкой, таким образом, Вы могли бы закончить со Списком аргументов слишком длинная ошибка, когда существует много записей в текущем каталоге, или некоторые другие ошибки или недостойное поведение, если название некоторых файлов или каталогов запускается с символа тире.
Вызов grep -r foo .
не имеет вышеупомянутых дефектов
Обновленный:
Другое различие: в странице справочника (@fedora17) grep говорится:
-r, --recursive
Read all files under each directory, recursively, following symbolic links only if they
are on the command line. ...
Будет также различие при выполнении этой команды в пустом каталоге:
$ grep -r foo *; echo $?
grep: *: No such file or directory
2
$ grep -r foo .; echo $?
1
$
При использовании звездочки Вы не можете соответствовать файлам в каталогах, как имя которых запускаются с точки, .cache
.
Обновление:
Это вызвано тем, что *
расширен оболочкой перед вызовом grep
, таким образом, это получает список имен вместо единственного имени каталога (для тока .
). Путем оболочка расширяется, шаблон может быть настроен с параметром оболочки (что касается nullglob
, nocaseglob
или другой bash
опции) или быть переменными среды (как LANG
или LC_ALL
)