Bash adalah bahasa yang cukup kuat untuk diprogram, dan juga cukup mudah untuk memulai.
Lagi pula, itu hampir secara universal shell yang akan Anda lihat ketika Anda membuka terminal Anda. Itu membuatnya sangat berguna untuk membiasakan diri.
Ada beberapa perintah kuat di Bash yang mungkin tidak Anda sadari, meskipun Anda cukup berpengalaman menggunakan bahasa tersebut. Semua perintah ini dapat melayani tujuan yang cukup berguna, dan dapat membuat skrip shell yang Anda tulis lebih bersih, lebih mudah dipelihara, dan benar-benar lebih kuat daripada sebelumnya.
Baca:Meminta masukan dari Pengguna
Perintah read memungkinkan Anda mengambil input dari pengguna dan menyimpannya di dalam variabel.
#!/usr/bin/env bash
echo "What is your name?"
read name
echo "Your name is ${name}!"
Ini akan menunggu masukan dari Anda, pengguna, dan kemudian menetapkan nilai untuk name
variabel ke string yang Anda masukkan.
Misalnya, jika Anda menetapkan nama Anda sebagai Linux Handbook
saat menjalankan skrip di atas, itu akan menampilkan Your name is Linux Handbook!
.
Anda juga dapat membuat contoh di atas lebih ringkas dengan menentukan -p
pilihan untuk read
perintah, yang akan mencetak string yang ditentukan setelah -p
, lalu minta masukan dari pengguna:
#!/usr/bin/env bash
read -p "What is your name? " name
echo "Your name is ${name}!"
Anda juga akan melihat bahwa saya menambahkan spasi setelah What is your name?
. Jika kami tidak menambahkannya, itu akan benar-benar mencetak What is your name?
tanpa spasi, yang akan membuatnya terlihat sedikit lebih aneh saat pengguna memasukkan input mereka:
Mapfile:Menetapkan variabel nilai baris file
Anda dapat menggunakan mapfile
perintah untuk membaca konten file, dan kemudian menetapkan output itu ke array Bash, dengan setiap item array dibuat setiap kali baris baru ditemukan dalam file.
Sebagai contoh, mari kita buat sebuah file bernama file.txt
yang berisi teks berikut:
Line 1
Line 2
Line 3
Line 4
Line 5
Anda dapat mengonversi file ini menjadi array Bash dengan menjalankan perintah berikut, yang menetapkan konten file ke file_var
variabel:
#!/usr/bin/env bash
mapfile file_var < file.txt
for i in "${file_var[@]}"; do
echo "${i}"
done
Anda akan melihat bahwa di atas menghasilkan beberapa keluaran dengan spasi aneh juga yang tidak selaras dengan apa yang ada di dalam file, yang dapat diselesaikan dengan menambahkan -t
pilihan ke mapfile
perintah:
#!/usr/bin/env bash
mapfile -t file_var < file.txt
for i in "${file_var[@]}"; do
echo "${i}"
done
Terakhir, Anda mungkin memperhatikan bahwa berikut ini tidak berfungsi:
#!/usr/bin/env bash
cat file.txt | mapfile -t file_var
Ini karena mapfile
perintah di sisi kanan pipa dijalankan dalam subkulit (atau dengan kata lain, contoh baru Bash), yang tidak dapat memengaruhi shell Anda saat ini.
Sumber:Masukkan variabel dari file ke lingkungan shell Anda
Katakanlah Anda memiliki file imajiner berikut, config.sh
, dengan isi sebagai berikut:
username=linuxhandbook
domain=linuxhandbook.com
Bagaimana jika Anda ingin mengambil konten file itu dan memasukkannya ke dalam lingkungan shell Anda saat ini?
Ini dapat dilakukan cukup sederhana hanya dengan menggunakan perintah sumber:
source config.sh
Anda kemudian dapat memeriksa untuk melihat bahwa variabel telah ditetapkan seperti yang diharapkan:
Di bawah tenda, source
perintah sebenarnya menjalankan file yang ditentukan di lingkungan shell Anda saat ini, jadi mengetikkan perintah apa pun di file itu sebenarnya akan menyebabkannya dieksekusi saat menjalankan source
.
Sebagai contoh, mari kita masukkan yang berikut ini ke dalam config.sh
:
name="Linux Handbook"
echo "Hello ${name}!"
echo "Have a good day!"
Jika kita kemudian menjalankan soure config.sh
, Anda akan melihat bahwa dua echo
perintah dijalankan, serta name
variabel yang ditugaskan:
Anda juga dapat menggunakan .
sebagai pengganti source
, yang bertindak dengan cara yang sama seperti source
akan.
Menutup
Dan begitu saja, Anda semakin jauh dalam melakukan tugas yang lebih kuat dan berguna, sambil tetap berada di dalam Bash.
Apakah ada perintah lain yang sering Anda gunakan di Bash? Jangan ragu untuk meninggalkan salah satu dari mereka di komentar di bawah.