Контакты

Wc — Ай да Linux Wiki. Wc — Ай да Linux Wiki Команда wc без опций и аргумента

Н екоторые практические примеры команды wc в Linux, как подсчитывать количество строк, слов а также символов текстового файла.

Что такое команда wc в Linux?

Команда wc отображает статистическую информацию о файле, такую ​​как количество строк, слов, символов.

Общая информация: wc означает количество слов.

Синтаксис команды wc:

Wc

Команда wc имеет следующие параметры:

  • -l: Распечатывает только количество строк
  • -w: Печатает только количество слов
  • -c: Печатает только количество байтов
  • -M: Распечатывает количество символов (отличное от количества байтов для не текстовых файлов)
  • -L: Распечатывает длину самой длинной строки в файле
  • -files0-from=F: Получить имена файлов из файла F (имена файлов должны быть разделены символом NULL)

5 практических примеров команды wc в Linux

В этом примере мы собираемся использовать файлы alex.txt и andreyex.txt. Вы можете загрузить эти файлы с помощью команды wc указанные в примерах этой статьей.

Подсчет количества символов в тексте онлайн: https://charactercount.org/ru , удобный инструмент подсчета количества символов в тексте, вы всегда будете знать сколько символов в тексте и слов, а так же есть возможность использовать автосохранение при работе с текстом.

Если вы используете команду wc только с именами входных файлов, без каких-либо параметров, она будет показывать вам количество строк, слов и байтов одновременно.

Wc alex.txt 15 45 366 alex.txt

В приведенном выше виде:

  • 15 – количество строк
  • 45 – количество слов
  • 366 – количество байтов

Теперь, когда вы знаете параметры команды wc, давайте посмотрим некоторые примеры команды wc.

1. Подсчитайте количество строк в файле

Если вы просто хотите узнать количество строк в текстовом файле, вы можете использовать команду wc с опцией ‘l’. В основном, она подсчитывает количество строк в файле.

Wc -l alex.txt 20 alex.txt

2. Подсчитайте количество слов в файле

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

Анализ файлов - неотъемлемая часть работы с ними. Иногда возникает необходимость подсчитать количество строк или слов в тексте. С этой задачей эффективно справляется команда wc Linux.

Утилита устанавливается по умолчанию практически во всех дистрибутивах GNU/Linux. В этой статье рассмотрим её функции и применение на практике.

Для запуска утилиты откройте терминал и введите:

Терминал будет ожидать ввода данных. После нажатия комбинации клавиш Ctrl + D командный интерпретатор завершит работу программы и выведет три числа, обозначающих количество строк, слов и байт введённой информации.

Утилита может обрабатывать файлы. Стандартная инструкция выглядит так:

  • wc - имя утилиты;
  • file - название обрабатываемого файла.

Программа также может принимать параметры для анализа отдельных значений. Наиболее используемые из них приведены в таблице ниже:

Под объектом следует понимать файл или данные, полученные на стандартный поток ввода.

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

Применение команды wc

Обработка стандартного потока ввода с завершением через Ctrl + D :

Согласно анализу, было введено 4 строки, содержащих 5 слов, объёмом в 35 байт.

Перенаправление потока вывода на вход wc :

Обработка всех файлов с расширением .sh в текущем каталоге:

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

Выведем только количество символов и строк двух файлов:

Обратите внимание: порядок указания параметров не влияет на итоговый вид информации. Программа всегда выводит данные в виде СТРОК - СЛОВ - БАЙТ (СИМВОЛОВ) [- ФАЙЛ] . Если какой-то параметр будет отсутствовать, его столбец просто проигнорируется, не задевая остальные. Количество символов будет стоять первым, если в команде содержался и вывод байт.

Вывод

Команда wc Linux является эффективным инструментом при анализе файлов в GNU/Linux. Она может обрабатывать как стандартный поток ввода, так и несколько файлов одновременно. Для извлечения конкретных данных используются параметры командной строки.

Похожие записи:



Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

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

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

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

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

$ echo "firstfile" > copyme

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

$ echo "hi there" | wc
1 2 9
Символ | используется для подключения выхода команды слева, ко входу команды справа от него. В примере выше, команда 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 - инструмент трансляции (преобразования) символов; используется для отображения определенных символов во входном потоке на заданные символы в выходной поток.

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

awk - искуссный язык построчного разбора и обработки входного потока по заданным шаблонам. Чтобы узнать больше о awk прочитайте следующую серию руководств на сайте Funtoo:
od разработан для представления входного потока в восьмеричном, шестнадцатеричном и т.д. формате.

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

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

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

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

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

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

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

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

$ sort <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.

Так то лучше!

Спасибо Dmitry Minsky ([email protected]) за перевод.

Об авторах

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 .

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее - платформа HP ePrint . В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

Команда wc без опций и аргумента

Будучи запущена без опций и аргумента, команда wc подсчитывает число строк, слов и байт в стандартном вводе (например, с клавиатуры):

Wc (Enter) когда (Enter) мы были (Enter) молоды (Enter + Ctrl-d) 3 4 38

На выходе команды мы видим три числа: количество строк (3), количество слов (4) и количество байт (38).

Говорят, что раньше (до повсеместного распространения Юникода, где символ может быть представлен двумя байтами), команда wc по умолчанию сообщала число строк, слов и символов соответственно. Некоторые руководства сохраняют эту ошибку по сей день. Имея дело с английским текстом, нетрудно ошибиться, так как английские буквы представлены даже в Юникоде одним байтом, и их количество совпадет с количеством байт, что не гарантировано для прочих символов в тексте.

Тут необходимо прояснить, что "словом" команда wc считает непрерывную последовательность символов, отделенную от других символов одним или более пробелом, знаком табуляции, и/или символом новой строки (невидимый символ, возникающий при нажатии клавиши Enter). При подсчете количества символов учитываются все вышеперечисленные категории.

Строкой считается последовательность "слов", заканчивающаяся символом новой строки.

Работа с файлами

Команда wc принимает файл в качестве аргумента:

Wc onegin.txt 14 61 668 onegin.txt

Это 14 строк первой строфы "Евгения Онегина".

Команда wc принимает в качестве аргумента любое количество файлов. Эти файлы указываются через пробел, при необходимости со всеми своими путями (path):

Wc /etc/fstab /boot/grub/menu.lst /home/ya/Desktop/wc-ru.txt 11 66 918 /etc/fstab 34 102 776 /boot/grub/menu.lst 69 185 2445 /home/ya/Desktop/wc-ru.txt 114 353 4139 итого

Команда укажет параметры каждого из файлов, а в конце суммирует итог.

Можно также задать подсчет параметров всех файлов в директории:

~/Desktop$ wc * wc: Documents: Is a directory 0 0 0 Documents 9 14 207 MyComputer.desktop 3 4 38 mol.txt 14 61 668 onegin.txt 114 156 1715 shema.txt 150 318 5066 trash.desktop wc: wc: Is a directory 0 0 0 wc 69 185 2445 wc-ru.txt 15 18 258 Дисковод 1 0 2 Текстовый файл 375 756 10399 итого

но это имеет смысл делать только с директориями, содержащими лишь текстовые файлы. Если в директории будут находиться бинарные или.html файлы, то появится множество сообщений типа "Invalid or incomplete multibyte or wide character", что можно перевести как "Поврежденные, либо неполные, либо расширенные символы". А вот самостоятельно выбирать только текстовые файлы команда wc не умеет.

Опции команды wc

У команды немного опций, и все они вполне понятны без долгих объяснений.

Опция -l

Подсчитывает только количество строк:

Wc -l onegin.txt 14 onegin.txt

Полезным представляется использование этой опции в составе программного канала с командой ls для подсчета количества файлов в директориях:

~/Desktop$ ls | wc -l 10

Это подсчет файлов в текущей директории, а вот подсчет всех файлов рекурсивно (включая подкаталоги и подкаталоги подкаталогов):

Ls -R /home | wc -l 355

Задание: Подсчитайте, сколько всего файлов в вашей системе. (Ответ в приложении 1)

Опция -L

Подсчитает длину наибольшей строки (правда почему-то не укажет ее номера):

Wc -L onegin.txt 31 onegin.txt

Опция -m

Подсчитывает только количество символов (включая пробелы, табуляцию, символы новой строки):

Wc -m onegin.txt 373 onegin.txt

Опция -c

Подсчитывает байты в указанном потоке данных. Я не случайно написал так обще: "потоке данных", потому что эта опция, в отличие от прочих опций команды wc, может применяться к любым данным, а не только к текстовым. Скажем, она может подсчитать число байт в любом двоичном файле, даже графическом:

Wc -c top.jpg 29559 top.jpg

И даже определить размер раздела жесткого диска:

Wc -c /dev/hdb1 1003451904 /dev/hdb1

Верно, размер этого раздела около 1Гб. (Это у меня загрузочный раздел, поэтому такой маленький).

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

Dmesg | grep -i "usb" | wc -c 2130

Словом, эта опция команды wc дает простор для исследования!

Опции --help и --version общеизвестны и обсуждаться не будут.

Команда wc и символы кириллицы

За время работы по написанию этой статьи, я не заметил никакой разницы в работе с латиницей и с кириллицей.

Резюме программы wc

Простая в освоении и полезная программа. Безусловно найдет применение в качестве программы-фильтра в составе программных каналов (pipes).

Приложения

Затем набрать следующее заклинание:

Ls -R / | wc -l 295092

Это займет несколько минут в зависимости от производительности вашей системы.

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

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

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

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

$ echo "firstfile" > copyme

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

$ echo "hi there" | wc
1 2 9
Символ | используется для подключения выхода команды слева, ко входу команды справа от него. В примере выше, команда 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 - инструмент трансляции (преобразования) символов; используется для отображения определенных символов во входном потоке на заданные символы в выходной поток.

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

awk - искуссный язык построчного разбора и обработки входного потока по заданным шаблонам. Чтобы узнать больше о awk прочитайте следующую серию руководств на сайте Funtoo:
od разработан для представления входного потока в восьмеричном, шестнадцатеричном и т.д. формате.

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

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

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

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

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

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

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

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

$ sort <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.

Так то лучше!

Спасибо Dmitry Minsky ([email protected]) за перевод.

Об авторах

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 .

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее - платформа HP ePrint . В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
Понравилась статья? Поделитесь ей