W tym przypadku type
nie ma to nic wspólnego z wbudowanym bash type
, ale o tym później.
Trochę o „typie”
Wbudowane type
polecenie BASH zapewnia informacje o poleceniach. A zatem:
$ type type
type is a shell builtin
Składnia jest następująca:
type [-tap] [name ...]
-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
a cat
jako przykład:
$ type time kill cat
time is a shell keyword
kill is a shell builtin
cat is /bin/cat
$ type -t time kill cat
keyword
builtin
file
$ type -a time kill cat
time is a shell keyword
time is /usr/bin/time
kill is a shell builtin
kill is /bin/kill
cat is /bin/cat
$ type -ta time kill cat
keyword
file
builtin
file
file
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
.
tt=$(which time)
a następnie użyj $tt
do wywołania systemu time
.
Polecenie, o którym mowa
W tym przypadku -type
jest to opcja polecenia find
. Opcja przyjmuje jeden argument, za pomocą którego określa się typ jednostki. Przykład
find . -type f # File
find . -type d # Directory
Jest więcej, sprawdź man find
resztę.
Aby wyszukać konkretną opcję, którą możesz zrobić (będąc w człowieku):
/ ^ \ s * -typEnter
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:
- polecenie: program lub wbudowany .
- parametr: jednostka po słowie polecenia.
- opcja: parametr opcjonalny .
- argument: wymagany parametr.
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:
foo [-abs] [-t <bar>] <file> ...
foo [-abs] [-t bar] file ...
Daje -a
-b
i -s
jako opcjonalne parametry, a file
wymagany jeden.
-t
jest opcjonalny, ale jeśli jest określony, pobiera wymagany argument bar
. Kropki oznaczają, że może zająć kilka plików.
Nie jest to dokładna specyfikacja i często man
lub help
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:
chmod -R nick 722 foo
chmod nick 722 foo -R
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 .:
find . $(some command)
find . `some command`
find . $some_var
find . -type f -exec some_command {} \;
find . -type f | some_command
...
-exec
Jest szczególna, gdzie -exec some_command {} \;
są wszystkie parametry podane find
, ale some_command {} \;
część jest rozszerzona, w terminie find
do some_command string_of_found_entity
.
Co więcej
- cytowanie
- ekspansja
- zastępowanie poleceń
- i wiele więcej
Może ci się to przydać .
type
Wbudowanego polecenia nie jest używany przezfind
.-type
Opcjafind
robi coś innego. Zobaczhelp type
iman find
uzyskaj odpowiedzi.