[ad_1]
При использовании командной строки вы можете напрямую передать вывод одной программы (например, инструмента, который генерирует некоторые системная информация или статистика) в качестве входных данных для другой программы (например, фильтрация текста или поиск по шаблону такие инструменты, как grep, седили аукдля дальнейшей обработки), используя конвейер.
Двумя наиболее важными утилитами командной строки, которые можно использовать с конвейерами для построения командных строк, являются:
- xargs – считывает потоки данных из стандартного ввода, затем генерирует и выполняет командные строки.
- тройник – читает со стандартного ввода и записывает одновременно на стандартный вывод и в один или несколько файлов. Это больше похоже на команду перенаправления.
Отправка вывода команды другой команде в Linux
В этой простой статье мы расскажем, как построить и выполнить несколько команд из стандартного ввода с использованием трубы, тройник, и xargs команды в линуксе.
Самый простой синтаксис для использования трубка, который вы, возможно, уже видели в командах во многих наших руководствах по Linux, выглядит следующим образом. Но вы можете создать более длинную командную строку с помощью несколько команд Linux.
$ command1 args | command2 args OR # command1 args | command2 args | command3 args ...
Ниже приведен пример использования конвейера для передачи вывода команда dmesg к головная команда.
$ dmesg | head
Xargs — передать вывод команды другой команде
В этом примере лс команда вывод будет передан другой команде с именем xargs которые объединяют несколько строк вывода в одну строку, как показано.
$ ls -1 *.sh $ ls -1 *.sh | xargs
К подсчитать количество строк/слов/символов в каждом файле в списке используйте приведенные ниже команды.
$ ls *.sh | xargs wc -l #count number of lines in each file $ ls *.sh | xargs wc -w #count number of words in each file $ ls *.sh | xargs wc -c #count number of characters in each file $ ls *.sh | xargs wc #count lines, words, and characters in each file
Команда ниже находит и рекурсивно удаляет каталог названный All
в текущем каталоге.
$ find . -name "All" -type d -print0 | xargs -0 /bin/rm -rf "{}"
найти команду с опцией -print0
действие позволяет напечатать полный путь к каталогу в стандартном выводе, за которым следует нулевой символ и -0 xargs
flag имеет дело с пробелами в именах файлов и команда рм -рф чтобы удалить каталог.
Вы можете найти другие практические команда xargs примеры использования в этих статьях:
Дерево — отправить вывод команды в другую команду и сохранить в файл
В этом примере показано, как отправить вывод команды на стандартный вывод и сохранить его в файл; приведенная ниже команда позволяет просмотреть самые запущенные процессы по максимальной загрузке памяти и процессора в Linux.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee topprocs.txt $ cat topprocs.txt
Чтобы добавить данные в существующий файл(ы), передайте -a
флаг.
$ ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head | tee -a topprocs.txt
Дополнительную информацию вы можете найти на тройник и xargs справочные страницы.
$ man xargs $ man tee
Вот и все! Не забудьте ознакомиться с нашей специальной статьей: Команды Linux от A до Z — обзор с примерами.
В этой статье мы описали, как генерировать командные строки, используя трубопроводы; xargsи тройник команды. Вы можете задать любые вопросы или поделиться своими мыслями через форму обратной связи ниже.