Pengenalan
Terdapat lima perintah fail pencarian pada Linux: whereis, locate, which, type, dan find. Masing-masing mempunyai ciri tersendiri dan dirancang untuk senario carian tertentu. Panduan ini akan memperkenalkan anda kepada setiap arahan dan menunjukkan contoh penggunaan. Untuk membaca lebih lanjut mengenai mana-mana arahan ini, lebih baik anda mengkaji semula halaman yang sesuai.
whereis
The whereisarahan digunakan untuk mencari fail perduaan, kod sumber, dan laman manual dalam talian di beberapa standard memasang direktori untuk apa-apa nama program dinyatakan.
Kerana whereistidak mencari di setiap lokasi di sistem anda, fail dari direktori khusus ini tidak akan dijumpai. Atas sebab yang sama, anda akan mendapat hasil carian anda dengan cepat, sama ada dijumpai atau tidak.
Juga, ia tidak akan mencari perintah yang dibina terus ke dalam cangkang.
Contohnya, jika anda ingin mencari maklumat mengenai lsperintah tersebut, jalankan perintah berikut di terminal anda:
whereis ls
Anda akan mendapat beberapa maklum balas seperti:
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Hasilnya, /bin/lsadakah binari yang ingin anda cari, dua yang lain adalah halaman untuk lsprogram, tidak ada kod sumber untuk lsprogram yang dijumpai.
Salin /bin/lsfail ke direktori beranda dan ke /usr/bindirektori, dan kemudian jalankan whereisperintahnya lagi:
cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls
Seperti yang anda lihat, hanya /bin/lsdan /usr/bin/lsterdapat dalam hasil carian. The lsprogram di dalam direktori rumah anda tidak dijumpai, kerana direktori rumah anda tidak adalah salah satu standard memasang direktori.
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Sekiranya anda menjalankan arahan berikut:
whereis cd
Anda akan melihat output yang serupa dengan baris di bawah. Tidak ada fail binari yang dijumpai kerana cdterdapat perintah dari shell.
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
locate
The locatearahan digunakan untuk mencari fail dengan nama dengan bantuan pangkalan data ( /var/lib/mlocate/mlocate.db). Pangkalan data ini pada dasarnya adalah gambaran susun atur sistem fail anda. Segala rekod dalam pangkalan data ini yang sesuai dengan pertanyaan anda akan disenaraikan dalam hasil carian. Secara lalai, locateperintah akan menggunakan pertanyaan anda untuk memadankan mana-mana bahagian dari keseluruhan nama setiap rekod, termasuk nama jalan. Oleh itu, jumlah fail yang dipadankan dalam hasil carian mungkin lebih banyak daripada yang anda harapkan.
Apabila pangkalan data menjadi lapuk, hasil carian locateperintah menjadi kurang tepat. Anda mungkin melihat fail yang tidak lagi ada, atau anda tidak akan melihat padanan untuk fail yang baru dibuat. Secara lalai, mlocate.dbpangkalan data dikemas kini secara automatik sekali sehari. Anda boleh menggunakan updatedbarahan untuk mengemas kini secara manual.
Oleh kerana carian dilakukan di pangkalan data dan bukannya sistem fail, kelajuan carian sangat cepat.
Sekiranya anda menjalankan arahan berikut:
locate ls
Anda akan mendapat banyak rekod dan bukannya hasil yang anda harapkan.
Untuk menjadikan hasil carian lebih tepat, anda dapat menggunakan -bbendera untuk membatasi julat carian, menggunakan pertanyaan anda untuk mencocokkan hanya nama dasar setiap catatan:
locate -b "\ls"
Kali ini, anda akan mendapat lokasi setiap fail yang dipanggil tepat lspada sistem fail anda:
/bin/ls
which
The whicharahan akan mencari arahan yang anda dinyatakan dalam nilai pembolehubah persekitaran PATHdan mengembalikan hasil pertama secara lalai. Sekiranya anda meminta alias, whichperintah itu akan menentukan perintah sebenar untuk alias tersebut sebelum melakukan carian anda.
The whicharahan juga sangat cepat kerana kesederhanaan.
Penggunaan whichperintah itu mudah:
which your_command
Sekiranya anda ingin menunjukkan semua arahan yang sesuai dan bukan yang pertama, gunakan -abendera:
which -a your_command
Berikut adalah contoh untuk mencari perintah yang telah diasingkan:
which ll
Hasil cariannya adalah:
alias ll='ls -l --color=auto'
/bin/ls
type
Secara lalai, typeperintah akan menunjukkan bagaimana nama perintah akan ditafsirkan. Hasil yang mungkin termasuk alias, kata kunci, fungsi, builtin, atau fail. Sama seperti whereisperintah, typeperintah itu hanya akan mencari di beberapa direktori pemasangan standard untuk menjawab pertanyaan anda.
Beberapa contoh untuk menaip pelbagai arahan:
Perintah builtin shell:
type cd
cd is a shell builtin
Fail binari pada sistem fail:
type sudo
sudo is /usr/bin/sudo
Satu alias:
type ls
ls is aliased to `ls --color=auto'
find
Di antara lima perintah mencari fail yang diperkenalkan dalam tutorial ini, findperintah itu adalah yang paling kuat. Ia juga yang paling perlahan. Tidak seperti empat perintah lain, findperintah itu sebenarnya akan mencari fail anda di seluruh sistem fail, satu i-node oleh satu i-node. Dengan findperintah tersebut, anda dapat menggunakan kriteria pertanyaan yang canggih untuk mencari setiap fail yang anda perlukan, bahkan melakukan tindakan pada fail yang dijumpai.
Kriteria carian untuk findperintah terlalu canggih untuk dijelaskan dalam artikel pendek seperti ini, berikut adalah beberapa contoh.
Format asas findarahan:
find [path] [option] [action]
Untuk mencari semua fail dalam direktori yang berfungsi dan semua sub-direktori:
find
Untuk mencari fail yang disebut aaadi direktori rumah anda dan semua sub-direktori:
find ~ -name 'aaa'
Untuk mencari semua fail dalam sistem fail yang diubah dalam 24 jam terakhir:
find / -mtime 0
Untuk mencari semua fail dalam direktori web dan semua subdirektori milik pengguna nginx:
find /usr/share/nginx/html/ -user nginx
Untuk mencari semua fail dalam direktori kerja yang kebenarannya adalah 0744:
find -perm -0744
Untuk mencari fail dengan nama aaadi direktori yang berfungsi dan senaraikan maklumat terperinci:
find -name 'aaa' -exec ls -l {} \;