GNU/Linux >> Belajar Linux >  >> Linux

dasar-dasar grep

Artikel ini memperkenalkan beberapa alat, terutama grep , alat baris perintah Linux® yang dapat Anda gunakan untuk mencari direktori atau file yang cocok dengan ekspresi reguler yang ditentukan.

Apa itu grep ?

Jawaban resmi:

grep mencari file input bernama (atau input standar jika Anda tidak menentukan file atau menggunakan tanda hubung tunggal (- ) sebagai nama file)untuk baris yang berisi kecocokan dengan pola yang diberikan. Secara default, grep mencetak garis yang cocok.

Jawaban yang lebih bagus:

Telusuri file, direktori, atau keluaran untuk sesuatu yang spesifik, mirip denganCtrl + f di Windows®. Gunakan fungsi ini untuk menargetkan apa yang Anda butuhkan.

Dasar

Seringkali, cara termudah untuk menunjukkan cara kerja perintah adalah dengan contoh.

Anda dapat melihat semua pengguna di /etc/passwd file dengan perintah berikut:

# cat /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
mysql❌27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
sher❌1002:1002::/home/sher:/bin/bash

Menggunakan grep , Anda dapat mempersempit daftar tersebut untuk menemukan satu pengguna.

Temukan pengguna tertentu :

Buat daftar pengguna tetapi filter output yang hanya menampilkan baris dengan sher di dalamnya.

# cat /etc/passwd | grep 'sher'
sher❌1002:1002::/home/sher:/bin/bash

Atau, temukan pengguna yang sama dengan satu perintah:

# grep 'sher' /etc/passw
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

Dalam contoh berikut, temukan semua pengguna dengan akses bash:

# grep 'bash' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

Bendera

Seperti kebanyakan perintah Linux, grep menggunakan tanda, biasanya satu atau lebih huruf yang didahului oleh satu atau lebih tanda hubung, untuk menambahkan fungsionalitas tambahan.

-v :Tampilkan semua yang tidak termasuk pola pencarian yang ditentukan:

# grep -v 'nologin' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

-i :Tampilkan kecocokan, abaikan kasing, yang berguna saat Anda tidak tahu persis apa yang Anda butuhkan:

# grep -i 'SHER' /etc/passwd
sher❌1002:1002::/home/sher:/bin/bash

Telusuri beberapa pola

grep menggunakan simbol pipa (| ) berarti atau memungkinkan Anda untuk mencari lebih dari satu hal sekaligus. Gunakan salah satu metode berikut untuk mencari beberapa hal sekaligus:

\ :Keluar dari karakter berikutnya, sebuah pipa (| ) memungkinkannya berfungsi sebagai atau :

# grep 'sher\|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

-E :Menafsirkan karakter khusus, seperti | sebagai atau :

# grep -E 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

egrep perintah melakukan hal yang sama:

# egrep 'sher|rack' /etc/passwd
rack❌1001:1001::/home/rack:/bin/bash
sher❌1002:1002::/home/sher:/bin/bash

Menggabungkan flag

Anda dapat menggunakan berbagai tanda dalam kombinasi untuk mempersempit pencarian.

Contoh berikut menunjukkan semua pengguna yang bukan sher atau rak , terlepas dari kasus pola konten file:

# egrep -vi 'SHER|RACK' /etc/passwd

Contoh praktis

Bagian berikut mencakup kegunaan lain untuk grep dan perkenalkan perintah berguna lainnya.

Abaikan komentar

Di Linux, Anda mengomentari baris dengan menambahkan simbol pound (# ) di awal baris. Dengan cara ini, Anda dapat menambahkan catatan Anda sendiri, dan skrip atau program menandatangani komentar dan tidak menjalankan baris tersebut.

Untuk menampilkan file yang mengabaikan komentar tersebut, gunakan perintah berikut:

# grep -v ^'#' /file

Anda bahkan dapat menjalankan grep di atas grep lainnya perintah.

Misalnya, buat daftar file yang mengabaikan baris komentar, lalu cari sesuatu yang spesifik:

# grep -v ^'#' /file | grep 'hello'

Riwayat penelusuran

Sebagian besar sistem Linux menyimpan log dari perintah yang dijalankan, yang dapat Anda akses dengan perintah history . Saat Anda menggabungkan history dengan grep , Anda dapat dengan sangat efektif menyelidiki apa yang telah dijalankan di sistem Anda sejauh ini.

Periksa passwd perintah dijalankan dan perintah lain yang berisipasswd pola:

# history | grep 'passwd'

Temukan perintah yang dijalankan pada hari tertentu:

# history | grep '2021-05-10'

Periksa perintah mana yang dijalankan pada waktu tertentu:

# history | grep '2021-05-10 11:00:'

Periksa port dan login root

Buat daftar lalu lintas web yang berjalan pada port 80 dan 443 :

# netstat -plnt | egrep '80|443'

Anda dapat menggunakan ^ dalam grep perintah untuk hanya menampilkan baris yang dimulai dengan pola pencarian Anda.

Misalnya, jalankan perintah berikut untuk memeriksa apakah sistem mengizinkan login root:

# grep ^'Permit' /etc/ssh/sshd_config

Cari log dengan kepala dan ekor

Gunakan top untuk menampilkan sepuluh baris pertama dari log upaya login:

# head /var/log/secure

Gunakan tail untuk menampilkan baris di akhir log upaya login:

# tail /var/log/secure

Gunakan last perintah untuk menampilkan sepuluh baris pertama dari login terbaru:

# last | head -10

Gunakan tail -f untuk menonton file tumbuh secara real time. Misalnya, Anda dapat melihat upaya login terbaru dan melihat upaya yang sedang berlangsung. Jika seseorang mencoba masuk, Anda dapat melihatnya seperti yang terjadi dengan perintah berikut:

# tail -f /var/log/secure
Ctrl + C to exit

Alat lain

Anda dapat bereksperimen dengan keterampilan baru Anda dengan menggunakan alat di bagian ini.

vim atau nano

vi , vim , dan nano adalah editor teks paling umum di Linux. Anda dapat menggunakannya untuk mengedit file, mirip dengan menggunakan Notepad di Windows.

Buka dan buat file baru, test :

# vim /test
Tindakan Urutan kunci Penjelasan
Untuk mulai mengetik konten baru: i Bersiap untuk menyisipkan teks
Untuk keluar tanpa menyimpan: Esc :q! Keluar dari mode penyisipan dan keluar
Untuk keluar dan menyimpan: Esc :wq! Keluar dari mode penyisipan, tulis, dan keluar

gema

echo adalah perintah sederhana yang memberitahu Linux untuk mengulangi apa yang baru saja Anda ketik. Ini efektif untuk menguji grep perintah tanpa terlebih dahulu membuat file baru.

Misalnya, buat halo tampilan:

# echo 'hello'
hello

Tampilkan halo dan cari huruf tengahnya:

# echo 'hello' | grep 'ell'
hello

Anda bahkan dapat menggunakan echo untuk menampilkan beberapa baris dengan menggunakan -e dan \n tambahkan baris baru.

Tampilkan hai dan ho pada baris terpisah:

# echo -e 'hi\nho'
hi
ho

Tampilkan hai dan ho pada baris terpisah dan telusuri hai :

# echo -e 'hi\nho' | grep 'hi'
hi

sed

Seperti grep , sed memiliki banyak kegunaan, tetapi Anda terutama menggunakan perintah ini untuk mencari dan mengganti konten tertentu. Berikut adalah beberapa contoh dasar tentang cara memilih baris tertentu:

Pertama, Gunakan vim untuk membuat file:

# vim /test

Saat editor terbuka, masukkan baris berikut:

1 Hi
2 How
3 Are
4 You

Tampilkan file baru:

# cat test
1 Hi
2 How
3 Are
4 You

Gunakan sed untuk mengembalikan semuanya kecuali baris pertama:

# sed 1d test
2 How
3 Are
4 You

Kembalikan hanya baris pertama:

# sed 1q test

atau

# sed '1!d' test
1 Hi

Kembalikan hanya baris kedua hingga keempat:

# sed '2,4!d' test
2 How
3 Are
4 You

Kesimpulan

Ada banyak alat lain yang dapat Anda gunakan, seperti awk , cut , sort , xargs ,dan seterusnya. Sekarang Anda tahu cara membuat file dengan menggunakan echo , Anda dapat bereksperimen lebih efektif dengan mereka.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Bagaimana Menggemakan Bang!?

  3. Ny Alasan Untuk Memiliki Shebang Menunjuk /bin/sh Daripada /bin/bash?

  1. Linux – Menggabungkan /usr/bin Dan /usr/sbin Ke /bin (gnu/linux)?

  2. Mengapa /bin/sh Menunjuk Ke /bin/dash Dan Bukan /bin/bash??

  3. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  1. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  2. cmake --version menunjuk ke /usr/bin/cmake sementara cmake menunjuk ke /usr/local/bin

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?