Руководство по использованию GNU Parallel

Xargs is a great command that reads streams of data from standard input, then generates and executes command lines; meaning it can take output of a command and passes it as argument of another command. If no command is specified, xargs executes echo by default. You many also instruct it to read data from a file instead of stdin.

Параллельный запуск процессов

Xargs часто используется для параллельного запуска нескольких процессов. Вот так, например, можно одновременно cжать несколько директорий в :

$ echo dir1 dir2 dir3 | xargs -P 3 -I NAME tar czf NAME

В приведенном примере используется ключ -P. Он указывает максимальное количество процессов, которые будут выполняться одновременно. Предположим, что у нас на входе имеется 10 аргументов. Если мы введём команду xargs с ключoм -P 3, то будет запущено 3 экземпляра команды, следующей после xargs, с каждым из этих аргументов.

С помощью xargs можно также параллельно загружать из Интернета множество файлов:

$ wget -nv <ссылка> | egrep -o «http://]*.jpg» | xargs -P 10 -n 1 wget -nv

В приведенном примере с указанного адреса будут скачаны все графические файлы с расширением jpg; ключ -P указывает, что требуется скачивать по 10 файлов одновременно.

Фильтры в Linux

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

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

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

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

СКРИН

Head — это программа, которая печатает первые строки ввода. По умолчанию он напечатает первые 10 строк, но мы можем изменить это с помощью аргумента командной строки.

head [-количество строк для печати] [путь]

Данная команда противоположна head. Tail — это команда, которая печатает последние строки ввода. По умолчанию он напечатает последние 10 строк, но мы можем изменить это с помощью аргумента командной строки.

tail [-количество строк для печати] [путь]

Выше было поведение tail по умолчанию. А ниже указывается заданное количество строк.

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

Читайте также:  Как быстрее выучить ПДД? Правила дорожного движения 2014

sort [-options] [path]

Обозначение чисел в Linux реализуется за счет команды nl.

nl [-options] [путь]

Вот еще несколько полезных опций командной строки.

В приведенном выше примере мы использовали 2 параметра командной строки. Первый -s указывает, что следует печатать после числа. С другой стороны, второй -w указывает, сколько отступов ставить перед числами. Для первого нам нужно было включить пробел как часть того, что было напечатано.

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

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

Фильтры в Linux

wc [-options] [путь]

Иногда вам просто нужно одно из этих значений. -l даст нам только строки, -w даст нам слова, а -m даст нам символы.

Кроме того, Вы можете комбинировать аргументы командной строки.

Cut — это хорошая команда, которую можно использовать, если ваш контент разделен на столбцы и вам нужны только определенные поля.

Фильтры в Linux

вырезать [-опции] [путь]

В нашем примере файла у нас есть данные в 3 столбцах. Допустим, мы хотели только первый столбец.

По умолчанию cut использует символ TAB в качестве разделителя для идентификации полей. Опция -f позволяет нам указать, какое поле мы бы хотели. Если нам нужно 2 или более полей, мы разделяем их запятой, как показано ниже.

Sed расшифровывается как Stream Editor и позволяет эффективно выполнять поиск и замену наших данных. Это довольно мощная команда, но мы будем использовать ее здесь в ее базовом формате.

Фильтры в Linux

sed <выражение> [путь]

Инициал s обозначает замену и определяет действие, которое нужно выполнить. Между первой и второй косой чертой (/) мы размещаем то, что ищем. Затем между вторым и третьим слэшем, чем мы хотим его заменить.

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

uniq [опции] [путь]

Фильтры в Linux

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

Читайте также:  Lightworks: эффективный инструмент для монтажа видео

TAC [путь]

Инструкция по использованию Parallel

Что такое GNU Parallel

GNU parallel — это инструмент оболочки для параллельного выполнения работ используя один или более компьютер.

В качестве работы может быть единичная команда или небольшой скрипт, который должен быть запущен для каждой строки из полученного ввода. Типичным вводом является список файлов, список хостов, список пользователей, список URL, список таблиц. В качестве работы может быть команда, которая считывает по трубе (pipe). GNU parallel затем может разбить ввод на блоки и передать блоки по трубе параллельно в каждую команду.

GNU parallel может заменить вам программы xargs и tee. А также не только заменить циклы (loops), но и сделать их выполнение более быстрым за счёт параллельного выполнения нескольких работ.

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

Как установить GNU Parallel

Parallel присутствует в стандартных репозиториях популярных дистрибутивов Linux.

Для установки в Debain, Linux Mint, Ubuntu, Kali Linux и их производных выполните:

sudo apt install parallel

Для установки в Arch Linux, BlackArch и их производных выполните:

sudo pacman -S parallel

Управление текстом

  • cut file — выделение из файла file указанных последовательностей и отправка на стандартный вывод
  • cat file – отображение содержимого file на стандартный вывод
    • -E — отображение концов строк
    • -n — нумерация строк
  • tac file – отображение содержимого file на стандартный вывод в обратном порядке
  • echo file — отображение содержимого file на стандартный вывод
    • echo string > file запись строки string в файл file (при наличии в файле других строк, файл перезаписывется)
    • echo string >> file ДОзапись строки string в КОНЕЦ файла file (при наличии в файле других строк, строка string дописывается в конец файла file )
    • -e — интерпретировать управляющие символы, такие как (\n — новая строка,\t -горизонтальаня табуляция и т.п.)
  • expand — Конвертирует символы табуляции в пробелы
  • rev  file — Меняет в заданном файле порядок строк на обратный
  • seq — Выдает последовательность чисел из указанного диапазона с указанным значением приращения
  • shred — Удаляет указанные файлы, путем перезаписывания на их место данных по сложным образцам, что усложняет восстановление удаляемых файлов
  • shuf — Перемешивает строки текста
  • sort — сортировка строк текстовых файлов по указанным параметрам
    • -k — указание номера поля, по которому сортируем
    • -t — разделитель
    • -n — числовая сортировка, т.е. сравнение ведётся по числовому значению (используют совместно с параметром -b)
    • -r — сортировка в обратном порядке
    • -R — в произвольном порядке
    • -u — исключение повторяющихся строк
  • tail file – вывести последние 10 строк file
    • -f – вывести содержимое file по мере роста, начинает с последних 10 строк
  • tailf file — аналог tail -f
  • wc File — печатает число строк, слов и байт в файле File
    • -c, —bytes — байтов
    • -m, —chars — символов
    • -l, —lines — строк
    • -L, —max-line-length — число символов в строе максимальной длины
  • tr string1 string2— символьное преобразование символов из string1 в string2(echo mama | tr abcd ABCD)
    • -s — замена повторяющихся символов на один
    • -d — убрать из вывода символы (abcd)
  • unexpand — Конвертирует символы пробелов в символы табуляции
  • uniq — Удаляются все повторяющиеся копии уже имеющихся строк

Работа с текстом

  1. Ctrl + A / Ctrl + E

    Клавиши быстрого перехода в начало (А) и конец (E) строки.

  2. Ctrl + Shift + C / Ctrl + Shift + V

    Это сочетание клавиш в Linux позволит быстро скопировать (C) и вставить (V) текст в терминале.

  3. more / less

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

  4. head / tail

    Пара дополняющих друг друга команд для просмотра на одном экране начала и конца текста. Команда head выдаёт 10 (по умолчанию) первых строк текста, tail — последних. Число строк в обоих случаях меняется с помощью аргумента -n. Оператор -f позволяет отслеживать на экране изменения в файле. Чтобы лог (журнал) файла отображался в режиме реального времени, ввести команду:

    tail –nf,

    Для отслеживания логов нескольких файлов применяется модификация команды — multitail.

  5. grep

    (Global Regular Expression and Print). Ищет текст по заданному шаблону. Это очень полезно, когда надо проанализировать работу команды, которая сопровождается большим объёмом текстовой информации. Шаблон может заполняться строкой или регулярным выражением. Пример:

    alias старое_название новое_название

  6. sort

    Сортировка текстовой информации по заданным показателям. Дополнительные переменные позволяют:

  • -n ­— сортировать строки текста по числовому значению;
  • du ­— по размеру;
  • -r ­— применять обратную сортировку;
  • -u ­— удалять дубликаты при сортировке.
  1. wc

    (Word Count). Программа для подсчета заданных параметров в тексте. Считает такие показатели, как символы, слова, строки и байты.

  2. diff

    (Difference). Производит построчное сравнение двух текстовых файлов, выводя различия между ними. Алгоритм работы:

    diff файл_№1 файл_№2

    Различия между двумя версиями файлов отмечают такие символы, как:

  • c — изменённые строки;
  • d — удалённые строки;
  • а —новые строки.