[ad_1]
При использовании командной строки вы можете напрямую передать вывод одной программы (например, инструмента, который генерирует некоторые системная информация или статистика) в качестве входных данных для другой программы (например, фильтрация текста или поиск по шаблону такие инструменты, как grep, седили аукдля дальнейшей обработки), используя конвейер.
Двумя наиболее важными утилитами командной строки, которые можно использовать с конвейерами для построения командных строк, являются:
- xargs – считывает потоки данных из стандартного ввода, затем генерирует и выполняет командные строки.
- тройник – читает со стандартного ввода и записывает одновременно на стандартный вывод и в один или несколько файлов. Это больше похоже на команду перенаправления.
В этой простой статье мы расскажем, как построить и выполнить несколько команд из стандартного ввода с использованием трубы, тройник, и xargs команды в линуксе.
Самый простой синтаксис для использования трубка, который вы, возможно, уже видели в командах во многих наших руководствах по 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
флаг имеет дело с пробелами в именах файлов.
Вы можете найти другие практические команда xargs примеры использования в этих статьях:
- Как скопировать файл в несколько каталогов в Linux
- Переименовать все имена файлов и каталогов в нижний регистр в Linux
- 4 способа пакетного преобразования PNG в JPG и наоборот
- 3 способа удалить все файлы в каталоге, кроме одного или нескольких файлов с расширениями
Как использовать Tee с командами в Linux
В этом примере показано, как отправить вывод команды на стандартный вывод и сохранить его в файл; приведенная ниже команда позволяет просмотреть самые запущенные процессы по максимальной загрузке памяти и процессора в 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 и команды tee. Вы можете задать любые вопросы или поделиться своими мыслями через форму обратной связи ниже.