If-Koubou

Panduan Pemula untuk Shell Scripting 3: Lebih Banyak Perintah Dasar & Rantai

Panduan Pemula untuk Shell Scripting 3: Lebih Banyak Perintah Dasar & Rantai (Bagaimana caranya)

Anda telah belajar cara membuat skrip, menggunakan argumen, dan membangun untuk loop. Sekarang, mari kita lihat beberapa perintah dasar, manipulasi file teks, dan mengarahkan input dan output ke file dan perintah lainnya.

Beberapa Perintah Berguna Dasar

Kami sudah memberi Anda perincian dasar skrip shell dan kerangka berbasis contoh untuk loop, tetapi pastikan untuk memeriksa artikel tersebut jika Anda melewatkan panduan scripting shell kami sejauh ini.

Baris perintah ini luar biasa karena banyak alasan, dan pengarahan ulang adalah salah satu yang paling menonjol. Jika Anda harus mencatat dan mereproduksi output dari setiap perintah untuk mengambil tindakan lebih lanjut atau menggunakannya untuk hal lain, maka kita semua sudah menjadi gila sejak lama. Redirection memungkinkan kita menggunakan output itu dan menyimpannya atau segera menggunakannya sebagai input untuk perintah lain. Kami juga dapat menggunakan file sebagai input untuk perintah lain.

Sebelum kita melanjutkan, mari kita bahas beberapa perintah dasar yang dapat digunakan di banyak tempat berbeda.

gema - Perintah ini hanya mencetak (menampilkan) keseluruhan argumennya pada baris perintah sebagai output

gema argumen dengan spasi

Seperti yang Anda lihat, karakter khusus harus "lolos" sehingga mereka diperlakukan secara normal. Ini dilakukan dengan menggunakan backslash (\) di depan karakter. Itu ide yang lebih baik untuk menggunakan tanda kutip. Perintah echo juga berfungsi dengan variabel.

Seperti yang Anda lihat, tanda kutip tunggal dan ganda berperilaku berbeda. Untuk informasi lebih lanjut, periksa Apa Perbedaan Antara Kutipan Tunggal dan Ganda dalam Bash Shell?

kucing - Perintah ini menampilkan isi file teks sebagai output.

kucing file_to_be_read

Katakanlah kita membuat file teks ini di nano:

Saat kami menggunakan perintah kucing pada file, kami dapat melihat hasilnya.

grep - Ini adalah salah satu perintah yang paling kuat dan berguna yang tersedia untuk Anda di Linux. Ini singkatan dari Global / Regular Expression Print. Ini terlihat melalui file dan mencetak setiap baris yang sesuai dengan pola tertentu. Karena pola ini didasarkan pada "ekspresi reguler," garis yang ringkas dapat menghasilkan banyak pola untuk dicocokkan. Namun, untuk tidak, Anda dapat memasukkan nilai untuk pencarian.

file pola grep

Saya jamin, grep bisa berbuat lebih banyak, tapi untuk sekarang mari kita berpegang pada hal-hal yang lebih mudah.

Mengarahkan Output

Untuk mengarahkan output dari perintah ke file, kita menggunakan karakter khusus, simbol yang lebih besar dari (>).

Mari kita ubah daftar kita, oke? Masukkan perintah berikut:

echo pepperoni> daftar

Anda dapat melihat gema itu tidak menampilkan garis lagi, dan ketika kita melihat isi dari file "daftar", kita melihat apa yang kita gema di sana.

Juga perhatikan bahwa isi "daftar" sebelumnya telah dihapus. Coba lagi:

Ini dapat berguna ketika Anda ingin menggunakan kembali file, tetapi sering kali kami hanya ingin menambahkan ke file yang sudah ada. Untuk ini, kami menggunakan dua simbol berurutan lebih besar dari:

echo yellow peppers >> daftar

Mudah! Mari gunakan perintah ini untuk membuat daftar yang lebih besar, bukan?

Di sana kami pergi. Saya pikir Anda dapat melihat mengapa begitu banyak geek menggunakan baris perintah untuk membuat daftar yang harus dilakukan dan sejenisnya, tetapi itu menjadi lebih baik.

Mari kita mengambil output dari sebuah perintah dan memasukkannya ke dalam sebuah file:

ls -al /> ~ / daftar pangkal

Membuat daftar file, mengeditnya, dan kemudian menjalankan perintah pada yang Anda inginkan tidak pernah semudah ini. Dan, sementara kami melakukan fungsi-fungsi dasar ini di baris perintah, ini bekerja dengan baik dalam skrip juga.

Perpipaan, atau Rantai

Piping dinamakan demikian karena menggunakan pipa, (|; dibagikan dengan tombol \ pada kebanyakan keyboard). Pada dasarnya, dibutuhkan output dari satu perintah dan langsung memberi makan ke yang lain. Anda dapat membuat rantai panjang perintah untuk mendapatkan keluaran yang diinginkan dengan cara ini, dan sangat nyaman untuk perintah seperti grep.

Bertindak banyak seperti ">" kecuali dapat dirantai beberapa kali dan efeknya lebih umum karena tidak perlu melalui file teks.

Seperti yang Anda lihat, grep adalah case-sensitive. Anda dapat menggunakan bendera "-i" untuk membuatnya mengabaikan huruf besar kecil.

Mengarahkan Input

Anda juga dapat mengambil input dari file untuk perintah dengan menggunakan simbol kurang dari (<).

kucing <daftar

"Itu tidak berbeda dari menggunakan argumen!" Anda mungkin berkata. Nah, Anda akan benar dalam hal ini. Di mana redirection dari input benar-benar berguna adalah perintah chaining bersama.

Katakanlah kita ingin menyaring kata apa pun yang memiliki "pep" di dalamnya dari "daftar" file kami saat ini ke dalam file baru yang disebut "revisi".

revisi grep pep

Mari kita ulang perintah ini, dan tambahkan beberapa penyortiran.

revisi grep pep

Ini akan menggunakan "pep" sebagai istilah pencarian dari file input "daftar", urutkan dalam urutan abjad (semua istilah huruf besar diikuti oleh semua istilah huruf kecil), kemudian output ke file "revisi".

Untuk mengilustrasikan perintah pengurutan, mari kita lihat contoh berikut:

Seperti yang Anda lihat, menambahkan "-f" flag ke perintah sort memungkinkan Anda untuk mengabaikan case. Ini memudahkan kita untuk menyusun garis abjad dalam file teks dan mengabaikan kapitalisasi ketika itu tidak masalah.

Naskah Sederhana

Mari buat skrip yang memiliki bentuk berikut:

script listterm listfile

Ini akan mengambil istilah dan menggunakan grep untuk mencari melalui file daftar, mengurutkan hasil, dan kemudian menampilkannya ke file lain.

Inilah direktori yang akan kami uji skripnya di:

Dan, kita bisa membuat daftar apa di sini, lalu jalankan skripnya.

Ini dia! Semakin Anda mempelajari aturan ekspresi reguler, semakin akurat Anda dapat menyusun perintah pencarian. Dan, apa pun yang valid dalam tanda kutip dapat digantikan untuk argumen pertama Anda!

Sejauh pemilahan, Anda dapat melakukan lebih dari sekadar menyusun abjad. Lihatlah halaman manual untuk beberapa perintah berikut:

  • tsort - fungsi pemilahan topologi yang lebih maju
  • tr - memungkinkan Anda memetakan karakter tertentu ke karakter lain, dan menuliskan di antaranya.
  • uniq - menghapus yang tidak unik (baca: duplikat)
  • awk - bahasa / fungsi pemrosesan teks yang benar-benar maju yang dapat digunakan untuk memisahkan bidang dalam namafile
  • cut, paste / join - perintah berguna untuk mengisolasi field dari file teks dan menambahkan data baru ke dalam kolom
  • lihat - pencarian seperti grep, tetapi menggunakan file kamus (yang dapat ditentukan pengguna) untuk pencarian
  • wc - memungkinkan Anda mendapatkan jumlah kata, jumlah baris, jumlah karakter, dan banyak lagi

Kami melihat beberapa dasar lagi hari ini yang dapat berguna pada baris perintah seperti pada skrip. Data berbasis teks sering menjadi inti dari hal-hal yang kita gunakan setiap hari, jadi bisa bekerja dengannya, mencarinya, dan memanipulasinya adalah kunci.

Apa beberapa skrip favorit Anda? Memiliki skrip penggunaan khusus untuk file berbasis teks? Bagikan apa yang Anda ketahui di komentar!