Jak używać polecenia xargs
Polecenie xargs jest potężnym narzędziem w systemach Unix/Linux, które służy do tworzenia i wykonywania poleceń przy użyciu standardowego wejścia. Pobiera dane wejściowe z polecenia lub pliku i przekazuje je jako argumenty do innego polecenia. Jest to szczególnie przydatne podczas obsługi dużej liczby plików, argumentów lub danych, które muszą być przetwarzane przez inne polecenia.
W tym artykule zbadamy, jak działa xargs, jego praktyczne przypadki użycia i jak zaimplementować go w różnych scenariuszach.
Podstawowe zastosowanie xargs
Polecenie xargs odczytuje elementy ze standardowego wejścia (stdin), zwykle oddzielone białymi znakami lub znakami nowej linii, i przekazuje je jako argumenty do określonego polecenia. Najbardziej podstawowe użycie xargs wygląda następująco:
Na przykład, jeśli chcesz usunąć wszystkie pliki .txt w katalogu za pomocą find i rm, możesz użyć:
Tutaj find generuje listę plików .txt, a xargs przekazuje tę listę jako argumenty do polecenia rm, usuwając pliki.
Praktyczne przykłady użycia xargs
1. Przekazywanie argumentów do polecenia
Najczęstszym zastosowaniem xargs jest przekazywanie dużej listy argumentów do polecenia. Na przykład, można utworzyć wiele plików za pomocą touch:
To polecenie tworzy trzy pliki: plik1 . txt, plik2.txt i plik3.txt.
2. Usuwanie plików znalezionych przez find
Potężna kombinacja find i xargs pozwala usuwać pliki na podstawie określonych kryteriów. Na przykład, aby znaleźć i usunąć wszystkie pliki .log w katalogu:
Spowoduje to znalezienie wszystkich plików .log, a następnie ich usunięcie. Bez xargs, musiałbyś obsłużyć ten proces ręcznie lub użyć bardziej skomplikowanych konstrukcji.
3. Ograniczanie liczby argumentów
Domyślnie xargs przekazuje jak najwięcej argumentów do polecenia za jednym razem. Można jednak ograniczyć liczbę przekazywanych argumentów za pomocą opcji -n. Na przykład:
Wyjście:
Ogranicza to echo do dwóch argumentów na wykonanie polecenia, dzieląc dane wejściowe na mniejsze części.
4. Potwierdzanie wykonania polecenia
Jeśli chcesz wykonać polecenie interaktywnie, prosząc o potwierdzenie przed uruchomieniem polecenia dla każdego argumentu, użyj opcji -p:
Spowoduje to zapytanie o potwierdzenie przed usunięciem każdego pliku.
5. Obsługa plików ze znakami specjalnymi
Czasami nazwy plików lub dane mogą zawierać spacje lub znaki specjalne. W takich przypadkach lepiej jest użyć find z opcją -print0 i xargs z opcją -0, aby upewnić się, że dane wejściowe są przetwarzane poprawnie:
Zapewnia to, że nazwy plików zawierające spacje lub znaki specjalne są poprawnie przekazywane do polecenia rm.
6. Używanie xargs z grep
Możesz połączyć xargs z grep, aby wyszukać wzorzec w wielu plikach. Na przykład:
To polecenie znajduje wszystkie pliki
.txt
7. Łączenie wielu poleceń za pomocą xargs
Możesz użyć xargs do wykonania wielu poleceń. Na przykład, jeśli chcesz zarówno wyświetlić listę, jak i usunąć zestaw plików:
Tutaj tee wyświetla listę plików .tmp na terminalu (przez /dev/tty), a xargs przekazuje tę listę do polecenia rm w celu usunięcia.
Wspólne opcje z xargs
- –n : Ogranicza liczbę argumentów przekazywanych do polecenia na wykonanie. Na przykład, xargs -n 2 przekaże dwa argumenty na raz.
- –0: Służy do obsługi danych wejściowych zakończonych zerem, zwykle z find przy użyciu -print0. Przydatne do obsługi nazw plików zawierających spacje lub znaki specjalne.
- –I {}: Zastępuje wystąpienia {} argumentami ze stdin. Jest to przydatne, gdy chcemy umieścić argumenty w określonym miejscu polecenia, a nie tylko na jego końcu.
- –p: Pyta użytkownika o potwierdzenie przed wykonaniem polecenia.
- –t: Wypisuje polecenie do terminala przed jego wykonaniem, przydatne do debugowania.
Dlaczego warto używać xargs?
- Wydajność: Gdy mamy do czynienia z dużą liczbą plików lub danych wejściowych, xargs pomaga zmniejszyć narzut związany z wykonywaniem wielu poleceń poprzez grupowanie argumentów.
- Elastyczność: xargs zapewnia elastyczność, umożliwiając łączenie poleceń w potoku, płynnie przekazując dane między nimi.
- Automatyzacja: Podczas pisania skryptów powłoki, xargs jest niezbędny do automatyzacji zadań, które wymagają przetwarzania wielu danych wejściowych. Sprawia, że zarządzanie listami plików, listami argumentów i strumieniami danych jest proste i wydajne.
Podsumowanie
Polecenie xargs jest potężnym narzędziem, które poprawia sposób interakcji z innymi poleceniami w systemach Unix/Linux. Niezależnie od tego, czy masz do czynienia z zarządzaniem plikami, przetwarzaniem strumieni danych, czy wykonywaniem powtarzalnych zadań, xargs usprawnia proces. Ucząc się wykorzystywać jego opcje i łącząc go z innymi poleceniami, takimi jak find, grep czy rm, możesz znacznie poprawić swoją produktywność w terminalu.
Jeśli wcześniej nie korzystałeś z xargs, teraz jest idealny czas, aby go wypróbować i zobaczyć, jak może uprościć operacje w wierszu poleceń.