Perintah cat Linux: tampilkan, gabungkan, dan periksa isi file

cat menampilkan isi file pada keluaran standar dan menggabungkan beberapa file sesuai urutan argumennya. Gunakan untuk teks pendek atau menyambung data; untuk menelusuri file panjang, less (bahasa Inggris) menyediakan tampilan per halaman dan pencarian. Pengalihan > dapat mengosongkan file tujuan, sehingga input dan output harus diperiksa sebelum dijalankan.

Untuk mencoba contoh, buat direktori baru dengan mkdir -- cat-lab && cd -- cat-lab dan hentikan jika gagal. Gunakan file latihan milik Anda dengan nama yang belum dipakai; jangan menimpa konfigurasi atau data penting. Contoh berikut memakai GNU Coreutils; periksa versi dan bantuan pada sistem tujuan.

Nama cat berasal dari concatenate, yaitu menyambung. Keluaran standar adalah aliran hasil perintah, biasanya menuju terminal, tetapi dapat dialihkan ke file atau perintah lain. Tanpa nama file, cat membaca masukan standar, biasanya keyboard atau pipa. Operand - juga berarti masukan standar. Tanpa opsi yang mengubah tampilan, byte input disambung tanpa pemisah tambahan.

Sintaks dasar

cat [OPSI]... [FILE]...

Periksa cat --help dan man cat untuk dukungan opsi. Kutip nama yang mengandung spasi dan gunakan -- sebelum nama berawalan tanda hubung, misalnya cat -- "-catatan saya.txt". Jika nama filenya tepat -, gunakan ./- agar dibaca sebagai file biasa, bukan masukan standar.

Penggunaan dasar cat

Menampilkan sebuah file

Contoh Linux berikut membaca identitas distribusi dari /etc/os-release jika tersedia. Isinya berbeda menurut distribusi; cat tidak mengubah isi konfigurasi itu. Untuk file biasa lain, ganti argumennya dengan jalur yang ingin dibaca. Jika jalur tidak ada atau akses baca ditolak, periksa pesan kesalahan dan status keluar.

cat /etc/os-release

Menggabungkan beberapa file

Siapkan part-01.txt dan part-02.txt sebagai dua file latihan. Isinya ditulis sesuai urutan argumen, bukan diurutkan berdasarkan nama. Bila file pertama berisi AB tanpa baris baru di akhir dan file kedua berisi CD, hasilnya ABCD, bukan dua baris. cat tidak menambahkan pemisah secara otomatis.

cat part-01.txt part-02.txt

Simpan output yang digabungkan

Siapkan kedua file bab terlebih dahulu dan pastikan book.txt adalah tujuan baru. Shell menangani > sebelum cat berjalan: file output yang ada biasanya dipotong menjadi kosong, lalu baru diisi hasil. Bila input tidak dapat dibaca, output dapat kosong atau hanya berisi sebagian gabungan. Periksa pesan kesalahan, status keluar, dan hasilnya; keberadaan book.txt saja bukan bukti gabungan lengkap. >> menambahkan ke akhir file, tetapi output tetap tidak boleh menjadi salah satu input.

cat chapter-1.txt chapter-2.txt > book.txt

Memeriksa keluaran standar

Contoh lengkap ini menulis dua baris data uji ke sample.txt baru, lalu membacanya hanya jika penulisan berhasil. Opsi tampilan tidak digunakan, sehingga teks hasil sama dengan isi file.

printf '%s\n' 'one' 'two' > sample.txt &&
cat -- sample.txt

Contoh output:

one
two

Setiap baris contoh berakhir dengan karakter baris baru. cat tidak berhenti pada setiap halaman; gunakan less untuk navigasi, atau perintah seperti head untuk mengambil bagian awal. Dalam pipa sederhana, grep pola file juga sering lebih langsung daripada menjalankan cat terlebih dahulu.

Opsi utama

Opsi Tujuan
-n Memberi nomor setiap baris output.
-b Memberi nomor pada baris yang tidak kosong dan menggantikan -n.
-s Mengecilkan beberapa baris kosong menjadi satu.
-E Menampilkan penanda $ pada setiap akhir baris.
-T Menampilkan karakter tab sebagai ^I.
-A Menampilkan tab, akhir baris, dan karakter tidak tercetak lainnya.

Pada GNU, -A sama dengan -vET. -b mengalahkan -n tanpa bergantung pada urutan opsi. Baris berisi spasi atau tab tetap dianggap tidak kosong; -s hanya merapatkan baris kosong yang berurutan, bukan semua baris yang tampak kosong. Opsi ini mengubah hasil yang ditampilkan atau disimpan, bukan mengedit input.

Contoh praktis

Memeriksa file dengan nomor baris

Contoh berikut menyiapkan tiga baris konfigurasi latihan: satu baris isi, satu baris kosong, lalu satu baris isi. -n menampilkan nomor 1, 2, dan 3, termasuk nomor pada baris kosong. Nomor merupakan tambahan pada output; file asal tetap tidak berisi nomor itu.

printf '%s\n' 'port=8080' '' 'mode=prod' > app.conf &&
cat -n -- app.conf

Tampilkan karakter tersembunyi

Contoh baru berikut membuat teks dengan tab dan pasangan akhir baris carriage return/line feed (CRLF). Pada GNU cat di Linux, -A menampilkan tab sebagai ^I, carriage return sebagai ^M, dan akhir baris sebagai $: hasil contohnya echo^Ihello^M$. File hanya dibaca untuk inspeksi, tidak dijalankan sebagai skrip.

printf 'echo\thello\r\n' > script.sh &&
cat -A -- script.sh

Baca input standar ke dalam file

Pilih nama memo.txt yang belum dipakai. Pada terminal Linux dengan pengolahan baris normal (mode kanonik), ketik satu atau beberapa baris, tekan Enter setelah baris terakhir, lalu tekan Ctrl+D pada baris kosong untuk mengakhiri masukan atau EOF (end of file). Jika masih ada teks yang belum diakhiri Enter, Ctrl+D pertama dapat mengirim teks itu tanpa mengakhiri masukan; tekan lagi ketika buffer kosong. Perilaku ini mengikuti pengaturan terminal, bukan aturan semua antarmuka konsol.

cat > memo.txt

Setelah prompt shell kembali, periksa hasil dengan cat -- memo.txt. Untuk menambahkan teks pada kesempatan berikutnya, cat >> memo.txt memakai aturan akhir masukan yang sama. Penulisan tidak memiliki tombol urungkan dan Ctrl+C tidak mengembalikan isi lama yang sudah dipotong; gunakan editor bila perlu mengubah atau meninjau teks sebelum menyimpan. Manual terminal Linux menjelaskan kapan karakter EOF mengirim buffer atau mengakhiri bacaan.

Perbandingan dengan perintah lain

Referensi perintah Linux berdasarkan tugas (bahasa Inggris) membantu memilih perintah ketika yang diperlukan bukan penyambungan byte berurutan.

Perintah Peran utama Cocok untuk
cat Menampilkan atau menggabungkan aliran File pendek dan pipeline
less Paging interaktif dan pencarian File panjang
tac Membalik urutan rekaman Membaca baris mulai dari akhir file
paste Menggabungkan baris yang bersesuaian Menggabungkan file sebagai kolom

Hal yang perlu diperhatikan

Gunakan less untuk file besar

File besar dapat memenuhi riwayat gulir terminal tanpa fasilitas pencarian atau perpindahan halaman. less lebih sesuai untuk membaca panjang; cat tetap berguna untuk menyambung aliran data yang tidak ditampilkan langsung ke terminal.

Jangan mengarahkan file ke dirinya sendiri

Pada cat file > file, shell dapat mengosongkan file sebelum cat sempat membaca. Nama jalur yang berbeda pun dapat menunjuk data yang sama melalui tautan, jadi memeriksa ejaan nama saja tidak cukup. Aturan pengalihan output POSIX menjelaskan pembuatan dan pemotongan oleh shell. Gunakan file tujuan baru yang terpisah dari semua input; mengubah > menjadi >> bukan cara aman menyambung file ke dirinya sendiri.

Hindari mengirim data biner ke terminal

Byte kontrol dapat mengubah tampilan terminal. Gunakan file untuk mengidentifikasi jenis data atau od, hexdump, atau xxd untuk memeriksa byte dalam bentuk yang terbaca, sesuai alat yang tersedia. cat -A adalah alat bantu tampilan, bukan pemeriksa encoding atau cara memperbaiki file. Pada teks UTF-8, tampilan byte non-ASCII dapat sulit dibaca; pilih alat sesuai masalah yang diperiksa.

FAQ

Apakah cat mengubah file input?

Operasi biasa membaca isi input dan mengirim hasil ke keluaran standar. Opsi tampilan tidak menulis kembali isi input, tetapi shell dapat membuat atau memotong tujuan pengalihan; metadata waktu akses juga dapat mengikuti kebijakan sistem berkas.

Apakah cat menambahkan pemisah antar file?

Tidak. Tanpa opsi tampilan, byte file disambung langsung. Jika file pertama tidak berakhir dengan baris baru, awal file berikutnya berada pada baris yang sama.

Bagaimana saya menampilkan nomor baris?

Gunakan -n untuk semua baris atau -b untuk baris tidak kosong. Spasi dan tab tetap merupakan isi baris.

Haruskah saya menggunakan cat untuk log yang sangat panjang?

Bisa, tetapi less lebih praktis untuk navigasi dan pencarian. Menyambung file besar ke pipa atau file lain berbeda dari membacanya di terminal.

Dokumentasi resmi