<Sebelumnya | Konten | Selanjutnya>
rm: hapus direktori `arsip'? y
Kami akan membahas bagaimana menjadikan opsi ini sebagai default di Bab 7, yang membahas penyesuaian lingkungan shell Anda.
3.3.3. Menemukan file
3.3.3.1. Menggunakan fitur shell
Dalam contoh memindahkan file, kita telah melihat bagaimana shell dapat memanipulasi banyak file sekaligus. Dalam contoh itu, shell mencari tahu secara otomatis apa yang dimaksud pengguna dengan persyaratan antara kurung siku "[" dan "]". Shell dapat menggantikan rentang angka dan karakter huruf besar atau kecil. Itu juga mengganti karakter sebanyak yang Anda inginkan dengan tanda bintang, dan hanya satu karakter dengan tanda tanya.
Segala macam substitusi dapat digunakan secara bersamaan; shell sangat logis tentang hal itu. Shell Bash, misalnya, tidak memiliki masalah dengan ekspresi seperti ls nama dir/*/*/*[2-3].
Di shell lain, tanda bintang biasanya digunakan untuk meminimalkan upaya mengetik: orang akan masuk cd dir* alih-alih cd direktori. Namun di Bash, ini tidak perlu karena shell GNU memiliki fitur yang disebut penyelesaian nama file. Ini berarti bahwa Anda dapat mengetikkan beberapa karakter pertama dari suatu perintah (di mana saja) atau file (di direktori saat ini) dan jika tidak ada kebingungan yang mungkin terjadi, shell akan mencari tahu apa yang Anda maksud. Sebagai contoh
di direktori yang berisi banyak file, Anda dapat memeriksa apakah ada file yang dimulai dengan huruf A hanya dengan mengetik ls A dan menekan tombol Tab tombol dua kali, daripada menekan Enter. Jika hanya ada satu file yang dimulai dengan "A", file ini akan ditampilkan sebagai argumen untuk ls (atau perintah Shell apa pun, dalam hal ini) segera.
3.3.3.2. Yang mana
Cara yang sangat sederhana untuk mencari file adalah menggunakan yang perintah, untuk mencari di direktori yang terdaftar di jalur pencarian pengguna untuk file yang diperlukan. Tentu saja, karena jalur pencarian hanya berisi jalur ke direktori yang berisi program yang dapat dieksekusi, yang tidak berfungsi untuk file biasa. Itu yang perintah berguna saat memecahkan masalah "Perintah tidak Ditemukan". Pada contoh di bawah ini, pengguna tina tidak bisa menggunakan membaca cepat program, sementara rekannya tidak memiliki masalah apa pun pada sistem yang sama. Masalahnya mirip dengan PATH masalah di bagian sebelumnya: Rekan Tina mengatakan kepadanya bahwa dia dapat melihat program yang diperlukan di
/opt/acroread/bin, tetapi direktori ini tidak ada di jalurnya:
tina:~> membaca yang mana
/usr/bin/yang: tidak ada acroread di (/bin:/usr/bin:/usr/bin/X11)
tina:~> membaca yang mana
/usr/bin/yang: tidak ada acroread di (/bin:/usr/bin:/usr/bin/X11)
Masalahnya dapat diselesaikan dengan memberikan path lengkap ke perintah untuk dijalankan, atau dengan mengekspor ulang konten dari
variabel PATH:
tina:~> ekspor PATH=$PATH:/opt/acroread/bin
tina:~> gema $PATH
/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin
tina:~> ekspor PATH=$PATH:/opt/acroread/bin
tina:~> gema $PATH
/bin:/usr/bin:/usr/bin/X11:/opt/acroread/bin
Menggunakan yang perintah juga memeriksa untuk melihat apakah suatu perintah adalah alias untuk perintah lain:
gerrit:~> yang -a ls
ls adalah alias untuk `ls -F --color=auto' ls adalah /bin/ls
gerrit:~> yang -a ls
ls adalah alias untuk `ls -F --color=auto' ls adalah /bin/ls
Jika ini tidak berhasil di sistem Anda, gunakan alias perintah:
sampai@www:~/mail$ alias ls
alias ls='ls --warna'
sampai@www:~/mail$ alias ls
alias ls='ls --warna'
3.3.3.3. Temukan dan temukan
Ini adalah alat yang sebenarnya, digunakan saat mencari jalur lain selain yang terdaftar di jalur pencarian. Itu menemukan alat, yang dikenal dari UNIX, sangat kuat, yang mungkin menjadi penyebab sintaks yang agak lebih sulit. GNU menemukan, bagaimanapun, berhubungan dengan masalah sintaks. Perintah ini tidak hanya memungkinkan Anda untuk mencari nama file, tetapi juga dapat menerima ukuran file, tanggal perubahan terakhir dan properti file lainnya sebagai kriteria pencarian. Penggunaan yang paling umum adalah untuk menemukan nama file:
menemukan -nama
Ini dapat diartikan sebagai "Lihat di semua file dan subdirektori yang ada di jalur tertentu, dan cetak nama file yang berisi string pencarian di namanya" (bukan di kontennya).
Aplikasi lain dari menemukan adalah untuk mencari file dengan ukuran tertentu, seperti pada contoh di bawah ini, di mana pengguna peter
ingin mencari semua file di direktori saat ini atau salah satu subdirektorinya, yang lebih besar dari 5 MB:
peter:~> Temukan . -ukuran +5000k
psikotik_kekacauan.mp3
peter:~> Temukan . -ukuran +5000k
psikotik_kekacauan.mp3
Jika Anda menggali di halaman manual, Anda akan melihatnya menemukan juga dapat melakukan operasi pada file yang ditemukan. Contoh umum adalah menghapus file. Yang terbaik adalah menguji terlebih dahulu tanpa -Exec pilihan bahwa file yang benar dipilih, setelah itu perintah dapat dijalankan kembali untuk menghapus file yang dipilih. Di bawah ini, kami mencari file yang berakhiran .tmp:
peter:~> Temukan . -nama "*.tmp" -exec rm {} \;
peter:~>
peter:~> Temukan . -nama "*.tmp" -exec rm {} \;
peter:~>
Optimalkan!
Perintah ini akan memanggil rm sebanyak file yang menjawab persyaratan ditemukan. Dalam kasus terburuk, ini mungkin ribuan atau jutaan kali. Ini cukup membebani sistem Anda.
Cara kerja yang lebih realistis adalah penggunaan pipa (|) dan xargs alat dengan rm sebagai argumen. Dengan cara ini, rm perintah hanya dipanggil ketika baris perintah penuh, bukan untuk setiap file. Lihat Bab 5 untuk lebih lanjut tentang menggunakan pengalihan I/O untuk memudahkan tugas sehari-hari.
Kemudian (pada tahun 1999 menurut halaman manual, setelah 20 tahun menemukan), menemukan Dikembangkan. Program ini lebih mudah digunakan, tetapi lebih terbatas daripada menemukan, karena outputnya didasarkan pada database indeks file yang diperbarui hanya sekali setiap hari. Di sisi lain, pencarian di menemukan database menggunakan lebih sedikit sumber daya daripada menemukan dan karena itu menunjukkan hasilnya hampir seketika.
Sebagian besar distribusi Linux menggunakan menemukan hari ini, lokasi yang ditingkatkan keamanannya, versi modern dari menemukan yang mencegah pengguna mendapatkan keluaran yang tidak berhak mereka baca. File di akardirektori home adalah contohnya, ini biasanya tidak dapat diakses oleh publik. Seorang pengguna yang ingin menemukan seseorang yang tahu tentang shell C dapat mengeluarkan perintah menemukan .cshrc, untuk menampilkan semua pengguna yang memiliki file konfigurasi khusus untuk shell C. Misalkan pengguna akar dan jenny menjalankan C shell, maka hanya file
/home/jenny/.cshrc akan ditampilkan, dan bukan yang ada di akardirektori home. Pada kebanyakan sistem,
locate adalah tautan simbolis ke program slocate:
billy:~> ls -l /usr/bin/lokasi
lrwxrwxrwx 1 root slocate 7 Okt 28 14:18 /usr/bin/locate -> slocate*
billy:~> ls -l /usr/bin/lokasi
lrwxrwxrwx 1 root slocate 7 Okt 28 14:18 /usr/bin/locate -> slocate*
Pengguna tina bisa saja menggunakan menemukan untuk menemukan aplikasi yang dia inginkan:
tina:~> temukan acroread
/usr/share/icons/hicolor/16x16/apps/acroread.png
/usr/share/icons/hicolor/32x32/apps/acroread.png
/usr/share/icons/locolor/16x16/apps/acroread.png
/usr/share/icons/locolor/32x32/apps/acroread.png
/usr/local/bin/acroread
/usr/local/Acrobat4/Reader/intellinux/bin/acroread
/usr/local/Acrobat4/bin/acroread
tina:~> temukan acroread
/usr/share/icons/hicolor/16x16/apps/acroread.png
/usr/share/icons/hicolor/32x32/apps/acroread.png
/usr/share/icons/locolor/16x16/apps/acroread.png
/usr/share/icons/locolor/32x32/apps/acroread.png
/usr/local/bin/acroread
/usr/local/Acrobat4/Reader/intellinux/bin/acroread
/usr/local/Acrobat4/bin/acroread
Direktori yang tidak mengandung nama bin tidak dapat berisi program - tidak berisi file yang dapat dieksekusi. Ada tiga kemungkinan yang tersisa. File di / usr / local / bin adalah orangnya tina ingin: ini adalah tautan ke skrip Shell yang memulai program sebenarnya:
tina:~> file /usr/local/bin/acroread
/usr/local/bin/acroread: tautan simbolis ke ../Acrobat4/bin/acroread
tina:~> file /usr/local/Acrobat4/bin/acroread
/usr/local/Acrobat4/bin/acroread: Teks skrip Bourne shell dapat dieksekusi
tina:~> file /usr/local/Acrobat4/Reader/intellinux/bin/acroread
/usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-bit LSB yang dapat dieksekusi, Intel 80386, versi 1, terhubung secara dinamis (menggunakan
tina:~> file /usr/local/bin/acroread
/usr/local/bin/acroread: tautan simbolis ke ../Acrobat4/bin/acroread
tina:~> file /usr/local/Acrobat4/bin/acroread
/usr/local/Acrobat4/bin/acroread: Teks skrip Bourne shell dapat dieksekusi
tina:~> file /usr/local/Acrobat4/Reader/intellinux/bin/acroread
/usr/local/Acrobat4/Reader/intellinux/bin/acroread: ELF 32-bit LSB yang dapat dieksekusi, Intel 80386, versi 1, terhubung secara dinamis (menggunakan
berbagi lib), tidak dilucuti Untuk menjaga jalur sesingkat mungkin, sehingga sistem tidak perlu mencari terlalu lama setiap kali pengguna ingin menjalankan perintah, kami menambahkan / usr / local / bin ke jalur dan bukan direktori lain, yang
hanya berisi file biner dari satu program tertentu, sementara / usr / local / bin berisi bermanfaat lainnya
program juga.
Sekali lagi, deskripsi fitur lengkap dari menemukan dan menemukan dapat ditemukan di halaman Info.
3.3.3.4. Perintah grep
3.3.3.4.1. Pemfilteran garis umum
Sebuah program sederhana namun kuat, grep digunakan untuk menyaring jalur input dan mengembalikan pola tertentu ke output. Ada ribuan aplikasi untuk grep program. Pada contoh di bawah ini, jerry kegunaan grep untuk melihat bagaimana dia melakukan hal itu dengan menemukan:
jerry:~> grep -a temukan .bash_history
Temukan . -nama userinfo man find
temukan ../ -nama umum.cfg
jerry:~> grep -a temukan .bash_history
Temukan . -nama userinfo man find
temukan ../ -nama umum.cfg
Sejarah pencarian
Juga berguna dalam kasus ini adalah fungsi pencarian di menampar, diaktifkan dengan menekan Ctrl+R sekaligus, seperti dalam contoh di mana kami ingin memeriksa bagaimana kami melakukannya terakhir menemukan lagi:
thomas ~> ^R
(reverse-i-search)`find': temukan `/home/thomas` -name *.xml
thomas ~> ^R
(reverse-i-search)`find': temukan `/home/thomas` -name *.xml
Ketik string pencarian Anda pada prompt pencarian. Semakin banyak karakter yang Anda ketik, semakin terbatas pencariannya. Ini membaca riwayat perintah untuk sesi shell ini (yang ditulis ke
.bash_history di direktori home Anda ketika Anda keluar dari sesi itu). Kemunculan terbaru dari string pencarian Anda ditampilkan. Jika Anda ingin melihat perintah sebelumnya yang berisi string yang sama, ketik Ctrl+R lagi.
Lihat halaman Info di menampar untuk lebih.
Semua UNIX dengan sedikit kesopanan memiliki kamus online. Begitu juga Linux. Kamus adalah daftar kata-kata yang dikenal dalam file bernama kata, terletak di /usr/bagikan/dict. Untuk memeriksa ejaan kata yang benar dengan cepat, tidak diperlukan aplikasi grafis:
william:~> grep pinguin /usr/share/dict/words
william:~> grep penguin /usr/share/dict/words
penguin penguin
william:~> grep pinguin /usr/share/dict/words
william:~> grep penguin /usr/share/dict/words
penguin penguin
Kamus vs. daftar kata
Beberapa distribusi menawarkan dict perintah, yang menawarkan lebih banyak fitur daripada sekadar mencari kata dalam daftar.
Siapa pemilik direktori home di sebelah saya? Hei, ini nomor teleponnya!
lisa:~> grep gdbruyne /etc/passwd
gdbruyne:x:981:981:Guy Debruyne, telp 203234:/home/gdbruyne:/bin/bash
lisa:~> grep gdbruyne /etc/passwd
gdbruyne:x:981:981:Guy Debruyne, telp 203234:/home/gdbruyne:/bin/bash
Dan apa alamat E-mail Arno lagi?
serge:~/mail> grep -aku arno *
surat terkirim: Kepada:[email dilindungi]>
terkirim: Pada Senin, 24 Des 2001, [email dilindungi] wrote:
serge:~/mail> grep -aku arno *
surat terkirim: Kepada:[email dilindungi]>
terkirim: Pada Senin, 24 Des 2001, [email dilindungi] wrote:
find dan locate sering digunakan dalam kombinasi dengan grep untuk mendefinisikan beberapa pertanyaan serius. Untuk informasi lebih lanjut, lihat Bab 5 tentang pengalihan I/O.
3.3.3.4.2. Karakter spesial
Karakter yang memiliki arti khusus pada cangkangnya harus melarikan diri. Karakter escape di Bash adalah backslash, seperti kebanyakan shell; ini menghilangkan arti khusus dari karakter berikut. Shell tahu tentang beberapa karakter khusus, di antara yang paling umum /, ., ? dan *. Daftar lengkap dapat ditemukan di halaman Info dan dokumentasi untuk shell Anda.
Misalnya, Anda ingin menampilkan file "*" alih-alih semua file dalam direktori, Anda harus menggunakan