Linux консоль перенос строки

How to add new lines when using echo

I didn’t know about printf, with printf it works 😛 . so what does it make not working with echo then?

There are many different implementations of echo command incompatible with each other. Thus it is recommended to use more standard tool as printf . See unix.stackexchange.com/questions/65803/… for extended overview of the problem.

9 Answers 9

Pass the -e flag to echo to make it parse escaped characters such as «\r\n», like so:

echo -e "Line 1\r\nLine2" >> readme.txt 

A nice simple «-e» option to get escape sequences working — it says on another answer that echo is unreliable and doesn’t follow standards unlike printf .

echo

An echo implementation which strictly conforms to the Single Unix Specification will add newlines if you do:

But that is not a reliable behavior. In fact, there really isn’t any standard behavior which you can expect of echo .

OPERANDS

string

A string to be written to standard output. If the first operand is -n , or if any of the operands contain a character, the results are implementation-defined.

On XSI-conformant systems, if the first operand is -n , it shall be treated as a string, not an option. The following character sequences shall be recognized on XSI-conformant systems within any of the arguments:

\a — Write an .

\b — Write a .

\c — Suppress the that otherwise follows the final argument in the output. All characters following the \c in the arguments shall be ignored.

\f — Write a .

\n — Write a .

\r — Write a .

\t — Write a .

\v — Write a .

\\ — Write a character.

\0num — Write an 8-bit value that is the zero, one, two, or three-digit octal number num .

And so there really isn’t any general way to know how to write a newline with echo , except that you can generally rely on just doing echo to do so.

A bash shell typically does not conform to the specification, and handles the -n and other options, but even that is uncertain. You can do:

shopt -s xpg_echo echo hey\\nthere 

And not even that is necessary if bash has been built with the build-time option.

—enable-xpg-echo-default

Make the echo builtin expand backslash-escaped characters by default, without requiring the -e option. This sets the default value of the xpg_echo shell option to on , which makes the Bash echo behave more like the version specified in the Single Unix Specification, version 3. See Bash Builtins, for a description of the escape sequences that echo recognizes.

printf

On the other hand, printf ‘s behavior is pretty tame in comparison.

RATIONALE

The printf utility was added to provide functionality that has historically been provided by echo . However, due to irreconcilable differences in the various versions of echo extant, the version has few special features, leaving those to this new printf utility, which is based on one in the Ninth Edition system.

The EXTENDED DESCRIPTION section almost exactly matches the printf() function in the ISO C standard, although it is described in terms of the file format notation in XBD File Format Notation.

It handles format strings which describe its arguments — which can be any number of things, but for strings are pretty much either %b yte strings or literal %s trings. Other than the %f ormats in the first argument, it behaves most like a %b yte string argument, except that it doesn’t handle the \c escape.

echo() printf

You might write your own standards conformant echo like.

. which should pretty much always do the right thing automatically.

Actually, no. That prints a literal \n at the tail of the arguments if the last argument ends in an odd number of .

echo() case $ in (\ *) printf %b\\n "$*";; (*) IFS=\ $IFS printf %b\\n "$*" IFS=$ esac 

Источник

Использование команды echo в Linux

Команда echo в Linux

Как известно, большинство действий в операционной системе Linux осуществляются через консоль. Пользователи задействуют специальные команды, отвечающие за выполнение определенных процессов, а заранее указанные опции позволяют собственными руками управлять дополнительными возможностями тех самых утилит. Одной из таких команд является echo, и сегодня мы хотим более детально рассказать об этой утилите, приведя несколько примеров ее использования.

Используем команду echo в Linux

Рассматриваемая сегодня команда echo имеет примитивный вид и узкопрофильное предназначение — выводить текст на экран. Однако это не мешает ей часто использоваться в различных скриптах и для других целей. Далее мы предлагаем вкратце ознакомиться с синтаксисом данной утилиты и разобрать самые популярные и простые примеры ее ввода в стандартной консоли.

Синтаксис echo

Практически каждая команда помимо основной своей функции может выполнять и другие действия с учетом указанных аргументов. echo не стала исключением в этом плане, однако из-за простоты самой команды расширенных опций существует не так уж и много. Давайте подробнее рассмотрим каждую из них, но сначала обратите внимание на стандартный вид строки: echo + опции + строка .

Опции Описание
-n Не будет выводить перенос строки
-e Отвечает за включение Escape-последовательностей
-E Отключает интерпретацию Escape-последовательностей

Отметим также, что Escape-последовательности — универсальные опции, представленные в виде символов. Каждая из них имеет определенное значение, и если вы включите интерпретацию при использовании команды echo, то можете задействовать такие аргументы:

Опции Описание
/c Отвечает за удаление перевода строки
/t Выводит горизонтальную табуляцию
/v Создает вертикальную табуляцию
/b Удаляет предыдущий символ в строке
/n Включает перенос строки на новую
/r Возвращает каретку в начало строки

Еще раз уточним, что приведенные выше опции доступны к вводу только в тех ситуациях, когда вы изначально прописали аргумент -e в команде. Если есть необходимость, каждый этот символ можно проставить после любого из слов строки ввода, что мы покажем в следующих инструкциях.

Вывод простых строк

Как уже было сказано ранее, основное предназначение команды echo — вывод на экран строк. Именно об этом мы и хотим поговорить далее, рассмотрев несколько простых действий, которые помогут понять, как именно работают все основные опции утилиты.

  1. Запустите консоль удобным для вас образом, например через меню приложений или путем нажатия на горячую клавишу Ctrl + Alt + T. Здесь введите echo + любое слово или словосочетание, чтобы проверить стандартное действие команды. Активируется она нажатием на клавишу Enter. Использование команды echo в Linux без применения дополнительных опций
  2. Как видите, в новой строке отобразились только что введенные слова в точно таком же формате. Результат использования команды echo в Linux без дополнительных опций
  3. Если перед каждым словом вы добавите опцию \b , предыдущий символ будет стерт, а это значит, что результат выведется без пробелов, при условии, что мы имеем изначальный вид echo -e «Lumpics \bSite \bLinux» . Использование echo в Linux с опцией удаления предыдущего символа
  4. Мы проставили указанную опцию во всех словах, поэтому результат получился соответствующий. Результат использования echo в Linux с опцией удаления предыдущего символа
  • Теперь давайте обратим внимание на параметр \n . Как вы уже знаете, он активирует перенос строки, если это не было указано изначально. Использование echo в Linux с опцией переноса на новую строку
  • Мы указали \n в двух словах, идущих после первого, следовательно, каждое из них будет отображаться в новой строке. Результат использования команды echo в Linux с опцией переноса на новую строку
  • Перейдем к табуляции, использующейся для выравнивания текста. Вам достаточно будет прописать в необходимых местах \t , чтобы добиться нужного результата. Использование echo в Linux с опцией табуляции
  • Как видно, к первому слову табуляция была применена дважды. Учитывайте это при выводе строк. Результата использования команды echo в Linux с опцией табуляции
  • Дополнительно ничего не мешает указывать несколько опций последовательно, соблюдая правила ввода. Комбинирование опций при использовании команды echo в Linux
  • Так, например, на приведенном ниже скриншоте вы видите результат вывода с переносом и табуляцией одновременно. Результат комбинирования опций при использовании команды echo в Linux
  • В качестве последнего примера возьмем /v . Этот аргумент создает вертикальную табуляцию. Использование опции вертикальной табуляции для команды echo в Linux
  • В результате получается каждое слово с новой строки и в виде ступенек. Результат использования вертикальной табуляции для команды echo в Linux
  • Теперь вы знаете, что команда echo способна выводить заданные строки в любом виде, который можно реализовать путем указания соответствующих опций. Давайте перейдем к другим параметрам, чтобы вы понимали, какие из них стоит комбинировать в правильном формате.

    Вывод значений переменной

    Практически в каждом скрипте используются определенные переменные, в которые заранее устанавливается значение. Если речь идет об утилите echo, то она способна выводить те самые значения. Мы рассмотрим этот пример в одной терминальной сессии без предварительного создания самого скрипта. Это обозначает, что при перезапуске консоли значения будут стерты.

    1. Для начала создадим пробную переменную введя export I=Lumpics , где I — имя переменной, а Lumpics — ее значение. Создание переменной для дальнейшего вывода через echo в Linux
    2. Используйте echo $I , чтобы вывести в следующей строке значение обозначенной переменной. Ввод команды echo в Linux с использованием созданной переменной
    3. Как видите, все отобразилось корректно. Результат команды echo в Linux с использованием переменной
    4. Создадим еще одну переменную через export L=Linux . Создание второй переменной для комбинированного ввода в echo в Linux
    5. Введем пробную команду echo $I Site $L . Комбинированный ввод с двумя переменными echo в Linux
    6. Теперь вы знаете, что echo справляется с выводом двух и более переменных в формате одной строки. Результат комбинированного ввода с двумя переменными echo в Linux

    В большинстве случаев подобный вывод переменных используется только при написании скриптов, однако подобная функция может пригодится, если планируется производить ряд одинаковых, зависимых от одного значения, действий в пределах одной терминальной сессии.

    Присвоение цветов строке

    Если вы активно используете консоль, то знаете, что каждое слово здесь может принять любой доступный цвет, а не только белый или черный (в зависимости от темы «Терминала»). echo тоже позволяет раскрашивать строки, а отвечают за это такие аргументы:

    Аргумент Цвет
    \033[30m Чёрный
    \033[31m Красный
    \033[32m Зелёный
    \033[33m Желтый
    \033[34m Синий
    \033[35m Фиолетовый
    \033[36m Голубой
    \033[37m Серый

    Имеется и ряд других аргументов, позволяющих изменить цвет фона надписи. Выглядит список похожим образом, но имеются различия в цифрах:

    Аргумент Цвет
    \033[40m Чёрный
    \033[41m Красный
    \033[42m Зелёный
    \033[43m Желтый
    \033[44m Синий
    \033[45m Фиолетовый
    \033[46m Голубой
    \033[47m Серый
    \033[0m Сбрасывает все значения до состояния по умолчанию

    Как вы уже поняли, эти аргументы придется применять к каждой строке, если в этом есть необходимость. Выглядит подобная структура так: echo -e «\033[33mLumpics \033[46mSite \033[41mLinux» .

    Использование команды echo в Linux для изменения цвета строк

    Приведенный выше пример окрасил фон строки «Lumpics» в оранжевый цвет, а к «Site» и «Linux» дополнительно были активированы фоны разных цветов. Вы это видите на приведенном ниже скриншоте действия введенной команды.

    Результат применения опций echo в Linux для изменения цвета строк

    Специальные символы Bash

    Команда echo функционирует только в среде Bash, соответственно, она должна поддерживать стандартные опции этого окружения. В большинстве случаев они отвечают за сортировку файлов и вывод объектов текущего расположения.

    1. Введите в «Терминале» echo * , чтобы показать содержимое текущей папки. Использование команды echo в Linux для вывода содержимого текущей папки
    2. Следующей строкой появится перечень абсолютно всех входящих директорий и элементов. Это будет стандартная строка без оформления. Однако теперь вы уже знаете, что ее можно видоизменить на основании примеров выше. Действие команды echo в Linux после вывода содержимого текущей папки
    3. Укажите echo *.txt , если хотите отобразить только элементы обозначенного формата. Замените .txt на другой необходимый вариант. Использование команды echo в Linux для вывода определенного формата файлов
    4. В конце отметим, что echo выступает и для редактирования конфигурационных файлов, что осуществляется так: echo 1 > /proc/sys/net/ipv4/ip_forward . 1 — строка для внесения, а /proc/sys/net/ipv4/ip_forward — путь к нужному объекту. Использование команды echo в Linux для изменения конфигурационных файлов

    В рамках сегодняшнего материала мы разобрались с использованием echo в операционной системе Linux. Если вас заинтересовала тема взаимодействия с популярными командами, дополнительно рекомендуем изучить статью по этой теме на нашем сайте, перейдя по указанным ниже ссылкам.

    Источник

    Читайте также:  Установить линукс минт через терминал
    Оцените статью
    Adblock
    detector