Вы можете использовать скрипт, подобный этому, который отслеживает все изменения и после любого изменения создает ls , отсортированную по дате. Чтобы выполнить его, вам необходимо установить инструменты inotify -. Сценарий будет следующим:
#!/bin/bash
DIRECTORY="your_directory_path"
inotifywait -m -r -e create --format '%w%f' "${DIRECTORY}" | while read NEW
do
ls -hltr
done
Я прочитал только первые несколько строк (слишком долго ). Но \r
указывает, что вы редактируете на компьютере MS -Windows. MS -Windows делает окончания строк несовместимым образом(\r\n
). Другие системы делают(\n
).
Решения:
dos2unix
при импорте. Проблема с окончанием строки не связана напрямую с набором символов, т.е. «Кодовая страница 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 складывает все после имени интерпретатора в один аргумент. Но если вы уже получаете ошибку от оболочки, вы, вероятно, получаете скрипт, выполняемый оболочкой, по крайней мере, какой-то оболочкой.