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
-
(вступление)
- Обработка текста и перенаправления (итоги и ссылки)
Обработка текста
Возвращаемся к перенаправлению
Ранее в этой серии руководств, мы видели пример использования >, оператора для перенаправления вывода команды в файл, как показано ниже:
$ 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.
Главное меню » Операционная система Linux » Команда echo в Linux: 7 практических примеров
(1 оценок, среднее: 5,00 из 5)Это простая команда, которая просто выводит свои аргументы на дисплей.
$ 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.
Читайте также: