Saya menemukan perintah dalam skrip Bash di mana saya menemukan:
find /var/log/abcd -type f
Perintah di atas adalah dalam konteks membersihkan file log. Saya tahu apa yang harus find
dilakukan.
Setelah melihat -type f
, saya mencari halaman manual untuk itu. Saya melihatnya di halaman manual BASH_BUILTINS (1)
Deskripsi flag -f di bawah type
komando adalah: -
The -f option suppresses shell function lookup, as with the command builtin.
Berikut ini adalah pertanyaan saya:
- Apa gunanya
type
? - Apa pentingnya
-f
bendera? - Apa gunanya menggunakan
type
denganfind
perintah?
[EDIT]: - Setelah membaca semua komentar dan jawaban sampai sekarang, saya ingin menyebutkan penyebabnya untuk salah tafsir saya -type option in command find
Vs type command
. Ini semua terjadi karena saya berasumsi dan sampai saat ini hanya melihat opsi pendek (Tes dalam kasus find
perintah) dengan tanda minus tunggal '-' , misalnya ls -l
,. Sebagian besar waktu saya telah melihat opsi panjang dengan tanda minus ganda '-' , misalnya ls --version
,.
sumber
type
perintah builtin tidak digunakan olehfind
. The-type
pilihan untukfind
melakukan sesuatu yang lain. Lihathelp type
danman find
dapatkan jawaban Anda.Jawaban:
Dalam hal
type
ini tidak ada hubungannya dengan bash built-intype
, tetapi lebih pada nanti.Sedikit tentang "ketik"
Perintah BASH bawaan
type
memberi Anda informasi tentang perintah. Jadi:Sintaksnya adalah:
-t
: ketik hanya cetak, jika ditemukan-a
: cetak semua kemunculan perintah, baik yang terpasang maupun yang lain.-p
: cetak file disk yang akan dieksekusi saat dipanggil ke perintah, atau tidak sama sekali.Jika kita melihat
time
,kill
dancat
sebagai contoh:Sekarang, ini menentukan bahwa jika Anda berada dalam Bash shell dan ketik
time some_cmd
, bash builtintime
digunakan. Untuk menggunakan sistemtime
bisa Anda lakukan/usr/bin/time some_cmd
.Salah satu cara yang sering digunakan untuk memastikan bahwa sistem, dan bukan built-in, perintah yang digunakan adalah dengan menggunakan
which
.dan kemudian gunakan
$tt
untuk memanggil sistemtime
.Perintah yang dimaksud
Dalam hal ini
-type
adalah opsi untuk perintahfind
. Opsi ini mengambil satu argumen yang menentukan jenis entitas. ContohMasih ada lagi, periksa
man find
sisanya.Untuk mencari opsi tertentu yang dapat Anda lakukan (sementara di tangan):
Kemudian gunakan
n
untuk selanjutnya sampai Anda menemukannya.Sedikit tentang perintah shell
Ini sedikit interpretasi pribadi.
Beberapa hal yang layak disebutkan, dalam kasus khusus ini, adalah perintah, opsi, argumen dan pipa.
Ini agak longgar digunakan, tetapi dalam kosakata saya singkatnya:
Dalam spesifikasi perintah kurung kotak digunakan untuk menentukan opsi dan, secara opsional kurang / lebih besar dari itu, digunakan untuk menentukan argumen. Jadi:
Memberikan
-a
-b
dan-s
sebagai parameter opsional, danfile
yang diperlukan.-t
adalah opsional, tetapi jika ditentukan membutuhkan argumen yang diperlukanbar
. Dots menyatakan bahwa ia dapat mengambil beberapa file.Ini bukan spesifikasi yang pasti, dan sering
man
atauhelp
diharuskan untuk dipastikan.Posisi opsi argumen dan input sering dapat digabungkan, tetapi umumnya terbaik untuk tetap menggunakan pendekatan berbasis posisi karena beberapa sistem tidak menangani posisi campuran argumen. Sebagai contoh:
Keduanya bekerja pada beberapa sistem, sedangkan yang kedua tidak pada yang lain.
Dalam perintah persis Anda semua parameter milik
find
- jadi jika Anda bertanya-tanya tentang propertiman find
adalah tempat yang tepat untuk mencari. Dalam kasus di mana Anda perlu melihat halaman manual untuk shell, dll. Bisa di misalnya:Ini
-exec
adalah yang spesial di mana-exec some_command {} \;
semua parameter diberikanfind
, tetapisome_command {} \;
bagian diperluas,find
ke dalamsome_command string_of_found_entity
.Selanjutnya
Anda mungkin menemukan ini berguna .
sumber
Anda harus melihat
man find
, tidak masukhelp type
atauman bash
.type
difind
akan menentukan jenis file apa yang Anda butuhkan:Dan builtin
type
adalah hal yang sangat berbeda dan BUKAN yang digunakan di dalamfind
.sumber
Anda melihat ke halaman manual yang salah, ini bukan
type -f
perintah tetapifind -type f
opsi yang sangat berbeda, lihatfind
manual untuk penjelasan yang tepat.sumber
-type f
memberitahu find untuk hanya mencetak file tipe f yaitu file biasa, bukan direktori, bukan tautan simbolik dan bukan file perangkat.man find
lalu cari-f
opsi.sumber
Ini bukan halaman manual yang tepat yang Anda lihat. Anda harus menggunakan
yang akan memberitahu Anda bahwa dengan
-type f
satu-type
menyeleksi predikat hanya file biasa.sumber