cat (Unix)
cat adalah salah satu utilitas standar Unix yang digunakan untuk membaca file secara berurutan, dan mengeluarkannya sebagai output standar di dalam terminal (TTY). Nama ini berasal dari fungsinya, yaitu (con)catenate, yang dalam Bahasa Indonesia memiliki arti menggabungkan. cat telah diporting ke sejumlah sistem operasi lainnya.
cat | |
---|---|
Tipe | peralatan standar UNIX |
Versi pertama | 3 November 1971 |
Genre | Command |
Lisensi | coreutils: GPLv3+ ReactOS: GPLv2+ |
Eponim | concatenation (en) |
Bagian dari | GNU Core Utilities (en) |
Sejarah
cat
adalah bagian dari versi awal Unix. cat ditulis oleh Ken Thompson dan Dennis Ritchie. Versi cat
yang dibundel di dalam GNU coreutils ditulis oleh Torbjorn Granlund dan Richard Stallman.[1] Sedangkan untuk versi ReactOS ditulis oleh David Welch, Semyon Novikov, dan Hermès Bélusca.[2]
Penggunaan
Unix mendefinisikan perintah cat
dengan cara membaca isi file dalam urutan yang susuai dengan argumen, dan kemudian mengeluarkan isinya dalam urutan yang sesuai dengan argumen yang telah diberikan. cat
juga memiliki dukungan untuk flag, misalnya flag -u untuk output tanpa buffer. Itu berarti bahwa setiap byte ditulis setelah dibaca. Di dalam beberapa sistem operasi, seperti yang digunakan di dalam GNU Core Utilities, melakukan ini secara default dan mengabaikan flag.[3]
Sintaks perintahnya adalah:
cat [opsi] [nama_file]
Opsi
Contoh beberapa flag cat
: [4]
- -b (GNU: --number-nonblank), tampilkan nomer jika baris tidak kosong.
- -e menyiratkan -v, tampikan karakter$ di akhir setiap akhir baris. (Khusus GNU: flag -E sama dengan
-e
, tapi tanpa menyiratkan -v). - -n (GNU: --number), tampilknan nomer di awal setiap baris.
- -s (GNU: --squeeze-blank), menghapus baris kosong bila ada lebih dari satu dan berdekatan.
- -t menyiratkan -v, menyingkat tab menjadi ^I jika ada tab sebanyak dua kali. (GNU: flag -T sama dengan
-t
, tapi tanpa menyiratkan -v). - -u menggunakan unbuffered I/O untuk stdout. POSIX tidak menentukan perilaku tanpa flag ini.
- -v (GNU: --show-nonprinting), paksa tampilkan karakter atau font yang tidak ada dalam ASCII ke dalam karakter yang tersedia di dalam ASCII, namun tidak berlaku untuk tab dan karakter di akhir baris.
Penggunaan
cat
dapat digunakan untuk menghubungkan file ke dalam program yang menggunakan teks biasa atau data biner pada inputnya. cat
tidak menghancurkan byte non-teks saat menggabungkan dan mengeluarkan. Dengan demikian, dua kasus penggunaan utamanya adalah file teks dan jenis file biner yang kompatibel dengan format tertentu.
Penggabungan teks terbatas pada file teks yang menggunakan pengkodean lama, seperti ASCII. cat
tidak menyediakan cara untuk menggabungkan file teks Unicode yang memiliki Tanda Urutan Byte atau file yang menggunakan penyandian teks yang berbeda satu sama lain. Dengan kata lain, cat
hanya bisa menggunakan pengkodean lama seperti ASCII.
Jika ada banyak kumpulan data biner terstruktur, file gabungan yang dihasilkan mungkin tidak valid. Misalnya, jika sebuah file memiliki header atau footer yang unik, maka hasilnya akan menduplikasi ini secara palsu. Namun, untuk beberapa format file multimedia digital, file yang dihasilkan akan valid, sehingga cat
menyediakan cara yang efektif untuk menambahkan karakter. Format video seperti, mkv/mp4/3gp/avi/dll, dapat menjadi contoh dari file yang dapat cat
baca tanpa masalah.
Contoh
Memerintah | Penjelasan |
---|---|
cat file1.txt | Tampilkan isi file. |
cat file1.txt file2.txt | Gabungkan dua file dan tampilkan hasilnya di terminal. |
cat file1.txt file2.txt > file_gabungan.txt | Gabungkan dua file teks dan tulis ke dalam file teks baru. |
cat > file_baru.txt | Buat file bernama file_baru.txt. Ketikan huruf atau karakter yang diinginkan dan kemudian tekan CTRL+D untuk keluar dari mode menulis. Teks yang sudah ditulis kemudian akan di masukan ke dalam file file_baru.txt. |
cat -n file1.txt file2.txt > nama_file.txt | Beberapa pennggunaan cat dengan menggunakan opsi atau flag -n. Flag -n akan menampilkan nomor di setiap baris. |
cat file1.txt > file2.txt | Salin konten dari file file1.txt ke file file2.txt. |
cat file1.txt >> file2.txt | Tambahkan konten yang berasal file1.txt ke file2.txt. |
cat file1.txt file2.txt file3.txt | sort > file4.txt | Menggabungkan file, mengurutkan setiap baris, dan menulis output ke dalam file yang baru dibuat. |
cat file1.txt file2.txt | less | Jalankan command "less" dengan penggabungan file1 dan file2 sebagai inputnya. |
cat file1.txt | grep contoh_text | Tampilkan semua karakter yang berada di file1.txt dan kemudian filter atau saring supaya hanya menampilkan karakter atau kata "contoh" saja di dalam terminal. |
command | cat | Batalkan perintah "command", misalnya pagging, ketika menulis secara langsung ke TTY |
Budaya Unix
Definisi file jargon
Pada File Jargon versi 4.4.7, dicantumkan beberapa hal sebagai definisi untuk cat
:
# To spew an entire file to the screen or some other output sink without pause (syn. blast).
- By extension, to dump large amounts of data at an unprepared target or with no intention of browsing it carefully. Usage: considered silly. Rare outside Unix sites. See also dd, BLT.
Among Unix fans, cat(1) is considered an excellent example of user-interface design, because it delivers the file contents without such verbosity as spacing or headers between the files, and because it does not require the files to consist of lines of text, but works with any sort of data.
Among Unix critics, cat(1) is considered the canonical example of bad user-interface design, because of its woefully unobvious name. It is far more often used to blast a single file to standard output than to concatenate two or more files. The name cat for the former operation is just as unintuitive as, say, LISP's cdr.[butuh rujukan]
Penggunaan cat yang tidak berguna
Penggunaan cat
yang tidak berguna atau useless use of cat (UUOC), adalah jargon umum di Unix untuk baris perintah yang hanya menyediakan fungsi kenyamanan bagi pengguna.[5] Dalam komputasi, kata "penyalahgunaan",[6] dalam definisi kedua, digunakan untuk menghina penggunaa (user) yang berlebihan atau tidak perlu dalam penggunaan konstruksi bahasa. Dengan demikian, penyalahgunaan cat
kadang-kadang disebut "cat abuse". Contoh penyalahgunaan cat
yang umum sebagi berikut:
cat nama_file | command arg1 arg2 argn
Ini dapat ditulis ulang menggunakan <a href="https://en.wiki-indonesia.club/wiki/Redirection_(computing)" rel="mw:ExtLink" title="Redirection (computing)" class="cx-link" data-linkid="168">redirection</a> dan stdin. Sebagai gantinya, dalam salah satu bentuk berikut (yang pertama lebih tradisional):
command arg1 arg2 argn < nama_file < nama_file command arg1 arg2 argn
Manfaat lainnya, input dari command memungkinkan untuk melakukan akses acak pada file, sedangkan contoh cat
tidak. Ini karena input command membuka file sebagai deskriptor file stdin yang dapat diakses sepenuhnya oleh command, sedangkan perintah cat
hanya menyediakan data sebagai aliran byte.
Kasus umum lainnya adalah saat di mana cat
tidak diperlukan ketika command beroperasi dengan menggunakan perintah stdin, namun akan membaca dari file jika nama file diberikan sebagai argumen. Ini adalah kasus untuk banyak perintah umum; contoh berikut,
cat "$file" | grep "$pattern" cat "$file" | less
Sebagai gantinya dapat ditulis sebagai
grep "$pattern" "$file"
less "$file"
Penggunaan umum dari cat
untuk file adalah guna menampilkan konten file ke output standar. Namun, jika output disalurkan atau dialihkan, cat tidak diperlukan.
Perintah cat
ditulis dengan UUOC mungkin masih lebih disukai karena alasan keterbacaan, mungkin karena membaca aliran sambungan dari kiri ke kanan lebih mudah untuk dikonseptualisasikan.[7] Juga, jika salah dalam menggunakan simbol, yang harusnya " > " malah menjadi " < " (karena berdekatan di keyboard), maka dapat menghapus konten file secara permanen. Dengan kata lain clobbering, salah satu cara untuk menghindarinya adalah dengan menggunakan perintah cat
engan karakter [|]
atau bisa disebut pipe.
Bandingkan:
command < in | command2 > out < in command | command2 > out
dengan:
cat in | command | command > out
Lihat juga
- Paste
- split, perintah yang membagi file menjadi beberapa bagian yang kemudian dapat digabungkan kembali oleh cat.
- lebih sedikit
- ^ Templat:Man/die.net –
- ^ "reactos/cat.c at master · reactos/reactos · GitHub". github.com.
- ^ GNU Coreutils. "GNU Coreutils manual", GNU, Retrieved on 1 Mars 2017.
- ^ OpenBSD manual page and the GNU Core Utiltites version of cat
- ^ comp.unix.shell. "Early award example of UUOC (1994)", comp.unix.shell via Google Groups, Retrieved on 1 Mars 2017.
- ^ "Merriam Webster's Definition of Abuse". Diakses tanggal 2021-02-25.
- ^ Nguyen, Dan. "Stanford Computational Journalism Lab". stanford.edu. Diakses tanggal 2017-10-08.
Pranala luar
- Templat:Man/SUS : concatenate and print files –
- UNIX Style, or cat -v Considered Harmful - A paper by Rob Pike on proper Unix command design using cat as an example.
- cat(1) original manual page in the First Edition of Unix.
- GNU Coreutils reference : concatenate and write files –
- Templat:Man/OpenBSD : concatenate and print files –
- Templat:Man/FreeBSD –
- Templat:Man/Plan 9 –
- GNU Coreutils reference : concatenate and write files in reverse –