Невозможно удалить файлы с такими именами

Просто проверьте, существует ли файл, и если нет, :повторите заголовок:

if [ ! -f "/home/result_$CURR_TIME_EPOCH.csv" ]; then 
    echo "collectiontime,hostname,diskusage,directory" > "/home/result_$CURR_TIME_EPOCH.csv"
fi
0
08.02.2021, 23:19
2 ответа

Это, вероятно, должно быть 'b.txt'$'\n'в последнем, с последней одинарной кавычкой.

Это похоже на вывод GNU ls со стилем цитирования shell-escape. В последних версиях GNU ls такие кавычки используются по умолчанию. Вы можете убедиться, что это так, запустив ls -l --quoting-style=shell-escape, чтобы увидеть, дает ли это тот же результат. Как следует из названия, выходные данные заключаются в кавычки, как это делает оболочка, поэтому их можно использовать в качестве входных данных для оболочки. Следовательно, должна быть возможность удалить один или оба файла, просто скопировав вывод в кавычках/экранированном виде из lsв Bash :

.
ls -l ''$'\n' 'b.txt'$'\n

и, конечно же, rm...после того, как вы убедитесь, что получили правильные файлы.

Для чего бы это ни стоило, первое имя файла — это просто одинокая новая строка (, по какой-то причине экранирование добавляет начальный пустой ''), второе — b.txtи новую строку в конце.

4
18.03.2021, 22:31

Введите «rm имя файла, отображаемое ls », чтобы удалить файлы, например.

rm ''$'\n'

Фон:

  1. К вашим именам файлов добавлен символ новой строки (или, в случае ''$'\n', они даже состоят только из одного символа новой строки)
  2. Введите ls -N, чтобы получить другой (традиционный )вид
  3. Относительно $'\n', который представляет символ новой строки, см. "ANSI -C Quoting"(http://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html)
  4. О различных выходных форматах ls см. «GNU Coreutils -Цитаты имен файлов»(https://www.gnu.org/software/coreutils/quotes.html)или справочную страницу ls (1)(man 1 ls)-ищите «цитирование»
  5. Похоже, что завершение табуляции оболочки не может правильно обрабатывать имена файлов, содержащие символ новой строки, и особенно''$'\n'
  6. Имена файлов, начинающиеся с символа новой строки, обрабатываются особым образом lsдобавлением двух одинарных кавычек -возможно, это ошибка
0
18.03.2021, 22:31

Теги

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