\n
не распознается как «линия изменения». Он просто печатает \n
.
Мой терминал - терминал GNOME 3.6.2.
Сначала я заметил это с помощью команд echo, а затем с помощью скриптов оболочки.
Есть предложения, почему это не работает?
По умолчанию стандартная версия GNU echo
поставленный с Ubuntu, не распознает escape-последовательности. Используйте эти -e
флаг для включения этого.
Сравнивают выводы:
serg@ubuntu(bash):[/home/xieerqi]$ echo "new\nline"
new\nline
serg@ubuntu(bash):[/home/xieerqi]$ echo -e "new\nline"
new
line
В общем echo
в сценариях не рекомендуется. Например, mksh
версия echo
действительно позволяет интерпретировать Escape.
Для мобильности сценариев, используйте эти printf
функция.
serg@ubuntu(bash):[/home/xieerqi]$ printf "new\nline\n"
new
line
Ответ Serg решает только проблему с печатью новой строки (echo
, printf
). Если необходимо использовать новую строку в целом в сценариях оболочки, вот некоторые предложения который demostrate использование новой строки путем хранения ее к переменной $NL
. Когда код работает правильно echo "a${NL}b"
затем печать:
a
b
Можно использовать литеральную новую строку:
NL="
"
Можно генерировать использование новой строки printf
и замена команды:
NLx="$(printf \\nx)" ; NL="${NLx%x}"
Добавление x
и следующее удаление его необходимо, потому что замена команды удаляет все новые строки в конце получившей строки.
В Bash можно использовать escape-последовательности для представления управляющих символов в строке между $'
и '
:
NL=$'\n'
Это очень удобно, но к сожалению не портативно.
illegal package name in specifier must start with an alphanumeric character
). Таким образом, я попробовал sudo dpkg -r --force-ovewrite jenkins
, но еще раз я получаю сообщение о необходимости переустановить пакет прежде attemping удаление.
– mt0s
31 October 2016 в 06:37
/etc/systemd/logind.conf
изменение, потому что я думаю , я хочу, чтобы он былsuspend
вместоhibernate
, и в logind.conf странице справочника говорится that' s его значение по умолчанию.) – kuhrusty 28 March 2017 в 14:13