Android

Linux'ta Xargs komutu

Linux vs Windows vs MacOS для работы. Какой ЛИНУКС выбрать в 2020 для рабочего компьютера?

Linux vs Windows vs MacOS для работы. Какой ЛИНУКС выбрать в 2020 для рабочего компьютера?

İçindekiler:

Anonim

xargs yardımcı programı, standart girdiden komutlar oluşturmanıza ve yürütmenize olanak tanır. Genellikle borular yoluyla diğer komutlarla birlikte kullanılır.

xargs ile mkdir ve rm gibi komut satırı yardımcı programlarına bağımsız değişken olarak standart girdi sağlayabilirsiniz.

Bu öğreticide, xargs komutunu kullanmanın temellerini ele alacağız.

Linux xargs Komutunu Kullanma

xargs , standart girdideki bağımsız değişkenleri boşluklarla veya satırsonlarıyla ayrılmış olarak okur ve girdiyi komutun bağımsız değişkenleri olarak kullanarak belirtilen komutu yürütür. Herhangi bir komut verilmezse, varsayılan /bin/echo .

xargs komutunun sözdizimi aşağıdaki gibidir:

xargs]

xargs kullanmanın en temel örneği, xargs pipe kullanarak boşlukla ayrılmış birkaç dizeyi xargs bu dizeleri argüman olarak kullanacak bir komut çalıştırmak olacaktır.

echo "file1 file2 file3" | xargs touch

Yukarıdaki örnekte, standart girdiyi xargs ve her bağımsız değişken için touch komutu üç dosya oluşturarak çalıştırılıyor. Bu, çalıştırdığınız gibi:

touch file1 file2 file3

Komut Nasıl Görüntülenir ve Kullanıcıya Sorulur

Komutu çalıştırmadan önce terminalde yazdırmak için -t ( --verbose ) seçeneğini kullanın:

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Onaylamak ve komutu çalıştırmak için y veya Y yazın:

touch file1 file2 file3 ?…y

Bu seçenek, yıkıcı komutları yürütürken kullanışlıdır.

Bağımsız Değişken Sayısını Sınırlama

Varsayılan olarak, komuta iletilen bağımsız değişken sayısı sistemin sınırı tarafından belirlenir.

-n ( --max-args ) seçeneği, verilen komuta iletilecek bağımsız değişken sayısını belirtir. xargs belirtilen komutu tüm argümanlar bitene kadar gerektiği kadar çalıştırır.

Aşağıdaki örnekte, standart girdiden okunan bağımsız değişken sayısı 1 ile sınırlıdır.

echo "file1 file2 file3" | xargs -n 1 -t touch

Aşağıdaki ayrıntılı çıktıdan görebileceğiniz gibi, touch komutu her bağımsız değişken için ayrı olarak yürütülür:

touch file1 touch file2 touch file3

Birden Çok Komut Nasıl Çalıştırılır

xargs ile birden fazla komut çalıştırmak için -I seçeneğini kullanın. -I seçeneğinden sonra bir replace-str tanımlayarak çalışır ve replace-str tüm oluşumları, xargs öğesine iletilen argüman ile değiştirilir.

Aşağıdaki xargs örneği iki komutu çalıştırır, önce touch kullanarak dosyaları oluşturur ve sonra dosyaları ls komutuyla listeler:

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 için ortak bir seçim % . Ancak, başka bir yer tutucu kullanabilirsiniz, örneğin ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Bir Sınırlayıcı Nasıl Belirtilir

\ --delimiter başlayan tek bir karakter veya çıkış sırası olabilecek özel bir sınırlayıcı ayarlamak için -d ( --delimiter ) seçeneğini kullanın.

Aşağıdaki örneği kullanıyoruz ; sınırlayıcı olarak:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

Dosyadan Öğeler Nasıl Okunur

Xargs komutu, standart girdi yerine dosyadaki öğeleri de okuyabilir. Bunu yapmak için önce -a ( --arg-file ) seçeneğini ve ardından dosya adını kullanın.

Aşağıdaki örnekte, xargs komutu ips.txt dosyasını okuyacak ve her IP Adresine ping ips.txt .

ips.txt

8.8.8.8 1.1.1.1

Ayrıca xargs aynı anda bir satır okuma talimatı veren -L 1 seçeneğini de kullanıyoruz. Bu seçenek atlanırsa, xargs tüm IP'leri tek bir ping komutuna 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 ile xargs kullanma

xargs çoğunlukla find komutuyla birlikte kullanılır. Belirli dosyaları aramak için find xargs kullanabilir ve ardından bu dosyalar üzerinde işlem yapmak için xargs kullanabilirsiniz.

Yeni satır veya diğer özel karakterler içeren dosya adlarıyla ilgili sorunları önlemek için, her zaman find -print0 seçeneğini kullanın; Bu çıktı -0 , ( --null ) seçeneği kullanılarak xargs tarafından doğru olarak yorumlanabilir.

Aşağıdaki örnekte find , /var/www/.cache dizinindeki tüm dosyaların tam adlarını yazdıracak ve xargs dosya yollarını rm komutuna geçirecektir:

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Boşluk Karakterlerini Kırpmak için xargs Kullanma

xargs , belirli bir dizenin her iki tarafındaki boşlukları kaldırmak için bir araç olarak da kullanılabilir. xargs komutuna xargs yeterlidir ve xargs yapar:

echo " Long line " | xargs

Long line

Bu, kabuk komut dosyalarındaki dizeleri karşılaştırırken yararlı olabilir.

#!/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.

Sonuç

xargs , Linux üzerinde komutlar oluşturmanızı ve yürütmenizi sağlayan bir komut satırı yardımcı programıdır.

Her xargs seçeneği hakkında daha ayrıntılı bilgi için xargs man sayfasını okuyun.

xargs terminali