Как я удаляю файл, я случайно создал названный $file?

Не используйте переменные среды вообще. Используйте файлы.

Чтобы препятствовать тому, чтобы процессы ступили друг на друга при обновлении/чтении файла, используйте lockfiles и маленький фронтенд updater сценарии, цель которых просто обновляет файл с 1$, если это не заблокировано. Lockfiles реализованы, в основном проверив, существует ли определенный файл (/var/run/yourscript.lck) и если он делает, ожидает файла, чтобы исчезнуть некоторое время, и перестать работать, если он не делает. Также необходимо удалить lockfile, сделано обновив файл.

Будьте готовы обработать ситуацию, где сценарий не может обновить файл, потому что файл занят.

5
02.06.2011, 06:45
6 ответов

Можно выйти $ с \:

rm \$file
13
27.01.2020, 20:31
  • 1
    Возможно, добавьте комментарий о выходе из специальных символов? –  Keith 02.06.2011, 06:34
  • 2
    Не повредило бы использовать -i переключатель (интерактивный, таким образом, Вам предлагают перед заключительным удалением) в этом случае... –  jasonwryan 02.06.2011, 06:40

В основном, если Вы хотите сделать вещи литерал с этими странными символами, необходимо выйти из него. В оболочке существует несколько способов сделать это. Первый должен предварительно ожидать '\' к каждому символу, из которого Вы хотите выйти. Таким образом, можно сделать rm \$file. Иначе должен заключить им в кавычки с одинарными кавычками, например, rm '$file' или rm '$'file. Некоторые люди также полагают, что двойные кавычки как среднее "выходят", но это только выходит из пробелов. Например, если Вам назвали файл a file, можно сделать

rm a\ file

или

rm 'a file'

или

rm "a file"
5
27.01.2020, 20:31

Если Вы когда-нибудь случайно создаете названный файл -rf, можно использовать rm -- -rf удалить его.

4
27.01.2020, 20:31
  • 1
    Это кажется страшным, чтобы попытаться протестировать. :-) –  Peter Grill 02.06.2011, 12:49
  • 2
    @Peter: Это точно почему -- опция была создана; удалить файлы, которые были бы иначе взяты в качестве опций. С другой стороны, Вы могли протестировать его с совершенно новым каталогом, названным '-rf': rm -- -rf должен дать Вам ошибку о том, чтобы быть каталогом. –  Kevin M 02.06.2011, 18:59
  • 3
    Хм... что относительно файлов назван --...? А-ч, без проблем: rm -- -- –  Volker Siegel 09.10.2014, 06:41

Можно также сделать

rm '$file'

Материал в одинарных кавычках всегда берется в качестве литерала, таким образом, шарики и переменные не становятся расширенными.

4
27.01.2020, 20:31

Любой менеджер по графическому файлу должен смочь обработать это через контекстное меню, потому что оно не пытается интерпретировать что-либо.

0
27.01.2020, 20:31
  • 1
    Или, эквивалентно, Вы могли нанять системного администратора, чтобы сделать это, правильно? ;) –  Wildcard 04.04.2016, 21:58

Некоторые способы избавления от файлов со странными именами заключаются в использовании подстановки (т. е., rm ?fileесли первый символ является чем-то странным, но это также уничтожит Xfile, нужно быть осторожным, чтобы не совпадать слишком много, проверьте с echoзаранее )и/или используйте интерактивный флаг:rm -i *fileзапросит все вещи, называемые что-то file, если вы хотите их удалить.

0
19.02.2020, 17:12

Теги

Похожие вопросы