Я пытаюсь напечатать -n с помощью команды echo. Но если я просто набираю echo -n, он выдает только новую строку, а не появляется -n, вместо этого выдает новую строку.
Иногда полезно использовать правильный инструмент. Вместо этого вы можете использовать printf:
% printf "-n\n"
-n
Вы можете использовать эту команду, но она добавляет дополнительное пространство.
echo -e "\r-n"
Это своего рода хак.
-e позволяет использовать символы командной строки обратной косой черты. [ ! d2]
\r является возвратом каретки.
На самом деле любой действительный символ \ будет выполняться в любом месте строки.
Вы можете видеть, какие действия действительны по help echo.
echo "-n" не работает, потому что -n используется как параметр для echo.
PS Лучшим решением IMHO является
echo -e "-n\c"
Он не добавляет PS .
echo -e "-n\n"
печатает то же самое, но с новой строкой char.
Я думаю, что если вы определенно хотите использовать только echo, это должно вас удовлетворить:
echo "-n "
Это работает, потому что, хотя -n является допустимым вариантом для echo, -n с пробелом после него нет. Поскольку это не вариант, echo просто печатает его.
Вы, ребята, действительно переусердствовали.
echo -e \\055n
Или без конечной новой строки
echo -en \\055n
Чтобы продлить ответ @ A.B, единственный способ использования echo - воздержаться от использования любых параметров, таких как -n. Вместо этого используйте printf, где это возможно. Эта справочная страница содержит более подробную информацию и очень хорошо объясняет, когда и как следует использовать echo и printf:
В настоящее время эхо (1) является переносимым, если вы опускаете флаги и escape-последовательности. Вместо этого используйте printf (1), если вам требуется больше обычного текста.В сценарии Bash вы можете запускать:
echo -n -
echo n
Или в интерактивной оболочке:
echo -n - ; echo n
Этот символ echo имеет символ - и n характер.
Три других способа:
$ echo -e '\x2dn' # ASCII hexadecimal value
-n
$ echo -e '\u002dn' # Unicode code point
-n
$ echo -e '\u2dn' # Unicode code point shortened
-n
Вы можете запустить
printf -n;echo
Протестировано в Busybox Ash