Weboldal keresés

12 gyakorlati példa a Linux Xargs parancsra kezdőknek


Az Xargs egy nagyszerű parancs, amely beolvassa az adatfolyamokat a szabványos bemenetről, majd parancssorokat generál és végrehajt; Ez azt jelenti, hogy felveheti egy parancs kimenetét, és átadhatja egy másik parancs argumentumaként. Ha nincs parancs megadva, az xargs alapértelmezés szerint végrehajtja az echo parancsot. Sokan arra is utasítják, hogy stdin helyett fájlból olvasson adatokat.

Az xargs számos módon hasznos a parancssor napi használatában. Ebben a cikkben 12 gyakorlati Linux xargs parancs példát mutatunk be kezdőknek.

1. Az első példa bemutatja, hogyan találhatja meg az összes .png képet, és hogyan archiválhatja őket a tar segédprogrammal az alábbiak szerint.

Itt a -print0 műveleti parancs lehetővé teszi a teljes fájl elérési út kinyomtatását a szabványos kimeneten, amelyet egy null karakter követ, és a -0 xargs jelző hatékonyan kezeli a fájlnevekben lévő helyet.

find Pictures/tecmint/ -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz

2. Az ls parancs muti-line kimenetét egysorossá is konvertálhatja az xargs használatával az alábbiak szerint.

ls -1 Pictures/tecmint/
ls -1 Pictures/tecmint/ | xargs

3. A rendszeren lévő összes Linux felhasználói fiók kompakt listájának létrehozásához használja a következő parancsot.

cut -d: -f1 < /etc/passwd | sort | xargs

4. Feltéve, hogy van egy listája a fájlokról, és tudni szeretné a sorok/szavak/karakterek számát a lista egyes fájljaiban, használhatja az ls parancsot és xargs erre a célra az alábbiak szerint.

ls *upload* | xargs wc

5. A Xarags lehetővé teszi egy könyvtár megkeresését és rekurzív eltávolítását is, például a következő parancs rekurzív módon eltávolítja a DomTerm elemet a Letöltések könyvtárból.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 /bin/rm -v -rf "{}"

6. Az előző parancshoz hasonlóan itt is megkeresheti az összes net_stats nevű fájlt az aktuális könyvtárban, és törölheti őket.

find . -name "net_stats" -type f -print0 | xargs -0 /bin/rm -v -rf "{}"

7. Ezután az xargs használatával másoljon egy fájlt több könyvtárba egyszerre; ebben a példában megpróbáljuk átmásolni a fájlt.

echo ./Templates/ ./Documents/ | xargs -n 1 cp -v ./Downloads/SIC_Template.xlsx 

8. Használhatja a find parancsot, az xargs és az átnevezési parancsokat együtt is, hogy egy adott könyvtárban található összes fájlt vagy alkönyvtárat kisbetűre nevezze át az alábbiak szerint.

find Documnets -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

9. Íme egy másik hasznos példa az xargs használatára, amely bemutatja, hogyan kell törölni egy könyvtár összes fájlját, kivéve egy vagy néhány, adott kiterjesztésű fájlt.

find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

10. Amint azt korábban említettük, a -a jelzővel utasíthatja az xargs elemet, hogy olvassa el az elemeket egy fájlból a normál bevitel helyett.

xargs -a rss_links.txt

11. Engedélyezheti a bőbeszédűséget a -t jelzővel, amely megmondja az xargs-nak, hogy a végrehajtás előtt kinyomtassa a parancssort a szabványos hibakimeneten.

find Downloads -name "DomTerm" -type d -print0 | xargs -0 -t /bin/rm -rf "{}"

12. Alapértelmezés szerint az xargs szóközökkel fejezi be/elhatárolja az elemeket, a -d jelzővel beállíthatja a határolót, amely lehet egyetlen karakter, egy C-stílusú karakteres escape kód, például \n, vagy egy oktális vagy hexadecimális escape kód.

Ezen túlmenően a -p jelzővel az ábrán látható módon rákérdezhet a felhasználóra, hogy futtasson-e minden parancssort, és olvasson-e egy sort a terminálból (egyszerűen írja be az y parancsot igen vagy n nem esetén).

echo ./Templates/ ./Documents/ | xargs -p -n 1 cp -v ./Downloads/SIC_Template.xlsx 

További információért olvassa el az xargs kézikönyvoldalt.

man xargs 

Egyelőre ennyi! Az Xargs egy hatékony segédprogram parancssor létrehozásához; segíthet abban, hogy egy parancs kimenetét egy másik parancs argumentumaként adja át a feldolgozáshoz. Ebben a cikkben 12 gyakorlati xargs parancs példát mutatunk be kezdőknek. Ossza meg velünk gondolatait vagy kérdéseit az alábbi visszajelzési űrlapon keresztül.