Кажется, что проблемой было неправильное отображение жесткого диска.
Если USB был включен во время начальной загрузки, жесткий диск был распознан как hd1; но если не было USB, он был распознан как hd0.
Решенный проблема путем изменения grub.conf для использования hd0.
Так как Вы, по-видимому, хотите удалить все файлы без запроса, почему не просто используют -f
переключатель к rm
проигнорировать несуществующие файлы?
rm -f /tmp/our_cache/*
Из страницы справочника:
-f, --force
ignore nonexistent files, never prompt
Кроме того, если могут быть какие-либо подкаталоги в /tmp/our_cache/
и Вы хотите их, и их содержание, удаленное также, не забывайте -r
переключатель.
find /tmp/our_cache/ -mindepth 1 -delete
Редактирование 1
удаленный "-тип f
Редактирование 2
Добавленная нестандартная опция -mindepth 1
для предотвращения поискового корневого каталога, который будет удален (после того, как взятие -type f
ограничение далеко).
-type f
с тех пор могут быть временные каталоги также (хотя пример в вопросе не составляет их, таким образом, они, вероятно, не там...), использование
– Izkata
15.03.2013, 20:18
-type f
только удалит регулярные файлы, таким образом, символьные ссылки, например, не были бы удалены.
– Huygens
15.03.2013, 20:58
/tmp/our_cache
таким образом, Вы могли бы также сделать rm -r /tmp/our_cache
. В то время как Вы при использовании нестандартных опций, Вы могли использовать -mindepth 1
. Отметьте это вопреки rm /tmp/our_cache/*
, это также удаляет подкаталоги и их довольный и скрытые файлы.
– Stéphane Chazelas
15.03.2013, 22:30
Можно перенаправить стандартную погрешность к /dev/null
так, чтобы это печать привычки это
$ rm /tmp/our_cache/* 2>/dev/null
Иначе (хотя немного излишество...):
[ ! -z "$(ls -A /tmp/our_cache/)" ] && rm -rf /tmp/our_cache/*
это использует test
или [
протестировать если строка, возвращенная из выполнения ls
на Вашем каталоге не пусто. Затем, если, и только если, та строка не пуста, делает она удаляет все в соответствии с Вашим каталогом.
Примечание: отъезд шарика из ls
подавит ошибку никаких файлов.
Если Ваш сценарий использует Bash, можно попробовать:
if test "$(ls /tmp/our_cache/)" != ""; then rm /tmp/our_cache/*; fi
Выполнение так все еще произведет ошибку, если будет "реальная" проблема или если бы файл защищен (Вам затем было бы нужно -f
модификатор rm
удалить этот тип файлов), но избежит ошибки, когда никакие файлы не будут там.
При использовании другой оболочки, чем Bash для сценариев, таких как zsh, ksh, можно попробовать этот другой синтаксис, который мог бы быть более портативным:
if [[ "$(ls /tmp/our_cache/)" != "" ]]; then rm /tmp/our_cache/*; fi