Sebagian besar pekerjaan data engineering terjadi di server tanpa antarmuka grafis: pipeline berjalan lewat SSH, log tersimpan sebagai berkas teks berukuran ratusan megabyte, dan berkas hasil ekstraksi tersebar di banyak folder. Menguasai command line berarti mampu memeriksa semua itu dalam hitungan detik tanpa membuka editor. Chapter ini berlatih dengan dua berkas kecil yang mewakili pekerjaan nyata: transaksi.csv berisi data hasil ekstraksi dan pipeline.log berisi catatan jalannya pipeline.

Bernavigasi di Filesystem #

Perintah pwd mencetak folder kerja saat ini, sedangkan ls -R mendaftar isi folder beserta subfoldernya secara berulang. Kedua perintah tersebut menjadi titik awal sebelum menyentuh berkas apa pun:

bash
pwd
ls -R .

Output yang Dihasilkan:

text
/home/z/my-project/scratch/W1-c/cli-demo
.:
data
pipeline.log

./data:
transaksi.csv

Navigasi dilakukan dengan cd data untuk masuk ke subfolder dan cd .. untuk naik satu tingkat. Perhatikan bahwa ls -R menampilkan struktur folder secara bertingkat: folder data berisi transaksi.csv, sementara pipeline.log berada di folder kerja itu sendiri.

Membaca dan Memfilter Teks #

Perintah cat menampilkan seluruh isi berkas — cukup untuk berkas kecil, tetapi berbahaya untuk log ratusan megabyte. Untuk itulah kita memfilter. Mulailah dengan mengenali isi kedua berkas:

bash
cat data/transaksi.csv
cat pipeline.log

Output yang Dihasilkan:

text
Budi,gula,12000
Siti,kopi,8500
Dewi,gula,9000
Budi,teh,5000
Siti,gula,12000
2026-10-01 10:00 pipeline extract selesai
2026-10-01 10:05 ERROR koneksi database gagal
2026-10-01 10:06 pipeline load berjalan
2026-10-01 10:09 ERROR validasi schema gagal

Selanjutnya kita saring baris yang relevan saja dengan grep, hitung jumlahnya dengan wc -l, dan urutkan dengan sort:

bash
grep gula data/transaksi.csv
grep -c ERROR pipeline.log
wc -l data/transaksi.csv
sort data/transaksi.csv | head -3

Output yang Dihasilkan:

text
Budi,gula,12000
Dewi,gula,9000
Siti,gula,12000
2
5 data/transaksi.csv
Budi,gula,12000
Budi,teh,5000
Dewi,gula,9000

Perintah grep gula hanya menampilkan baris yang memuat kata gula, dan grep -c ERROR menghitung dua baris bermasalah di log. Tanda | (pipe) pada baris terakhir mengalirkan keluaran sort ke perintah head -3, sehingga hanya tiga baris pertama yang tampil.

Merangkai Perintah dengan Pipe dan Redirect #

Pipe menghubungkan keluaran satu perintah ke masukan perintah berikutnya. Kombinasi klasik untuk meringkas data CSV adalah cut + sort + uniq -c:

bash
cut -d, -f2 data/transaksi.csv | sort | uniq -c

Output yang Dihasilkan:

text
      3 gula
      1 kopi
      1 teh

Mari kita telaah baris-baris perintah di atas:

  1. cut -d, -f2: memotong setiap baris dengan pemisah koma (-d,) lalu mengambil kolom kedua (-f2), yaitu nama produk.
  2. sort: mengurutkan hasil kolom kedua agar baris bernilai sama berdekatan — uniq memerlukan urutan ini.
  3. uniq -c: meringkas baris berurutan yang sama dan mencetak jumlah kemunculannya di depan nilainya.

Redirect menyimpan hasil ke berkas alih-alih layar. Tanda > menulis berkas baru (menimpa bila sudah ada), sedangkan >> menambahkan di akhir berkas:

bash
grep ERROR pipeline.log > error.log
echo "2026-10-01 10:10 pipeline retry berhasil" >> error.log
cat error.log

Output yang Dihasilkan:

text
2026-10-01 10:05 ERROR koneksi database gagal
2026-10-01 10:09 ERROR validasi schema gagal
2026-10-01 10:10 pipeline retry berhasil

Perintah grep dan echo tidak lagi mencetak ke layar; keduanya menulis ke error.log, dan isi berkas tersebut baru terlihat setelah cat dijalankan. Pola ini dipakai untuk memisahkan baris galat dari log besar sebelum dianalisis.

Mencari Berkas dengan find #

Ketika struktur folder membelit, perintah find mencari berkas berdasarkan nama, tipe, atau ukurannya:

bash
find . -name '*.csv'
find . -type f -name '*.log'

Output yang Dihasilkan:

text
./data/transaksi.csv
./pipeline.log
./error.log

Argumen pertama (.) adalah titik mulai pencarian, -name '*.csv' mencocokkan nama berkas dengan pola, dan -type f membatasi hasil hanya berkas biasa. Kombinasi find + grep menjadi pasangan andalan: find . -name '*.log' | xargs grep ERROR memindai seluruh berkas log sekaligus.

Rujukan lengkap semua perintah bawaan Bash tersedia di manual resmi https://www.gnu.org/software/bash/manual/ . Keterampilan terminal ini juga menjadi bekal utama saat kita mengoperasikan container di chapter Pengenalan Docker.