Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

xargs

Ассоциация xargs Команда выполняет интересную функцию. Он принимает ввод от стандартного ввода и преобразует его в список аргументов для указанной команды. В нашем примере мы бы использовали это так:


find ~ -type f -name 'foo *' -print | xargs ls -l

find ~ -type f -name 'foo *' -print | xargs ls -l


-rwxr-xr-x 1 мне

-rw-r - r-- 1 меня

-rwxr-xr-x 1 мне

-rw-r - r-- 1 меня


изображение

мне 224 2007-10-29, 18:44 / home / me / bin / foo

мне 224 2007-10-29, 18:44 / home / me / bin / foo

me

me

0 2016 09:19 /home/me/foo.txt

0 2016 09:19 /home/me/foo.txt

Здесь мы видим результат найдите команда передана в xargs который, в свою очередь, составляет список аргументов для ls команда, а затем выполняет ее.


изображение

Примечание: Хотя количество аргументов, которые можно поместить в командную строку, довольно велико, оно не безгранично. Возможно создание слишком длинных команд для оболочки. Когда длина командной строки превышает максимальную длину, поддерживаемую системой, xargs выполняет указанную команду с максимально возможным числом аргументов, а затем повторяет этот процесс до тех пор, пока стандартный ввод не будет исчерпан. Чтобы увидеть максимальный размер командной строки, выполните xargs с

Параметр --show-limits.


изображение


изображение

Работа со смешными именами файлов

Unix-подобные системы допускают встраивание пробелов (и даже новых строк!) В имена файлов. Это вызывает проблемы для таких программ, как xargs которые создают списки аргументов для других программ. Вложенный пробел будет рассматриваться как разделитель, и результирующая команда будет интерпретировать каждое слово, разделенное пробелами, как отдельный аргумент. Чтобы преодолеть это, найдите и xargs разрешить необязательное использование нулевой символ как разделитель аргументов. Нулевой символ определяется в ASCII как символ, представленный числом ноль (в отличие, например, от символа пробела, который определен в ASCII как символ, представленный числом 32). В найдите команда обеспечивает действие -print0, который производит вывод, разделенный нулем, и xargs команда имеет --нулевой опция, которая принимает ввод, разделенный нулем. Вот пример:

найти ~ -iname '* .jpg' -print0 | xargs --null ls -l

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


Лучшие облачные вычисления для ОС в OnWorks: