Improving Command-line Productivity
Tags: ramadhanbersamaredhat, rh134, chapter1, bashscripts
Published: 2024-03-29 08:10:46

 **Menulis Skrip Bash Sederhana**

- **Tujuan**
Setelah menyelesaikan bagian ini, kita seharusnya dapat mengotomatiskan urutan perintah dengan menulis skrip shell sederhana.

**Membuat dan Menjalankan Skrip Bash Shell**
Banyak tugas administrasi sistem yang sederhana dan umum dilakukan dengan menggunakan alat bantu baris perintah. Tugas-tugas dengan kompleksitas yang lebih besar sering kali membutuhkan rangkaian beberapa perintah yang memberikan hasil di antara perintah-perintah tersebut. Dengan menggunakan lingkungan shell Bash dan fitur skrip, perintah-perintah Linux digabungkan ke dalam skrip shell untuk menyelesaikan masalah dunia nyata yang berulang dan sulit dengan mudah.
Dalam bentuknya yang paling sederhana, skrip shell Bash adalah file yang dapat dieksekusi yang berisi daftar perintah, dan mungkin dengan logika pemrograman untuk mengontrol pengambilan keputusan dalam keseluruhan tugas. Jika ditulis dengan baik, skrip shell adalah alat baris perintah yang kuat dengan sendirinya, dan dapat dimanfaatkan oleh skrip lain.
Kemahiran skrip shell sangat penting untuk administrasi sistem yang sukses dalam lingkungan operasional apa pun. Pengetahuan tentang skrip shell sangat penting dalam lingkungan perusahaan, di mana penggunaan skrip dapat meningkatkan efisiensi dan akurasi penyelesaian tugas rutin.
Kita dapat membuat skrip shell Bash dengan membuka file kosong baru di editor teks. Meskipun Anda dapat menggunakan editor teks apa pun, editor tingkat lanjut, seperti **vim atau emacs**, memahami sintaksis shell Bash dan dapat memberikan penyorotan dengan **color-coded**. Penyorotan ini membantu mengidentifikasi kesalahan umum seperti sintaks yang tidak tepat, tanda kutip yang tidak berpasangan, tanda kurung yang tidak tertutup, tanda kurung, dan tanda kurung, dan masih banyak lagi.

**Menentukan Penerjemah Perintah**
Baris pertama skrip dimulai dengan notasi **'#!'**, biasanya disebut sebagai **sh-bang atau she-bang**, dari nama dua karakter, **sharp dan bang**. Notasi **angka ajaib** dua-byte khusus ini menunjukkan skrip interpretatif; sintaks yang mengikuti notasi tersebut adalah nama file yang memenuhi syarat untuk penerjemah perintah yang benar yang diperlukan untuk memproses baris skrip ini. Untuk memahami bagaimana **angka ajaib** mengindikasikan jenis file di Linux, lihat halaman man **file(1) dan magic(5)**. Untuk berkas skrip yang menggunakan sintaksis skrip Bash, baris pertama skrip shell dimulai sebagai berikut:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/799w8h3he2tgq2kz5xtb.png)

**Menjalankan Skrip Bash Shell**
Skrip shell yang telah selesai dibuat harus dapat dieksekusi agar dapat dijalankan sebagai perintah biasa. Gunakan perintah **chmod** untuk menambahkan izin eksekusi, mungkin bersamaan dengan perintah **chown** untuk mengubah kepemilikan berkas skrip. Berikan izin eksekusi hanya untuk pengguna skrip yang dituju.
Jika Anda menempatkan skrip pada salah satu direktori yang terdaftar pada variabel lingkungan PATH, maka Anda dapat memanggil skrip shell dengan menggunakan nama file saja seperti pada perintah lainnya. Shell menggunakan perintah pertama yang ditemukannya dengan nama file tersebut; hindari menggunakan nama perintah yang sudah ada untuk nama file skrip shell Anda. Sebagai alternatif, Anda dapat memanggil skrip shell dengan memasukkan nama path ke skrip pada baris perintah. Perintah **which**, diikuti dengan nama file skrip yang dapat dieksekusi, menampilkan nama path ke perintah yang akan dieksekusi.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lv3le51rxqoq8pi12yku.png)

**Mengutip Karakter Khusus**
Sejumlah karakter dan kata memiliki arti khusus pada shell Bash. Namun, terkadang Anda ingin menggunakan karakter-karakter ini untuk nilai harfiahnya, dan bukan untuk arti khususnya. Untuk melakukan hal ini, gunakan salah satu dari tiga alat untuk menghapus dari arti khusus: karakter garis miring **(\)**, tanda kutip tunggal **('')**, atau tanda kutip ganda **("")**.
Karakter escape backslash akan menghapus makna khusus dari karakter tunggal yang langsung mengikutinya. Sebagai contoh, untuk menampilkan string literal # **not a coment** dengan perintah **echo**, tanda # tidak boleh ditafsirkan oleh Bash sebagai memiliki arti khusus. Tempatkan karakter garis miring di depan tanda #.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ux84lq5r0jqv06o96oo2.png)

Saat Anda perlu mengeluarkan lebih dari satu karakter dalam string teks, gunakan karakter escape beberapa kali atau gunakan tanda kutip tunggal **('')**. Tanda kutip tunggal mempertahankan arti harfiah dari semua karakter yang diapitnya. Perhatikan karakter escape dan tanda kutip tunggal dalam tindakan:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0igf6618w8g79fzfmga0.png)
Gunakan tanda petik ganda untuk menekan globbing dan ekspansi shell, tetapi tetap mengizinkan substitusi perintah dan variabel. Substitusi variabel secara konseptual identik dengan substitusi perintah, tetapi dapat menggunakan sintaks brace opsional. Perhatikan contoh berbagai bentuk penggunaan tanda kutip di bawah ini.
Gunakan tanda petik tunggal untuk mengartikan semua teks secara harfiah. Selain menekan globbing dan ekspansi shell, tanda petik mengarahkan shell untuk menekan perintah dan substitusi variabel. Tanda tanya (?) adalah karakter meta yang juga membutuhkan perlindungan dari perluasan.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1opd3ps082p4qq8halwh.png)
**Menyediakan Output Dari Skrip Shell**
Perintah **echo** menampilkan teks sembarang dengan mengoper teks sebagai argumen ke perintah. Secara default, teks ditampilkan pada output standar _(STDOUT)_, tetapi juga dapat diarahkan ke kesalahan standar _(STDERR )_ menggunakan pengalihan output. Pada skrip Bash sederhana berikut ini, perintah echo menampilkan pesan `"Hello, world"` ke STDOUT.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/motlo24s99uxmuihigo3.png)

**Catatan**
Pengguna ini dapat menjalankan **hello** pada prompt karena direktori `~/bin(/home/user/bin)` ada di variabel `PATH` pengguna dan skrip hello di dalamnya dapat dieksekusi. Shell secara otomatis menemukan skrip di sana, selama tidak ada file yang dapat dieksekusi bernama `hello` pada direktori manapun yang terdaftar sebelum `/home/user/bin` pada `PATH.`

Perintah **echo** banyak digunakan dalam skrip shell untuk menampilkan pesan informasi atau kesalahan. Pesan-pesan ini dapat menjadi indikator yang berguna untuk mengetahui kemajuan skrip dan dapat diarahkan ke output standar, kesalahan standar, atau dialihkan ke file log untuk diarsipkan. Ketika menampilkan pesan kesalahan, merupakan praktik yang baik untuk mengarahkannya ke STDERR agar lebih mudah untuk membedakan pesan kesalahan dari pesan status normal.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amumctl1bmc31a4a81b9.png)
Perintah **echo** juga dapat sangat membantu ketika mencoba men-debug skrip shell yang bermasalah. Penambahan pernyataan echo pada bagian skrip yang tidak berperilaku seperti yang diharapkan dapat membantu memperjelas perintah yang sedang dieksekusi, serta nilai variabel yang dipanggil.