Natrafiłem na polecenie w skrypcie Bash, w którym znalazłem:
find /var/log/abcd -type f
Powyższe polecenie było w kontekście czyszczenia plików dziennika. Wiem co find
robi.
Po obejrzeniu -type f
przejrzałem stronę podręcznika. Widziałem to na stronie podręcznika BASH_BUILTINS (1)
Opis flagi -f pod type
poleceniem to: -
The -f option suppresses shell function lookup, as with the command builtin.
Oto moje pytania:
- Jakie jest zastosowanie
type
? - Jakie jest znaczenie
-f
flagi? - Jaki jest pożytek z korzystania
type
zfind
polecenia?
[EDIT]: - Po przeczytaniu wszystkich komentarzy i odpowiedzi Do tej pory chciałbym wspomnieć przyczynę mojej błędnej interpretacji -type option in command find
Vs type command
. To wszystko się wydarzyło, ponieważ zakładałem i do tej pory widziałem tylko krótkie opcje (Testy w przypadku find
polecenia) z pojedynczym znakiem minus „-” , przykład ls -l
. Przez większość czasu widziałem długie opcje z podwójnym znakiem minus „-” , na przykład ls --version
.
źródło
type
Wbudowanego polecenia nie jest używany przezfind
.-type
Opcjafind
robi coś innego. Zobaczhelp type
iman find
uzyskaj odpowiedzi.Odpowiedzi:
W tym przypadku
type
nie ma to nic wspólnego z wbudowanym bashtype
, ale o tym później.Trochę o „typie”
Wbudowane
type
polecenie BASH zapewnia informacje o poleceniach. A zatem:Składnia jest następująca:
-t
: wpisz tylko typ wydruku, jeśli znaleziono-a
: wydrukuj wszystkie wystąpienia polecenia, zarówno wbudowane, jak i inne.-p
: wydrukuj plik dyskowy, który zostałby wykonany przy wywołaniu polecenia lub nic.Jeśli przyjrzymy się
time
,kill
acat
jako przykład:Teraz określ, że jeśli jesteś w powłoce Bash i
time some_cmd
piszesz,time
używane jest wbudowane bash . Aby skorzystać z systemu,time
możesz to zrobić/usr/bin/time some_cmd
.Jednym ze sposobów często używanych w celu zapewnienia, że system, a nie wbudowane polecenie, jest używany, jest użycie
which
.a następnie użyj
$tt
do wywołania systemutime
.Polecenie, o którym mowa
W tym przypadku
-type
jest to opcja poleceniafind
. Opcja przyjmuje jeden argument, za pomocą którego określa się typ jednostki. PrzykładJest więcej, sprawdź
man find
resztę.Aby wyszukać konkretną opcję, którą możesz zrobić (będąc w człowieku):
Następnie użyj przycisku
n
do następnego, aż go znajdziesz.Trochę o poleceniu powłoki
To trochę osobista interpretacja.
Niektóre z rzeczy, o których warto wspomnieć, w tym konkretnym przypadku, to polecenia, opcje, argumenty i potoki.
Jest to nieco luźno używane, ale w moim słowniku mamy w skrócie:
W specyfikacji polecenia nawiasy kwadratowe służą do określania opcji, a opcjonalnie mniej / więcej niż, służą do określania argumentów. A zatem:
Daje
-a
-b
i-s
jako opcjonalne parametry, afile
wymagany jeden.-t
jest opcjonalny, ale jeśli jest określony, pobiera wymagany argumentbar
. Kropki oznaczają, że może zająć kilka plików.Nie jest to dokładna specyfikacja i często
man
lubhelp
jest wymagana dla pewności.Pozycjonowanie opcji argumentów i danych wejściowych często można pomieszać, ale ogólnie najlepiej jest stosować podejście oparte na pozycji, ponieważ niektóre systemy nie obsługują mieszanego pozycjonowania argumentów. Jako przykład:
Oba działają na niektórych systemach, podczas gdy ten drugi nie działa na innych.
W twoim dokładnym poleceniu wszystkie parametry należą
find
- więc jeśli zastanawiasz się nad właściwością,man find
to jest właściwe miejsce do szukania. W przypadkach, w których musisz zajrzeć na strony podręcznika użytkownika w poszukiwaniu powłoki itp., Mogą to być np .:-exec
Jest szczególna, gdzie-exec some_command {} \;
są wszystkie parametry podanefind
, alesome_command {} \;
część jest rozszerzona, w terminiefind
dosome_command string_of_found_entity
.Co więcej
Może ci się to przydać .
źródło
Powinieneś zaglądać
man find
, nie whelp type
lubman bash
.type
wfind
określi, jakiego typu pliku potrzebujesz:Wbudowana
type
jest zupełnie inna rzecz i NIE jest ona używana w środkufind
.źródło
Patrzyłeś na niewłaściwą stronę podręcznika, to nie jest
type -f
polecenie, alefind -type f
opcja, która jest zupełnie inna, zajrzyj dofind
instrukcji, aby uzyskać odpowiednie wyjaśnienia.źródło
-type f
każe znaleźć, aby drukowało tylko pliki typu f, tj. zwykłe pliki, nie katalogi, nie dowiązania symboliczne, a nie pliki urządzeń.man find
następnie wyszukaj-f
opcję.źródło
To nie jest właściwa strona podręcznika, na którą patrzysz. Powinieneś używać
że powie, że z
-type f
tych-type
bazowych wybiera tylko zwykłe pliki.źródło