Как создать файл с именем, начинающимся с символа ' -'

Проблема решилась добавлением дополнительного места для хранения. Чтобы быть конкретным, я добавил жесткий диск на 2 ТБ, который используется для хранения смолы, пока она разделена на нем. Первоначально весь процесс выполнялся на жестком диске емкостью 6 ТБ с другими большими файлами, что давало нам не более 3 ТБ дискового пространства для работы. Проблема была замечена, когда у нас в фоновом режиме загружалось что-то большое, что занимало большую часть места, воспроизводя неисправную проблему tar из вопроса.

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

На случай, если кто-то наткнется на этот вопрос и собирается пойти тем же путем, что и я, вот шаги, которые я выполнил, чтобы добавить новый жесткий диск :https://askubuntu.com/a/125277/

Я хотел бы отметить, что кто-то предложил проверить, достаточно ли места для хранения, и я хотел бы отдать им должное. Вот предложение:

Make sure that your first tar -cpvzf... is running without any errors, that the return code (echo $?) is 0 and that the disk space is sufficient. – Cyrus Aug 16 at 19:37

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

0
22.10.2021, 17:04
1 ответ

touch \#attemptработает, потому что знак решётки является особенным для оболочки. Точно так же вам понадобится что-то вроде touch \(foo\)или touch 'this & that'для имен файлов со скобками или амперсандами и т. д.

Но экранирование тире не помогает так как это не специально к оболочке , а к утилите запускаемой оболочкой. Запуск командной строки оболочки touch \-fooаналогичен запуску touch -foo, touchв любом случае получит единственный аргумент -foo.

Итак, вместо побега требуется что-то еще.

Стандартный способ сообщить программе прекратить интерпретировать аргументы команды как (возможные )опции — вставить аргумент --после опций. Например. это запустит rmс параметром -fв файле с именем-r:

rm -f -- -r

rm -- --удалит файл с именем --.)

Кроме того, вы можете обойти эту проблему, убедившись, что тире не является первым символом имени файла, обычно добавляя перед ним ./. Итак, опять же, это удалит файл с именем-rf:

rm./-rf
3
22.10.2021, 17:26

Теги

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