Stasiun Kerja Online OnWorks Linux dan Windows

logo

Hosting Online Gratis untuk WorkStation

<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.


gambar


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.


gambar

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'


gambar


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:~>


gambarOptimalkan!

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.


gambar

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


gambarSejarah 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


gambarKamus 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.


gambar

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


kurang \*


Komputasi Awan OS Teratas di OnWorks: