Melihat isi berkas

Membaca isi berkas dengan cat, head, dan tail, termasuk mengikuti pertumbuhan berkas log dengan -f.

Daftar isi

Topik ini membahas cara membaca isi berkas langsung dari terminal tanpa membuka editor, mulai dari cat untuk pembacaan utuh, head dan tail untuk potongan awal dan akhir, hingga tail dengan opsi -f untuk mengikuti berkas yang terus bertambah. Contoh utamanya adalah log, yaitu catatan kejadian yang ditulis oleh sebuah program secara berurutan selama berjalan. Berkas contohnya berupa log sensor suhu ruang laboratorium yang diperbarui setiap lima menit, sehingga kebiasaan membaca log dapat dilatih pada data yang wajar dan mudah diperiksa.

Berkas contoh dan pembacaan utuh dengan cat#

Berkas contoh topik ini disertakan bersama halaman ini dan berisi dua belas baris pencatatan suhu serta kelembapan. Setiap baris memuat tanggal, jam pencatatan, nilai suhu, dan nilai kelembapan, sehingga struktur barisnya mudah diuraikan dengan mata.

text sensor-suhu.log
2025-06-01 08:00 suhu=24.6 kelembapan=61
2025-06-01 08:05 suhu=24.8 kelembapan=61
2025-06-01 08:10 suhu=25.1 kelembapan=60
2025-06-01 08:15 suhu=25.3 kelembapan=60
2025-06-01 08:20 suhu=25.6 kelembapan=59
2025-06-01 08:25 suhu=25.7 kelembapan=59
2025-06-01 08:30 suhu=26.0 kelembapan=58
2025-06-01 08:35 suhu=26.2 kelembapan=58
2025-06-01 08:40 suhu=26.3 kelembapan=57
2025-06-01 08:45 suhu=26.5 kelembapan=57
2025-06-01 08:50 suhu=26.8 kelembapan=56
2025-06-01 08:55 suhu=27.0 kelembapan=56

Perintah cat mencetak seluruh isi berkas ke keluaran standar, dan namanya berasal dari concatenate, yakni menggabungkan, karena perintah ini juga mampu menyambung beberapa berkas menjadi satu aliran keluaran. Pembacaan utuh paling cocok untuk berkas pendek seperti contoh ini, sedangkan berkas panjang lebih tepat dibaca dengan potongan pada bagian berikutnya.

bash
# mencetak seluruh isi log sensor
cat sensor-suhu.log
text Keluaran
2025-06-01 08:00 suhu=24.6 kelembapan=61
2025-06-01 08:05 suhu=24.8 kelembapan=61
2025-06-01 08:10 suhu=25.1 kelembapan=60
2025-06-01 08:15 suhu=25.3 kelembapan=60
2025-06-01 08:20 suhu=25.6 kelembapan=59
2025-06-01 08:25 suhu=25.7 kelembapan=59
2025-06-01 08:30 suhu=26.0 kelembapan=58
2025-06-01 08:35 suhu=26.2 kelembapan=58
2025-06-01 08:40 suhu=26.3 kelembapan=57
2025-06-01 08:45 suhu=26.5 kelembapan=57
2025-06-01 08:50 suhu=26.8 kelembapan=56
2025-06-01 08:55 suhu=27.0 kelembapan=56

Sifat penggabungan itu terlihat ketika cat menerima dua argumen berurutan, yaitu cetakan dimulai dari berkas pertama dan langsung disambung oleh berkas kedua tanpa pemisah. Contoh berikut membuat satu baris keterangan lalu menyambungkannya di depan log.

bash
# membuat keterangan lalu menyambungkannya dengan log
printf 'Laporan sensor suhu laboratorium\nPeriode 2025-06-01 pagi\n' > laporan-suhu.txt
cat laporan-suhu.txt sensor-suhu.log
text Keluaran
Laporan sensor suhu laboratorium
Periode 2025-06-01 pagi
2025-06-01 08:00 suhu=24.6 kelembapan=61
2025-06-01 08:05 suhu=24.8 kelembapan=61
2025-06-01 08:10 suhu=25.1 kelembapan=60
2025-06-01 08:15 suhu=25.3 kelembapan=60
2025-06-01 08:20 suhu=25.6 kelembapan=59
2025-06-01 08:25 suhu=25.7 kelembapan=59
2025-06-01 08:30 suhu=26.0 kelembapan=58
2025-06-01 08:35 suhu=26.2 kelembapan=58
2025-06-01 08:40 suhu=26.3 kelembapan=57
2025-06-01 08:45 suhu=26.5 kelembapan=57
2025-06-01 08:50 suhu=26.8 kelembapan=56
2025-06-01 08:55 suhu=27.0 kelembapan=56

Membaca potongan dengan head dan tail#

Perintah head mencetak sebagian awal berkas, sedangkan tail mencetak sebagian akhirnya. Secara default, keduanya mencetak sepuluh baris, sehingga pada log dua belas baris ini keluaran default head berisi baris pertama hingga kesepuluh, sedangkan keluaran default tail memuat baris ketiga hingga keduabelas. Jumlah baris yang diinginkan dinyatakan dengan opsi -n diikuti angka, misalnya -n 3 untuk tiga baris.

bash
# sepuluh baris pertama secara default
head sensor-suhu.log
text Keluaran
2025-06-01 08:00 suhu=24.6 kelembapan=61
2025-06-01 08:05 suhu=24.8 kelembapan=61
2025-06-01 08:10 suhu=25.1 kelembapan=60
2025-06-01 08:15 suhu=25.3 kelembapan=60
2025-06-01 08:20 suhu=25.6 kelembapan=59
2025-06-01 08:25 suhu=25.7 kelembapan=59
2025-06-01 08:30 suhu=26.0 kelembapan=58
2025-06-01 08:35 suhu=26.2 kelembapan=58
2025-06-01 08:40 suhu=26.3 kelembapan=57
2025-06-01 08:45 suhu=26.5 kelembapan=57
bash
# tiga baris pertama dengan opsi -n
head -n 3 sensor-suhu.log
text Keluaran
2025-06-01 08:00 suhu=24.6 kelembapan=61
2025-06-01 08:05 suhu=24.8 kelembapan=61
2025-06-01 08:10 suhu=25.1 kelembapan=60

Bagian akhir log justru paling sering ditanyakan karena pencatatan terbaru berada di sana. Perintah tail mengambil baris akhir tanpa perlu mengetahui panjang berkasnya terlebih dahulu, sehingga cara ini tetap berlaku pada log berukuran berapa pun. Pada contoh berikut, tail -n 3 menampilkan tiga pencatatan terbaru, yaitu pukul 08.45 hingga 08.55.

bash
# tiga baris terakhir dengan tail
tail -n 3 sensor-suhu.log
text Keluaran
2025-06-01 08:45 suhu=26.5 kelembapan=57
2025-06-01 08:50 suhu=26.8 kelembapan=56
2025-06-01 08:55 suhu=27.0 kelembapan=56

Opsi -n pada tail juga menerima bentuk dengan tanda tambah, misalnya tail -n +3 yang berarti cetak mulai baris ketiga hingga akhir berkas. Bentuk ini berguna untuk melewati baris keterangan di kepala sebuah berkas data, dan aturan penghitungannya sama persis dengan head.

Mengikuti pertumbuhan log dengan tail -f#

Berkas log sifatnya hidup, yaitu bertambah seiring waktu ketika program yang menulisnya masih berjalan. Opsi -f, singkatan dari follow, membuat tail tidak berhenti setelah mencetak baris akhir, melainkan terus menunggu dan mencetak setiap baris baru begitu baris itu ditulis ke berkas. Karena perintah ini sengaja tidak pernah berhenti sendiri, contohnya tidak dijalankan pada lingkungan uji yang berbatas waktu.

bash
# tidak-dijalankan
# tail -f terus berjalan dan mencetak baris baru selama berkas bertambah
tail -f sensor-suhu.log

Pada mulanya, keluaran yang tampak pada layar adalah sepuluh baris terakhir, lalu layar tetap diam hingga ada baris baru dari sensor, dan baris baru itu langsung dicetak begitu masuk. Perintah berhenti ketika tombol Ctrl-C ditekan, dan terminal kembali menerima perintah seperti biasa. Pola pemakaian yang lazim adalah menjalankan tail -f pada terminal terpisah selama sebuah program diuji, sehingga catatan kejadiannya dapat dibaca sambil program itu bekerja.

Membaca berkas panjang dengan less#

Untuk berkas yang tidak muat dalam satu layar, program pager bernama less menyajikan isi berkas per halaman, dan navigasinya dilakukan tanpa mengubah isi berkas apa pun. Tombol panah, tombol Spasi, dan tombol PageUp atau PageDown memindahkan tampilan, penanda / menjalankan pencarian kata ke depan, tombol n mengulang pencarian yang sama, dan tombol q menutup program. Berbeda dengan cat yang membaca berkas sampai selesai sebelum mencetak, less membaca sebagian dulu sebesar yang dibutuhkan layar, sehingga berkas berukuran besar pun terbuka dengan cepat. Contoh perintahnya sederhana, tetapi pada lingkungan uji topik ini program less tidak terpasang, sehingga barisnya hanya menunjukkan bentuk pemanggilannya.

bash
# tidak-dijalankan
# less membuka halaman pembacaan per layar dan ditutup dengan tombol q
less sensor-suhu.log

Program less tidak terpasang pada setiap sistem secara default, sedangkan cat, head, dan tail selalu tersedia. Apabila less belum ada, keluaran berupa command not found berarti programnya perlu dipasang dahulu melalui pengelola paket sistem masing-masing. Selama less belum terpasang, kombinasi cat untuk berkas pendek dan tail untuk bagian akhir berkas panjang sudah mencakup sebagian besar kebutuhan membaca log sehari-hari.

Kesalahan umum#

Kesalahan yang paling sering terjadi adalah salah menulis nama berkas, dan pesannya langsung menyebut nama yang tidak ditemukan seperti contoh berikut.

bash
# membaca berkas dengan nama yang salah
cat sensor.log
text Keluaran
cat: sensor.log: No such file or directory

Pesan tersebut berarti tidak ada berkas bernama sensor.log pada direktori kerja, dan nama yang benar adalah sensor-suhu.log. Kesalahan serupa muncul ketika cat diarahkan ke sebuah direktori, karena cat hanya membaca berkas biasa dan menolak direktori dengan pesan tersendiri.

bash
# mengarahkan cat ke sebuah direktori
mkdir contoh-direktori
cat contoh-direktori
text Keluaran
cat: contoh-direktori: Is a directory

Satu kekeliruan lagi terjadi setelah tail -f, yaitu tidak menyadari bahwa perintahnya masih berjalan, sehingga terminal terkesan tidak merespons, padahal cukup menekan Ctrl-C untuk menghentikannya. Kunci membaca pesan error seperti di atas adalah memusatkan perhatian pada nama yang disebut pesan itu, karena nama tersebut persis menunjukkan argumen yang tidak berhasil diproses. Kebiasaan yang menahan seluruh kesalahan di atas adalah menjalankan ls terlebih dahulu untuk memastikan nama dan tipe target sebelum perintah pembaca dijalankan.

Ringkasan#

  • cat mencetak seluruh isi berkas dan menyambung beberapa berkas menjadi satu aliran keluaran, sehingga paling cocok untuk berkas pendek.
  • head dan tail mencetak sepuluh baris secara default, opsi -n mengatur jumlah barisnya, dan tail membaca bagian akhir tanpa perlu tahu panjang berkasnya.
  • tail dengan opsi -f terus berjalan dan mencetak baris log yang baru ditulis, lalu dihentikan dengan Ctrl-C.
  • less membaca berkas panjang per halaman dengan pencarian dan ditutup tombol q, tetapi tidak selalu terpasang pada setiap sistem.

Referensi#