Команда $'\r' :не найдена — кодировка файлов на CentosOS через cPanel для облачного сервиса

Вы можете использовать скрипт, подобный этому, который отслеживает все изменения и после любого изменения создает ls , отсортированную по дате. Чтобы выполнить его, вам необходимо установить инструменты inotify -. Сценарий будет следующим:

#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
        ls -hltr
done
0
07.02.2021, 13:17
2 ответа

Я прочитал только первые несколько строк (слишком долго ). Но \rуказывает, что вы редактируете на компьютере MS -Windows. MS -Windows делает окончания строк несовместимым образом(\r\n). Другие системы делают(\n).

Решения:

  • Не использовать MS -Windows
  • Используйте редактор, который можно настроить для использования правильных окончаний строки -.
  • Пропустить файл через dos2unixпри импорте.
0
18.03.2021, 22:32

Проблема с окончанием строки не связана напрямую с набором символов, т.е. «Кодовая страница 1252», используемая Windows, имеет символы возврата каретки (CR )и перевода строки (LF ), такие же, как UTF -8.(И, поскольку был упомянут EBCDIC, у него также, кажется, есть и то, и другое, плюс еще один символ новой строки. Какие странные системы с ним на самом деле используют, это совсем другое.)

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

Теперь вы не показали, какой сценарий выдал вам эту ошибку «неожиданный конец файла», но обычно это происходит, если оболочка ожидает закрывающую кавычку или какое-то ключевое слово, которое должно появиться для завершения составной команды. Это будут такие, как thenи fiдля if; doи doneв циклах и т. д. Если вместо этого оболочка увидит then\r, она не распознает его как ключевое слово.

Тем не менее, трюк с комментированием CR должен работать. Баш читает что-то вроде этого прекрасно,даже с окончаниями строк CR+LF:

if true; then #
    echo moi  #
fi            #

Тем не менее, строка hashbang представляет собой большую проблему. Я не могу придумать способ игнорировать CR, особенно когда Linux складывает все после имени интерпретатора в один аргумент. Но если вы уже получаете ошибку от оболочки, вы, вероятно, получаете скрипт, выполняемый оболочкой, по крайней мере, какой-то оболочкой.

0
18.03.2021, 22:32

Теги

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