Untuk apa 'kucing'?

14

Saya telah melihat perintah kucing muncul dalam beberapa hal daring dan saya ingin tahu apa yang catdilakukan dan untuk apa dalam konteks seseorang yang hanya melakukan beberapa hal baris perintah sederhana.

cosmoflop12
sumber

Jawaban:

12

catTujuan utama adalah untuk con kucing file enate. cat file1 file2 ...akan menampilkan konten file, file2dan yang lainnya satu demi satu, seolah-olah isinya berada dalam satu file. Lihat halaman manual :

NAME
       cat - concatenate and print files

Ini dimaksudkan untuk penggunaan di mana:

  • perintah target tidak dapat membaca dari file dan Anda harus mengirimkan banyak file ke sana. Contohnya adalah trutilitas. Biasanya, dengan satu file, Anda akan melakukan:

    tr < file
    

    Tetapi dengan banyak file, pengalihan tidak dapat digunakan, jadi Anda harus melakukan:

    cat file1 file2 ... | tr
    
  • perintah target dapat membaca dari banyak file, tetapi perilakunya dapat berubah ketika diberikan beberapa file. Contohnya adalah wc, yang mencetak jumlah untuk setiap file, bersama dengan nama file, di mana Anda mungkin menginginkan total, tanpa nama file.

Ingat bahwa sebagian besar perintah Anda temui ( grep, sed, awk, sort, ...) dapat membaca file baik-baik saja.

Jika Anda ingin melihat konten file, gunakan pager - lessdan morekeduanya benar-benar mampu menyajikan file untuk dilihat, dan jauh lebih nyaman untuk digunakan.

muru
sumber
Pengalihan dapat sangat baik digunakan dengan beberapa file karena Anda dapat menggabungkannya dengan proses dan substitusi perintah: < <(cat file[12]) trserta <<<$(cat file[12]) trkeduanya merupakan cara yang benar-benar valid untuk mengarahkan beberapa file. Tentu saja Anda perlu catuntuk itu juga, hanya saja perpipaan bukan satu-satunya cara.
hidangan penutup
@dabut jika Anda harus bertele-tele, pengalihan itu masih menggunakan hanya satu file - file yang mewakili perintah stdout (atau stdin, jika sebaliknya). Bash tidak mendukung pengalihan multi-file benar seperti zsh.
muru
9

catadalah salah satu perintah yang paling sering digunakan pada sistem operasi mirip Unix. Ini memiliki tiga fungsi terkait berkaitan dengan file teks:

  1. menampilkannya
  2. menggabungkan salinannya
  3. membuat yang baru.
  4. Salin file

Sintaks umum kucing adalah:

cat [options] [filenames] [-] [filenames]

Membaca File

Penggunaan cat yang paling umum adalah membaca isi file, dan cat seringkali merupakan program yang paling nyaman untuk tujuan ini. Semua yang diperlukan untuk membuka file teks untuk dilihat pada layar monitor adalah mengetik kata cat diikuti dengan spasi dan nama file dan kemudian tekan tombol ENTER. Misalnya, berikut ini akan menampilkan konten file bernama file1:

cat file1

Rangkaian

Peran kedua kucing adalah penggabungan. (Ini adalah sumber nama penasaran kucing.) Tidak ada efek pada file aslinya.

Sebagai contoh, perintah berikut akan menyatukan salinan dari isi tiga file file1, file2 dan file3:

cat file1 file2 file3

Isi setiap file akan ditampilkan di layar monitor. Output ini bisa dengan mudah dialihkan menggunakan operator redirection output ke file lain, seperti file4, menggunakan yang berikut ini:

cat file1 file2 file3 > file4

Pembuatan File

Berkat @muru komentar: cat mampu membuat file baru tergantung pada fitur redirection shell dan bukan dirinya sendiri

Untuk file kecil ini seringkali lebih mudah daripada menggunakan vi, gedit atau editor teks lainnya. Ini dilakukan dengan mengetikkan cat diikuti oleh operator pengalihan output dan nama file yang akan dibuat, kemudian menekan ENTERdan akhirnya secara bersamaan menekan tombol Ctrl& d.

Misalnya, file baru bernama file1 dapat dibuat dengan mengetik

cat > file1

lalu tekan ENTERdan secara bersamaan tekan tombol Ctrl& d.

PS1: Jika file bernama file1 sudah ada, itu akan ditimpa

PS2: Anda dapat menambahkan ke file yang keluar menggunakan menambahkan operator >>contoh cat >> file1

Salin File

Perintah cat juga dapat digunakan ( tergantung pada fitur redirection shell) untuk membuat file baru dan mentransfer data dari file yang sudah ada. Contoh: buat salinan file oldfile.txt:

cat oldfile.txt > newfile.txt

Referensi:

Maythux
sumber
1
Re 3: cattidak membuat file-file itu - shellnya adalah saat Anda menggunakan pengalihan. Anda mungkin telah melakukannya dengan baik echo foo > file1.
muru
@muru Anda sepenuhnya benar, tetapi masih menggunakan perintah cat
Maythux
1
Tidak. Anda menghubungkan dengan catapa yang sebenarnya dilakukan oleh sesuatu yang lain. Misalnya, melakukan less file1 > file2(atau grep '.*' file1 > fileatau awk 1 file1 > file2atau ...) memiliki efek yang sama. Ditto for 4. Ini hanya penyalahgunaan.
muru
Saya tahu saya bisa menggunakannya dengan adil > filedan memberikan hasil yang sama, tetapi tidak bisakah saya menganggapnya valid untuk melakukan itu dengan kucing ?!
Maythux
1
Anda bisa, jika Anda menentukan yang cattidak membuat file. Mengatakan catmembuat atau menyalin file itu hanya salah palsu.
muru
1

Dapat digunakan untuk menampilkan isi file. Misalnya: cat "my file.txt". Anda juga dapat melakukan man catuntuk menunjukkan kepada Anda detail tentang apa yang catdapat digunakan untuk.

Puneet Gill
sumber
0

Berikut ini cara lain untuk membuat file menggunakan pengalihan shell (atau perpipaan) dan cat:

cat << EOF > foo.sh
#!/bin/sh
echo 'Hello World!'
EOF

cat << EOFakan menampilkan baris berikut sampai string EOFditemui lagi. Kemudian >( >>) akan mengarahkan output ke file foo.sh. Atau, jika Anda perlu membuat file sebagai root, Anda dapat mem-pipe output ke perintah tee( tee -a), dijalankan oleh perintah sudo:

cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
  • Di atas akan membuat file dapat dieksekusi ( chmod +x) jika berhasil dibuat ( &&).
  • Arti khusus beberapa karakter (as $) harus diloloskan (dengan \) dalam output dari cat.
pa4080
sumber