Te nawiasy klamrowe są pozostawione same przez uderzenie; należą one do find
i xargs
, odpowiednio, i są opisane w ich roboczo stronach.
man find
-exec
Komenda ;
Wykonaj polecenie ; true, jeśli zwracany jest status 0. Wszystkie następujące argumenty do znalezienia są uważane za argumenty polecenia, dopóki nie zostanie znaleziony argument składający się z ;
. Ciąg {}
jest zastępowany bieżącą nazwą pliku przetwarzaną wszędzie tam, gdzie występuje w argumentach polecenia, a nie tylko w argumentach, w których jest on sam, jak w niektórych wersjach find
. Obie te konstrukcje mogą wymagać ucieczki (za pomocą a \
) lub cytowania, aby uchronić je przed rozszerzeniem przez powłokę. Przykłady użycia tej -exec
opcji znajdują się w sekcji PRZYKŁADY . Podane
poleceniejest uruchamiany raz dla każdego dopasowanego pliku. Polecenie jest wykonywane w katalogu startowym. Istnieją nieuniknione problemy bezpieczeństwa związane z korzystaniem z -exec
akcji; -execdir
zamiast tego powinieneś użyć tej opcji.
-exec
Komenda {}
+
Ten wariant -exec
akcji uruchamia określone polecenie na wybranych plikach, ale linia poleceń jest budowana przez dołączenie każdej wybranej nazwy pliku na końcu; całkowita liczba wywołań polecenia będzie znacznie mniejsza niż liczba dopasowanych plików. Wiersz poleceń jest budowany w taki sam sposób, jak xargs
wiersze poleceń. {}
W poleceniu dozwolona jest tylko jedna instancja Polecenie jest wykonywane w katalogu startowym. Jeśli find
wystąpi błąd, może to czasami spowodować natychmiastowe wyjście, więc niektóre oczekujące polecenia mogą w ogóle nie zostać uruchomione. Ten wariant -exec
zawsze zwraca wartość true.
-execdir
Komenda ;
-execdir
Komenda {}
+
Podobnie -exec
, ale określone polecenie jest uruchamiane z podkatalogu zawierającego dopasowany plik, który zwykle nie jest katalogiem, w którym zacząłeś znajdować. Jest to znacznie bezpieczniejsza metoda wywoływania poleceń, ponieważ pozwala uniknąć warunków wyścigu podczas rozwiązywania ścieżek do dopasowanych plików. Podobnie jak w przypadku -exec
akcji,
+
forma -execdir
utworzy wiersz poleceń do przetworzenia więcej niż jednego dopasowanego pliku, ale każde wywołanie polecenia wyświetli tylko pliki, które istnieją w tym samym podkatalogu. Jeśli skorzystasz z tej opcji, musisz upewnić się, że twoja $PATH
zmienna środowiskowa nie odwołuje się.
; w przeciwnym razie atakujący może uruchomić dowolne polecenia, pozostawiając odpowiednio nazwany plik w katalogu, w którym będziesz działać -execdir
. To samo dotyczy wpisów, $PATH
które są puste lub które nie są absolutnymi nazwami katalogów. Jeśli find
wystąpi błąd, może to czasami spowodować natychmiastowe wyjście, więc niektóre oczekujące polecenia mogą w ogóle nie zostać uruchomione. Wynik działania zależy od tego, +
czy ;
używany jest wariant lub ;
-execdir
polecenie {}
+
zawsze zwraca true, a -execdir
polecenie {}
;
zwraca true tylko wtedy, gdy polecenie zwraca 0.
man xargs
-I
replace-str
Zamień wystąpienie replace-str w argumentach początkowych na nazwy odczytane ze standardowego wejścia. Ponadto, niecytowane puste miejsca nie kończą elementów wejściowych; zamiast tego separatorem jest znak nowej linii. Implikuje -x
i -L
1
.
-i
[ replace-str ], --replace
[ =
replace-str ]
Ta opcja jest synonimem -I
replace-str, jeśli podano replace-str . Jeśli brakuje argumentu replace-str , efekt jest taki sam jak -I{}
. Ta opcja jest przestarzała; użyj -I
zamiast tego.
Edytuj: a tutaj DLACZEGO bash ignoruje te nawiasy klamrowe:
man bash
{
lista;
}
lista jest po prostu wykonywana w bieżącym środowisku powłoki. lista musi być zakończona znakiem nowej linii lub średnikiem. Jest to znane jako polecenie grupowe. Status powrotu to status wyjścia z listy. Zauważ, że w przeciwieństwie do metaznaków ( i ) , { i } są słowami zastrzeżonymi i muszą wystąpić, gdy słowo zastrzeżone może zostać rozpoznane. Ponieważ nie powodują podziału słów, muszą być oddzielone od listy spacją lub innym metaznakiem powłoki.
Dla podkreślenia: lista musi być zakończona znakiem nowej linii lub średnikiem .
{}
- co oznacza,targets
że działając nafind
polecenie, usuwają /rm
odnajdują pliki.