Cat (Unix)

**<code>cat</code>** — fayllarni ketma-ket oʻqib, ularni standart chiqarishga yozadigan standart Unix yordam dasturi hisoblanadi. Nom (con) **cat** enate fayllar (lotincha *catenare*, „zanjirga“) funksiyasidan olingan. U bir qator operatsion tizimlarga koʻchirillgan

## Tarixi
`cat` Unix ning dastlabki versiyalarining bir qismi edi, masalan, 1-versiya va bitta faylni ekranga nusxalash uchun `pr`, PDP-7 va Multics yordam dasturini almashtirdi. Bu Ken Thompson va Dennis Ritchie tomonidan yozilgan kodlar jamlanmasi edi. GNU coreutils -da toʻplangan `cat` versiyasi Torbjorn Granlund va Richard Stallman tomonidan yozilgan. ReactOS versiyasi David Welch, Semyon Novikov va Hermes Belusca tomonidan yaratilgan.

Vaqt oʻtishi bilan `tac` va `bat` kabi muqobil yordamchi dasturlar ham yaratilib, turli xil yangi xususiyatlarning paydo boʻlishiga olib keldi.

## Foydalanilishi
Yagona Unix spetsifikatsiyasi `cat` fayllarni oʻz argumentlarida berilgan ketma-ketlikda oʻqish, ularning mazmunini bir xil ketma-ketlikda standart chiqishga asoslangan. Spetsifikatsiya bitta variant bayrogʻini qoʻllab-quvvatlashni talab qiladi, buferlanmagan chiqish uchun *u*, yaʼni har bir bayt oʻqilgandan keyin yoziladi. Baʼzi operatsion tizimlar, masalan, GNU Core Utilities dan foydalanadiganlar, buni sukut boʻyicha bajaradilar va bayroqni koʻp holatda eʼtiborsiz qoldiradilar.

Agar kirish fayl nomlaridan biri bitta chiziqcha (*-*) sifatida belgilangan boʻlsa, u holda `cat` ketma-ketlikning oʻsha nuqtasida standart kiritishdan qayta oʻqiydi. Hech qanday fayl belgilanmagan boʻlsa, `cat` faqat standart kirishnigina oʻqiydi.

Buyruqning sintaksisi :
 cat [options] [file_names]

### Variantlar
Baʼzi `cat` variantlariga misol:

*  (GNU: ), boʻsh boʻlmagan chiqish chiziqlarini raqamlash
*   degan maʼnoni anglatadi, lekin qator oxiri belgilarini $ sifatida koʻrsatadi (faqat GNU:  bir xil, lekin  bundan mustasno)
*  (GNU: ), barcha chiqish qatorlarini raqamlash
*  (GNU: ), bir nechta qoʻshni boʻsh qatorlarni siqib chiqarish
*   degan maʼnoni anglatadi, lekin yorliqlarni ^I sifatida koʻrsatadi (GNU:  bir xil, lekin  nazarda tutilmaydi)
*  stdout uchun buferlanmagan I/U dan foydalanish. POSIX ushbu parametrsiz xatti-harakatni aniqlamaydi.
*  (GNU: ), yorliqlar va satr oxiri belgilaridan tashqari, chop etilmaydigan belgilarni koʻrsatadi

## Foydalanish holatlari
`cat` faylni kirish oqimida oddiy matn yoki ikkilik maʼlumotlarni kutadigan dasturga oʻtkazish uchun ishlatilishi mumkin. `cat` birlashtirish va chiqarishda matn boʻlmagan baytlarni yoʻq qilmaydi. Shunday qilib, uning ikkita asosiy qoʻllanilish usuli matnli fayllar va maʼlum formatga mos keladigan ikkilik fayllar hisoblanadi.

Matnni birlashtirish ASCII kabi bir xil eski kodlashdan foydalangan holda yaratilgan matn fayllari bilan cheklangan. `cat` bayt tartibi belgisiga ega boʻlgan Unicode matn fayllarini yoki turli matn kodlashlaridan foydalanib ishlangan fayllarni birlashtirish usulini taʼminlamaydi.

Koʻpgina tuzilgan ikkilik maʼlumotlar toʻplamlari uchun natijada olingan birlashtirilgan fayl haqiqiy boʻlmasligi mumkin; masalan, faylda noyob sarlavha yoki altbilgi boʻlsa, natija ularni soxta ravishda takrorlaydi. Biroq, baʼzi multimedia raqamli konteyner formatlari uchun natijada olingan faylgina amal qilinadi va shuning uchun `cat` fayllarni qoʻshishning samarali vositasini taqdim etadi. Video oqimlari `cat` muammosiz birlasha oladigan fayllarning muhim namunasi boʻlishi mumkin, masalan, MPEG dastur oqimi (MPEG-1 va MPEG-2) va DV (Raqamli video) formatlari, bu paketlarning nisbatan oddiy oqimlari kabilardir.

## Misollar

## Unix madaniyati

### Jargon fayl taʼrifi
Jargon faylining 4.4.7 versiyasida bu `cat` taʼrifi sifatida keltirilgan:

### Cat dan nooʻrin foydalanish
*Useless use of Cat* (*UUOC*) dan befoyda foydalanish buyruq qatori Unix konstruksiyalari uchun keng tarqalgan Unix jargonidir, ular faqat foydalanuvchiga qulaylik yaratish vazifasini bajaradi. Hisoblashda „abuse (haqorat)“ soʻzi, taʼrifning ikkinchi maʼnosida, til konstruktsiyasining ortiqcha yoki keraksiz ishlatilishini qoralash uchun ishlatiladi; shuning uchun `cat` suiisteʼmol qilish baʼzan „cat abuse (mushukni haqorat qilish)“ deb ataladi. Quyida umumiy `cat` abuse ga misol keltirilgan:
 cat filename | command arg1 arg2 argn
Buni quyidagi shakllardan biri (birinchisi anʼanaviyroq) oʻrniga stdin ni qayta yoʻnaltirish yordamida qaytadan yozish mumkin:
```
command arg1 arg2 argn < filename
 <filename command arg1 arg2 argn
```
Boshqa afzalliklardan tashqari, kirishni qayta yoʻnaltirish shakllari *command* (*buyruq)* faylga tasodifiy kirishni amalga oshirishga imkon beradi, `cat` misollarida bu holat kuzatilmaydi. Buning sababi shundaki, qayta yoʻnaltirish shakli faylni *command* toʻliq kirishi mumkin boʻlgan *stdin* fayl identifikatori sifatida ochadi, `cat` shakli esa maʼlumotlarni baytlar oqimi sifatida taqdim etadi.

`cat` ning keraksiz boʻlgan yana bir keng tarqalgan holati bu, buyruq *stdin* da ishlash uchun sukut boʻyicha foydalanishdir, lekin fayl nomi argument sifatida berilgan boʻlsa, toʻgʻridan-toʻgʻri fayldan oʻqiladi. Koʻpgina umumiy buyruqlar uchun shunday holat kuzatiladi; quyida misollar berilgan.
```
cat file | grep pattern
 cat file | less
```
oʻrniga quyidagicha yozish mumkin:
```
grep pattern file
 less file
```
Bitta fayl uchun `cat` umumiy interaktiv ishlatilishi, fayl mazmunini standart chiqishiga yordam berishi mumkin. Biroq, agar chiqish quvurli (|) yoki qayta yoʻnaltirilgan boʻlsa, `cat` kerak emas.

UUOC bilan yozilgan `cat` hali ham oʻqilishi mumkinligi sababli afzalroq koʻrilishi mumkin, chunki chapdan oʻngga quvur orqali uzatilgan oqimni tushunish osonroq boʻlishi mumkin. Bundan tashqari, " &#x3C; " oʻrniga (koʻpincha klaviaturada qoʻshni) " &#x3E; " qayta yoʻnaltirish belgisidan bitta notoʻgʻri foydalanish fayl mazmunini butunlay oʻchirib tashlashi mumkin, boshqacha aytganda clobbering va buning oldini olishning bir yoʻli `cat` quvurlari (|) bilan ishlatishdir. Taqqoslash:

```
command < in | command2 >out
<in command | command2 >out
```

shuningdek:
 cat in |command |command@> out

*

## Manbalar

## Havolalar

* cat: concatenate and print files - Shell and Utilities Reference, The Single UNIX Specification, Version 4 from The Open Group
* 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.
* cat(1): concatenate and write files - GNU Coreutils reference
* cat(1): concatenate and print files - OpenBSD General Commands Manual
* cat(1) - FreeBSD General Commands Manual
* cat(1) - Plan 9 Programmer’s Manual, Volume 1
* tac(1): concatenate and write files in reverse - GNU Coreutils reference