Panduan Lengkap Perintah read Skrip Shell Linux - Dari Input Pengguna hingga Membaca File Baris demi Baris dengan Tips Praktis

Gambaran Umum

Artikel ini membahas penggunaan esensial dari perintah read yang sangat penting untuk menangani input interaktif pengguna dan penguraian data teks saat menulis skrip shell Bash Linux. Anda dapat menguasai segalanya mulai dari penanganan input dasar, masking kata sandi (-s), batas waktu (-t), pemisahan pemisah (IFS), hingga teknik pemrosesan file baris demi baris berbasis loop while yang paling sering digunakan dalam praktik kerja.

1. Dasar Perintah read, Prompt (-p), dan Pengaturan Nilai Default

Jalankan perintah mkdir -p ~/read-demo && cd ~/read-demo untuk membuat direktori khusus untuk latihan perintah read dan berpindah ke dalamnya.

mkdir -p ~/read-demo && cd ~/read-demo

Perintah read membaca satu baris dari input standar (standard input) dan menyimpannya ke dalam variabel. Opsi -p digunakan untuk menampilkan pesan panduan pengguna, dan sintaks ${nama_variabel:-nilai_default} dapat dimanfaatkan untuk menetapkan nilai default pengganti ketika nilainya kosong.
Pada hasil eksekusi, karena input tidak diberikan langsung ke perintah read, variabel username tetap dalam keadaan kosong sehingga nilai default guest ditampilkan sesuai sintaks ${username:-guest}.
⚙️ [Opsi Utama]

-p : Menentukan string prompt panduan yang akan ditampilkan di layar sebelum menerima input.
-s : Mengaktifkan mode rahasia yang tidak menampilkan karakter input di layar saat memasukkan informasi sensitif seperti kata sandi.
-t : Mengatur batas waktu tunggu input (detik) dan mengakhiri input jika waktu yang ditentukan telah berlalu.
-n : Hanya menerima sejumlah karakter yang ditentukan dan langsung berakhir tanpa perlu menekan tombol Enter.
-r : Membaca karakter garis miring terbalik (\) apa adanya tanpa menginterpretasikannya sebagai karakter escape.
-a : Memisahkan kata-kata yang dimasukkan berdasarkan spasi dan menyimpannya secara berurutan ke dalam variabel array.
-d : Menentukan karakter pembatas (delimiter) sendiri untuk mengakhiri input sebagai pengganti karakter baris baru.

bash -c ‘read -p “사용자 이름을 입력하세요: " username; echo “입력된 사용자: ${username:-guest}” «< “tester”’

2. Masking Kata Sandi (-s) dan Penanganan Batas Waktu Input (-t)

Untuk melanjutkan latihan, jalankan perintah cd ~/read-demo untuk berpindah ke direktori ~/read-demo yang telah dibuat sebelumnya.

cd ~/read-demo

Input diterima dengan menyembunyikan tampilan layar menggunakan opsi -s dan memberikan batas waktu 5 detik menggunakan opsi -t 5.
Kata sandi berhasil dikirim dalam batas waktu yang ditentukan, sehingga kode status keluar ($?) ditampilkan sebagai 0.

bash -c ‘read -t 5 -sp “비밀번호를 입력하세요 (5초 제한): " userpass; echo; echo “입력 완료 여부: $?” «< “secret1234”’

3. Pemisahan Multi-Variabel dan Array Menggunakan Pemisah (IFS) dan Opsi -a

Untuk melanjutkan latihan, jalankan perintah cd ~/read-demo untuk berpindah ke direktori ~/read-demo yang telah dibuat sebelumnya.

cd ~/read-demo

Setelah menentukan pemisah bidang internal (IFS) sebagai koma (,), string format CSV yang dikirimkan melalui Here-String (<<<) dibaca dengan perintah read dan disimpan secara terpisah ke dalam variabel col1, col2, dan col3.
Hasil eksekusi menunjukkan nama server, alamat IP, dan nama layanan yang ada pada string berhasil dipisahkan dan ditampilkan ke masing-masing variabel sesuai dengan pemisah yang ditentukan.

bash -c ‘IFS=”,” read -r col1 col2 col3 «< “server01,192.168.1.10,nginx”; echo “서버: $col1 | IP: $col2 | 서비스: $col3”’

Dengan mengatur pemisah (IFS) menjadi titik dua (:) dan menggunakan opsi -a, string format /etc/passwd disimpan secara terpisah ke dalam variabel array user_info.
Nama akun (root) pada indeks ke-0 array dan path login shell (/bin/bash) pada indeks ke-6 berhasil diekstraksi dan ditampilkan dengan benar.

bash -c ‘IFS=":" read -ra user_info «< “root:x:0:0:root:/root:/bin/bash”; echo “계정명: ${user_info[0]}, 셸: ${user_info[6]}”’

4. Inti Praktis: Pemrosesan File Baris demi Baris Berukuran Besar Menggunakan Loop while dan read -r

Untuk melanjutkan latihan, jalankan perintah cd ~/read-demo untuk berpindah ke direktori ~/read-demo yang telah dibuat sebelumnya.

cd ~/read-demo

Untuk latihan pemrosesan file baris demi baris, buat file contoh CSV servers.csv yang berisi nama server dan status operasi yang dipisahkan dengan koma.

echo -e “server-web,running\nserver-db,stopped\nserver-cache,running” > servers.csv

Gunakan loop while bersama dengan perintah read -r dan tetapkan pemisah bidang internal (IFS) sebagai koma (,) untuk membaca setiap baris file servers.csv secara aman baris demi baris.
Hasil eksekusi menunjukkan nama server dan informasi status yang tercatat dalam file berhasil dimasukkan ke dalam variabel name dan status, lalu ditampilkan sesuai format.

while IFS="," read -r name status; do echo “[상태 점검] $name 서버는 현재 $status 상태입니다.”; done < servers.csv

Sejauh ini, kita telah melihat secara ringkas mulai dari penggunaan dasar perintah read yang dapat dimanfaatkan dalam skrip shell Linux hingga teknik membaca file baris demi baris yang sering digunakan di lingkungan kerja nyata.
Berdasarkan berbagai opsi dan contoh yang dibahas hari ini, silakan coba tulis skrip otomatisasi interaktif Anda sendiri yang sesuai dengan kebutuhan.