Linux команда xargs.
Оглавление:
- Как использовать Linux
xargsCommand - Как просмотреть команду и запросить пользователя
- Как ограничить количество аргументов
- Как запустить несколько команд
- Как указать разделитель
- Как читать элементы из файла
- Использование
xargsсfind - Использование xargs для обрезки пробельных символов
- Вывод
Утилита
xargs
позволяет создавать и выполнять команды из стандартного ввода. Обычно используется в сочетании с другими командами через трубопровод.
С помощью
xargs
вы можете предоставить стандартный ввод в качестве аргумента для утилит командной строки, таких как
mkdir
и
rm
.
В этом уроке мы рассмотрим основы использования команды
xargs
.
Как использовать Linux
xargs
Command
xargs
читает аргументы из стандартного ввода, разделенные пробелами или символами новой строки, и выполняет указанную команду, используя входные данные в качестве аргументов команды. Если команда не указана, по умолчанию используется
/bin/echo
.
Синтаксис команды
xargs
следующий:
xargs]
Самый простой пример использования
xargs
- передать несколько строк, разделенных
xargs
с помощью канала в
xargs
и запустить команду, которая будет использовать эти строки в качестве аргументов.
echo "file1 file2 file3" | xargs touch
В приведенном выше примере мы передаем стандартный ввод в
xargs
, и команда
touch
запускается для каждого аргумента, создавая три файла. Это так же, как если бы вы запустили:
Как просмотреть команду и запросить пользователя
Чтобы напечатать команду на терминале перед ее выполнением, используйте опцию
-t
(
--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
Введите
y
или
Y
чтобы подтвердить и выполнить команду:
touch file1 file2 file3 ?…y
Эта опция полезна при выполнении деструктивных команд.
Как ограничить количество аргументов
По умолчанию количество аргументов, передаваемых команде, определяется системным пределом.
Опция
-n
(
--max-args
) указывает количество аргументов, передаваемых данной команде.
xargs
запускает указанную команду столько раз, сколько необходимо, пока все аргументы не будут исчерпаны.
В следующем примере количество аргументов, считываемых из стандартного ввода, ограничено 1.
echo "file1 file2 file3" | xargs -n 1 -t touch
Как вы можете видеть из подробного вывода ниже, сенсорная команда выполняется отдельно для каждого аргумента:
touch file1 touch file2 touch file3
Как запустить несколько команд
Чтобы запустить несколько команд с
xargs
, используйте опцию
-I
. Он работает, определяя
replace-str
после опции
-I
и все вхождения
replace-str
заменяются аргументом, переданным в xargs.
В следующем примере
xargs
будут запущены две команды, сначала он создаст файлы с помощью
touch
, а затем выведет список файлов с помощью команды
ls
:
echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3
Распространенным выбором для
replace-str
является
%
. Однако вы можете использовать другой заполнитель, например,
ARGS
:
echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'
Как указать разделитель
Используйте параметр
-d
(
--delimiter
), чтобы установить пользовательский разделитель, который может быть либо отдельным символом, либо escape-последовательностью, начинающейся с
\
.
Следующий пример мы используем
;
в качестве разделителя:
echo "file1;file2;file3" | xargs -d ; -t touch
Как читать элементы из файла
Команда xargs также может читать элементы из файла вместо стандартного ввода. Для этого используйте параметр
-a
(
--arg-file
), за которым следует имя файла.
В следующем примере команда
xargs
будет читать файл
ips.txt
и пинговать каждый IP-адрес.
8.8.8.8 1.1.1.1
Мы также используем опцию
-L 1
, которая инструктирует
xargs
читать по одной строке за раз. Если эта опция не
xargs
передает все IP-адреса одной команде
ping
.
xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms
Использование
xargs
с
find
xargs
чаще всего используется в сочетании с командой
find
. Вы можете использовать
find
для поиска определенных файлов, а затем использовать
xargs
для выполнения операций с этими файлами.
Чтобы избежать проблем с именами файлов, которые содержат символы новой строки или другие специальные символы, всегда используйте параметр find
-print0
, который заставляет
find
печатать полное имя файла с последующим нулевым символом. Этот вывод может быть правильно интерпретирован
xargs
с помощью
xargs
-0
, (
--null
).
В следующем примере команда
find
распечатает полные имена всех файлов в каталоге
/var/www/.cache
а
xargs
передаст пути к файлам команде
rm
:
find /var/www/.cache -type f -print0 | xargs -0 rm -f
Использование xargs для обрезки пробельных символов
xargs
также можно использовать как инструмент для удаления пробелов с обеих сторон заданной строки. Просто
xargs
строку в команду
xargs
, и она выполнит обрезку:
echo " Long line " | xargs
Long line
Это может быть полезно при сравнении строк в сценариях оболочки.
#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi
Strings are not equal. Strings are equal.
Вывод
xargs
- это утилита командной строки в Linux, которая позволяет вам создавать и выполнять команды.
Для получения более подробной информации о каждой опции
xargs
прочитайте справочную страницу xargs.
Команда Chmod в Linux (права доступа к файлам)
В Linux доступ к файлам управляется через права доступа к файлам, атрибуты и права собственности. В этом руководстве рассказывается, как использовать команду chmod для изменения прав доступа к файлам и каталогам.
Команда Chgrp в Linux (сменить группу)
В Linux каждый файл связан с владельцем и группой и имеет разрешения, которые определяют, какие пользователи могут читать, записывать или выполнять файл. Команда chgrpc меняет групповое владение данными файлами.
Команда cp в linux (копирование файлов)
cp - утилита командной строки для копирования файлов и каталогов в системах Unix и Linux.







