Linux echo перенос строки

Обновлено: 03.07.2024

Я хотел бы создать файл с помощью команды echo и оператора перенаправления, файл должен состоять из нескольких строк.

Я попытался включить новую строку "\ n" внутри строки:

но таким образом не создается файл с тремя строками, а файл с одной строкой и дословным содержанием строки.

Как я могу создать с помощью этой команды файл с несколькими строками?

Вы просили использовать некоторый синтаксис с echo командой:

(Но подумайте и о другом ответе, который вы получили.)

В $'. ' конструкт расширяется встроенные управляющие последовательности ANSI.

Обратите внимание, что это не POSIX, то, будет ли он доступен, во многом зависит от того, какую оболочку вы используете. Вы найдете эту конструкцию в видных оболочках (по крайней мере), ksh, bash, zsh (и, возможно, в других). @ChrisDown, это еще не POSIX, но его планируется включить в выпуск 8. ksh93, bash, zsh, mksh, FreeBSD sh поддерживают его.

То, что echo делает с символьными escape-символами, определяется реализацией. Во многих реализациях echo (в том числе в большинстве современных) передаваемая строка по умолчанию вообще не проверяется на выход.

С помощью echo, предоставляемого GNU bash (как встроенного), и некоторых других вариантов echo, вы можете сделать что-то вроде следующего:

Тем не менее, это действительно звучит так, как вы хотите printf , что на мой взгляд более разборчиво и более переносимо (эта функция определена в POSIX):

Вы также можете рассмотреть возможность использования здесь документа :

я попробовал ваш cat> file << 'EOF' в оболочке, и когда я нажал enter, я получил это> приглашение в форме с каждой строкой, но я не мог выйти из него, даже нажав ctrl + x или ctrl + z Это сработало для моего Mac OSX (в частности echo -en 'text..' , в то время как принятый ответ не распознал мой символ новой строки ( \n ), это было echo -en сделано)

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

где вторая и третья команды используют >> оператор перенаправления, который приводит к тому, что выходные данные команды добавляются (добавляются) к файлу (который уже должен существовать к этому моменту).

где круглые скобки объединяют echo команды в один подпроцесс, который выглядит и действует как любая отдельная программа, которая выводит несколько строк (например ls , например).

Тонкая вариация на выше

Это немного более эффективно, чем второй ответ, поскольку он не создает подпроцесс. Тем не менее, синтаксис немного сложнее: обратите внимание, что вы должны иметь пробел после < и точку с запятой перед >.

эхо-команда

Существует также отдельная утилита /usr/bin/echo , но обычно встроенная версия оболочки имеет приоритет. Мы рассмотрим встроенную в Bash версию echo .

Синтаксис команды echo следующий:

При использовании команды echo следует учитывать несколько моментов.

echo Примеры

В следующих примерах показано, как использовать команду echo:

Вывести строку текста на стандартный вывод.

Отобразите строку текста, содержащую двойные кавычки.

Чтобы напечатать двойную кавычку, заключите ее в одинарные кавычки или экранируйте символ обратной косой черты.

Отобразите строку текста, содержащую одинарную кавычку.

Чтобы напечатать одинарную кавычку, заключите ее в двойные кавычки или используйте кавычки ANSI-C .

Используйте параметр -e чтобы включить интерпретацию escape-символов.

Символы соответствия шаблону.

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

Если файл file.txt не существует, команда создаст его. При использовании > файл будет перезаписан, а символ >> добавит вывод в файл .

Используйте команду cat для просмотра содержимого файла:

Отображение переменных

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

Отображение вывода команды

Используйте выражение $(command) чтобы включить вывод команды в аргумент echo . Следующая команда отобразит текущую дату :

Отображение в цвете

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

Выводы

К настоящему времени вы должны хорошо понимать, как работает команда echo .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

В этом отрывке вы узнаете про множество интересных и полезных команд по работе с текстовыми данными в Linux. Также даны основы работы с потоками ввода-вывода в bash.




Навигация по основам Linux от основателя Gentoo:
Часть I
Часть II
    (вступление)
  1. Обработка текста и перенаправления (итоги и ссылки)

Обработка текста

Возвращаемся к перенаправлению

Ранее в этой серии руководств, мы видели пример использования >, оператора для перенаправления вывода команды в файл, как показано ниже:

$ echo "firstfile" > copyme

Помимо перенаправления вывода в файл, мы можем воспользоваться такой мощной фишкой оболочки как каналы (пайпы). Используя пайпы, мы можем передать вывод одной команды на вход другой. Рассмотрим следующий пример:


Символ | используется для подключения выхода команды слева, ко входу команды справа от него. В примере выше, команда echo печатает в вывод «hi there» с символом перевода строки в конце. Этот вывод обычно появляется в терминале, но канал перенаправляет его на вход команде wc, которая показывает количество строк, слов и символов.

Пример с каналами (пайпами)

Вот другой простой пример:

$ ls -s | sort -n

В этом случае, ls -s обычно вывела бы текущую директорию на терминал, с указанием размера перед каждым файлом. Однако вместо этого, мы передаем вывод программе sort -n, которая численно отсортирует его. Это очень удобно для поиска файлов, которые занимают в директории больше всего места.

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

Распаковывающий канал

Для разархивации и распаковки файла, вы могли бы сделать следующее:

$ bzip2 -d linux-2.4.16.tar.bz2
$ tar xvf linux-2.4.16.tar

Недостаток такого метода — это создание промежуточного, разархивированного файла на диске. Поскольку tar может читать данные напрямую со своего входа (вместо указанного файла), мы можем получить тот же конечный результат используя пайп:

$ bzip2 -dc linux-2.4.16.tar.bz2 | tar xvf -

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

Канал подлиннее

Вот еще один пример пайпа:

$ cat myfile.txt | sort | uniq | wc -l

Мы используем cat для отправки содержимого myfile.txt команде sort. Когда sort получает данные на вход, она сортирует их построчно в алфавитном порядке, и отправляет в таком виде программе uniq. uniq удаляет повторяющиеся строки (кстати uniq, требует отсортированный список на входе) и отправляет результат на wc -l. Мы рассматривали команду wc ранее, но без ее опций. Когда указывается опция -l, то команда выводит только количество строк, количество слов и символов в этом случае не выводятся. Вы увидите, что такой пайп распечатает количество уникальных строк в текстовом файле.

Попробуйте создать пару файлов в вашем текстовом редакторе. Используйте на них данный пайп и посмотрите на результат который вы получите.

Буря обработки текста начинается!

Теперь мы приступим к беглому осмотру команд Linux для стандартной обработки текстов. Поскольку сейчас мы рассмотрим множество программ, у нас не будет места для примеров по каждой из них. Вместо этого, мы призываем вас прочитать man-станицы приведенных команд (набрав man echo, например) и изучить каждую команду с ее опциями, потратив некоторое время на игру с ними. Как правило, эти команды печатают результат обработки на терминал, а не производят модификацию непосредственно файла. После этого беглого обзора, мы поглубже рассмотрим перенаправление ввода-вывода. Так что да, уже виден свет в конце тунеля. :)

echo печатает свои аргументы на терминал. Используйте опцию -e если хотите включить в вывод управляющие последовательности; например echo -e 'foo\nfoo' напечатает foo, затем перейдет на новую строку, затем снова напечатает foo. Используйте опцию -n чтобы запретить echo добавлять символ новой строки в конец вывода, как это сделано по-умолчанию.

cat напечатает содержимое указанного файла на терминал. Удобна как первая команда пайпа, например, cat foo.txt | blah.

sort выведет содержимое файла, указанного в командной строке, в алфавитном порядке. Естественно, sort также может принимать ввод из пайпа. Наберите man sort чтобы ознакомиться с опциями команды, которые управлют вариантами сортировки.

uniq принимает уже отсортированный файл или поток данных (через пайп) и удаляет повторяющиеся строки.

wc выводит количество строк, слов и символов в указанном файле или во входном потоке (из пайпа). Введите man wc чтобы узнать, как настроить вывод программы.

head выводит первые десять строк файла или потока. Используйте опцию -n, чтобы указать, сколько строк должно отображаться.

tail печатает последние десять строк файла или потока. Используйте опцию -n, чтобы указать, сколько строк должно отображаться.

tac похожа на cat, но печатает все строки в обратном порядке, другими словами, последняя строка печатается в первую очередь.

expand конвертирует входные символы табуляции в пробелы. Опция -t указывает размер табуляции.

unexpand конвертирует входные пробелы в символы табуляции. Опция -t указывает размер табуляции.

cut используется для извлечения из входного файла или потока, полей разделенных указанным символом. (попробуйте echo 'abc def ghi jkl' | cut -d ' ' -f2,2 прим. пер.)

Команда nl добавляет к каждой входной строке ее номер. Удобно для распечатки.

pr разбивает файл на страницы и нумерует их; обычно используется для печати.

tr — инструмент трансляции (преобразования) символов; используется для отображения определенных символов во входном потоке на заданные символы в выходной поток.

split — эта команда используется для разделения больших файлов на несколько небольших, более управляемых частей.

fmt используется, чтобы выполнить «перенос» длинных строк текста. Сегодня она не очень полезна, поскольку эта возможность встроена в большинство текстовых редакторов, хотя команда достаточно хороша, чтобы ее знать.

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

join похожа на paste, эта утилита позволяет объединять два файла по общему полю (по-умолчанию первое поле в каждой строке).

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

Буря закончилась! Перенаправление

Как и > в командной строке, вы можете использовать < для перенаправления файла, но уже на вход команде. Для многих команд, можно просто указать имя файла. К сожалению некоторые программы работают только со стандартным потоком ввода.

Bash и другие шелы поддерживают концепцию «herefile». Это позволяет давать входные данные команде в виде набора строк с последующей командой, означающей окончание ввода последовательности значений. Проще всего это показать на примере:

$ sort <<END
apple
cranberry
banana
END
apple
banana
cranberry

В приведенном выше примере, мы вводим слова apple, cranberry и banana, с последующим «END» для указания окончания ввода. Затем программа sort возвращается наши слова в алфавитном порядке.

Использование ">>"

Можно ожидать, >> будет в чем-то похожа на <<, но это не так. Она позволяет просто добавить вывод в файл, а не перезаписывать его каждый раз, как это делает >. Пример:

$ echo Hi > myfile
$ echo there. > myfile
$ cat myfile
there.

Уупс! Мы потеряли часть с «Hi»! А вот что мы имели ввиду:

$ echo Hi > myfile
$ echo there. >> myfile
$ cat myfile
Hi
there.

Об авторах

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Команда echo в Linux: 7 практических примеров

(1 оценок, среднее: 5,00 из 5)

echo command in Linux

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

Это простая команда, которая просто выводит свои аргументы на дисплей.

$ echo Hello World
Hello World

Вы можете догадаться, почему эта команда называется «echo». Как и звуковое эхо, команда также просто печатает то, что получает на входе.

Примеры команды echo в Linux

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

Команда echo имеет простой синтаксис с несколькими опциями:

Давайте посмотрим несколько примеров команды echo:

1. Отображение значения переменной

Допустим, вы объявили переменную var = 100. Вы можете отобразить значение этой переменной с помощью команды echo:

Его вывод будет отображаться так:

Значение переменной var равно 100

2. Не печатайте последний символ новой строки

По умолчанию выходные данные команды echo добавляют новую строку к выходным данным, чтобы выходные данные отображались в одной целой строке.

$ echo Привет Мир
Привет Мир

Вы можете подавить этот символ новой строки, используя опцию -n:

$ echo Привет Мир
Привет Мирdestroyer@andreyex:

Вы можете использовать команду echo, чтобы создать новый файл в Linux или добавить новый текст в существующий файл, перенаправив вывод в файл:

3. Использование escape-символов с командой echo

Опция -e с echo позволяет вам интерпретировать escape-символы. С помощью escape-символов вы можете отображать текст на экране другим способом по вашему выбору.

Следующие escape-символы доступны с escape:

В то время как опция -e просит команду echo интерпретировать escape-символы, опция -E делает обратное и игнорирует escape-символы.

Теперь давайте посмотрим, как использовать некоторые из этих escape-символов с командой echo.

Можете ли вы угадать, какой будет вывод команды выше? Вот:

Давайте посмотрим некоторые другие примеры escape-символов. Символ возврата каретки печатает только текст после этого символа.

$ echo -e “Привет\rМир”
Мир

Если вы используете символ возврата, он удалит один символ перед ним:

$ echo -e “Привет \bМир”
ПриветМир

Вы можете играть с другими escape-символами таким же образом.

4. Отображение текста с одинарными или двойными кавычками с помощью команды echo

Работа с одинарными и двойными кавычками часто является головной болью.

Если у вас есть одинарная кавычка в тексте, который вы хотите отобразить, вы должны заключить весь ввод в двойные кавычки:

$ echo “Это мой мир”
Это мой мир

Если вы хотите отобразить двойные кавычки, вы должны «избежать» этого:

$ echo “Это \”мой\” мир”
Это “мой” мир

5. Показать файлы в каталоге

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

Чтобы отобразить содержимое текущего каталога, вы можете использовать эту команду:

Вы также можете использовать команду echo для отображения файлов только определенного типа:

6. Используйте команду echo для очистки файла в Linux

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

Бонусный совет: отображение вывода команды echo в цвете

Вы, вероятно, натолкнулись на какой-нибудь bash-скрипт, отображающий вывод текста другим цветом. Задумывались ли вы, как это делается? Позвольте нам показать вам это.

Вы можете использовать escape-последовательность ANSI и изменить внешний вид вывода, например, цвет фона, подчеркивание, полужирный и т. д.

Чтобы изменить цвет выходного текста, вы можете использовать эти:

echo -e “\033[30mЭто Черный”
echo -e “\033[31mЭто Красный”
echo -e “\033[32mЭто Зеленый”
echo -e “\033[33mЭто Желтый”
echo -e “\033[34mЭто Синий”
echo -e “\033[35mЭто Пурпурный”
echo -e “\033[36mЭто Голубой”
echo -e “\033[37mЭто Белый”

\033[представляет ESC[ в приведенных выше командах.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: