Существует довольно много проблем с Вашим кодом. В первую очередь, Вы анализируете ls, который является Плохой Идеей. Также необходимо обратиться к переменной как $file
как Вы указываете, и необходимо также заключить его в кавычки так, это не повредится на пробелах. Вы объявляете num
но это никогда не используется. Более безопасный путь был бы:
find /tmp/p/ -name "DSC*.JPG" | while IFS= read -r file; do
convert "$file" -rotate 90 "$file"_rotated.JPG
done
Это будет все еще иметь проблемы, если Ваши файлы будут содержать новые строки, но по крайней мере не повредятся, если Ваш путь содержит пробелы.
Если файлы - все в том же каталоге, он может быть далее упрощен с помощью globbing. Можно также использовать расширение параметра для создания foo_rotated.JPG1
вместо foo.JPG_rotated.JPG
:
for file in /tmp/p/DSC*.JPG; do
convert "$file" -rotate 90 "${file%.JPG}"_rotated.JPG
done
Это было изменено в октябре 2012 года во время / после перехода на systemd / logind. Согласно отчет об ошибке , запуск X-сервера на другом tty, чем активный сеанс consolekit, приводил к прерыванию работы, потому что сеанс (например) на TTY7 не мог быть аутентифицирован. Без logind можно использовать ck-launch-session в ~ / .xinitrc
, чтобы получить новый сеанс для X-сервера. Однако с logind это больше не работало, поэтому / etc / X11 / xinit / xserverrc
был изменен, чтобы просто запускать X-сервер на текущем tty.