cat (Unix)
cat
, dosyaları sırasıyla okuyan ve standart çıktıya yazan POSIX standartlı bir Unix komutudur.[1][2]
Komut ismi, komutun dosyaları peşpeşelenmesi işlevine işaret eden İngilizce "(con)catenate" (Latince catenare, "zincirlemek") kelimesinden türetilmiştir.
Tarihçe
[değiştir | kaynağı değiştir]cat
, bir dosyayı ekrana kopyalamak için kullanılan bir PDP-7 ve Multics komutu olan pr
komutunun yerini alarak ilk Unix sürümlerinde (ör. Version 1) yer aldı.[3] Bu versiyon, Ken Thompson ve Dennis Ritchie tarafından yazılmıştır. GNU coreutils'te paketlenmiş cat
sürümü ise Torbjorn Granlund ve Richard Stallman tarafından yazılmıştır.[4] ReactOS sürümü ise David Welch, Semyon Novikov ve Hermès Bélusca tarafından yazılmıştır.[5]
Zamanla, tac
ve bat
gibi alternatif araçlar da farklı ve yeni özellikleriyle erişilebilir hale geldi.[6][7]
Kullanım
[değiştir | kaynağı değiştir]Tek Unix Şartnamesi tanımına göre, cat
, dosyaları argüman sırasına göre okur ve dosya içeriklerini aynı sırada standart çıktıya yazdırır. Şartname, arabelleksiz çıktı (her bayt okunduktan sonra ara belleğe aktarılmadan yazılır) için u bayrağını zorunlu kılar. GNU Coreutils gibi bazı işletim sistemleri, bunu varsayılan olarak yapar ve bayrak desteğini görmezden gelir.[8]
Eğer girdi dosya adlarından biri tek bir tire (-) olarak belirtilirse, o noktada cat
standart girdiden okur. Eğer dosyalar belirtilmezse, cat
sadece standart girdiden okur.
Komut-sözdizimi:
cat [seçenek] [dosya_isimleri]
Seçenekler
[değiştir | kaynağı değiştir]Bazı cat
seçenekleri şunlardır:[9]
- -b (GNU: --number-nonblank): Dosyanın boş olmayan satırlarını numaralarıyla birlikte görüntüle.
- -n (GNU: --number): Bütün çıktı satırlarının sayısı.
- -e (GNU: -E): Satır sonu karakterlerini $ olarak göster.
- -n (GNU: --number): Tüm çıktı satırlarına numara ekle.
- -s (GNU: --squeeze-blank): Birbirine bitişik birden fazla boş satırı tek bir boş satıra sıkıştır.
- -t (GNU: -T): Tab karakterlerini ^I olarak göster.
- -u: Stdout için tampon kullanmadan I/O kullan. POSIX, Bu seçenek olmadan davranışını belirtmez.
- -v (GNU: --show-nonprinting): Sekme karakterleri ve satır sonu karakterleri hariç olmak üzere, yazdırılmayan karakterleri görüntüle.
Örnekler
[değiştir | kaynağı değiştir]Komut | Açıklama |
---|---|
cat dosya1.txt | Dosya içeriğini görüntüle. |
cat dosya1.txt dosya2.txt | İki metin dosyasını birleştir ve sonucu terminalde gösterin. |
cat dosya1.txt dosya2.txt > yeniDosya.txt | İki metin dosyasını birleştir ve bunları yeni bir dosyaya yaz. |
cat > yeniDosya.txt | yeniDosya.txt adında bir dosya oluştur. Komutun ardından Ctrl-D() tuş kombinasyonuna basılmalı. Bunun anlamı, dosyaya dosya sonu (ing. EOF - End Of File) karakteri gönderilmesidir. |
cat -n dosya1.txt dosya2.txt > yeniDosya.txt | cat'in bazı uygulamaları, -n seçeneği ile satırlara numara verebilir. |
cat dosya1.txt > dosya2.txt | dosya1.txt dosyasının içeriğini dosya2.txt dosyasına kopya. |
cat dosya1.txt >> dosya2.txt | dosya1.txt dosyasının içeriğini var olan dosya2.txt dosyasına ekle. Eğer dosya2.txt yok ise, bu dosyayı oluştur. |
cat dosya1.txt dosya2.txt dosya3.txt | sort > dosya4.txt | Dosyaları birleştir; tüm satırların tamamını sırala ve çıktıyı yeni oluşturulan bir dosyaya yaz. |
cat dosya1.txt dosya2.txt | less | less programını, dosya1 ve dosya2 dosyalarının birleştirilmiş haliyle girdi olarak çalıştır. Büyük (çok satırlı) dosyalarda, cat'in less ile birlikte kullanılması tavsiye edilir, çünkü örneğin 1000 satırlık bir dosya görüntüleneceği zaman hiç kullanışlı olmaz, en üst satırı göremeden en alt satıra gelinmiş olur, fakat less gibi bir sayfalama komutu ile bilrikte kullanılırsa dosyanın en başından başlayarak sayfa sayfa dosya okunabilir. |
cat dosya1.txt | grep ornek | dosya1.txt dosyasındaki "ornek" kelimesinin örneklerini bul. |
command | cat | UUOC (Useless Use of Cat) durumunda, özellikle sayfalama gibi özel davranışları iptal etmek için commandın doğrudan TTY'ye yazdığında iptal edin. |
Kullanım alanları
[değiştir | kaynağı değiştir]cat
, girdi akışında düz metin veya ikili veri bekleyen bir programa dosya yönlendirmek için kullanılabilir. cat
, birleştirme ve çıktı yaparken metin olmayan baytları yok etmez. Bu nedenle, iki ana kullanım alanı, metin dosyaları ve belirli format uyumlu ikili dosya türleridir.
Metin birleştirmesi, örneğin ASCII gibi aynı geleneksel kodlamayı kullanan metin dosyalarıyla sınırlıdır. cat
, birleştirilecek Unicode metin dosyalarının Bayt Sırası İşareti olan veya birbirinden farklı metin kodlamaları kullanan dosyaların birleştirilmesi için bir çözüm sağlamaz.
Birçok yapılandırılmış ikili veri seti için, sonuçta birleştirilen dosya geçerli olmayabilir; örneğin, bir dosyanın benzersiz bir başlık veya altbilgisi varsa, sonuç yanlışlıkla bunları çoğaltır. Ancak, bazı multimedya içerik biçimi için, sonuçta oluşan dosya geçerlidir ve bu nedenle cat
, dosyaları birleştirmenin etkili bir yolunu sağlar. Video akışları, örneğin (MPEG-1 ve MPEG-2) MPEG program akışı ve DV (format) (Dijital Video) formatları, temel olarak paketlerin basit akışlarıdır ve cat
tarafından sorunsuzca birleştirilebilir.
Ayrıca bakınız
[değiştir | kaynağı değiştir]Dış bağlantılar
[değiştir | kaynağı değiştir]- ubuntu Türkiye wiki'si cat başlığı[ölü/kırık bağlantı]
- cat için GNU projesi dokumantasyonu 6 Ocak 2015 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)
- cat için FreeBSD dokumantasyonu 5 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)
Kaynakça
[değiştir | kaynağı değiştir]- ^ "ODTÜ cat dokümantasyonu sayfası". METU. 27 Ocak 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Ocak 2012.
- ^ Shotts, William E., Jr. (2012). The Linux command line: A complete introduction (İngilizce). San Francisco: No Starch Press. s. 53. ISBN 1-59327-389-4.
- ^ McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF). CSTR (İngilizce). Bell Labs. 139. 11 Kasım 2017 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 16 Şubat 2023.
- ^ Linux Kullanıcı komutları kılavuzu –
- ^ "reactos/cat.c at master · reactos/reactos · GitHub". github.com. 28 Ağustos 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Ağustos 2021.
- ^ "tac(1) - Linux manual page". man7.org. 23 Nisan 2014 tarihinde kaynağından arşivlendi.
- ^ "sharkdp/bat". 2 Aralık 2021. 1 Mayıs 2018 tarihinde kaynağından arşivlendi – GitHub vasıtasıyla.
- ^ GNU Coreutils. "GNU Coreutils manual" 9 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi., GNU, 1 Mar 2017.
- ^ OpenBSD manual page and the GNU Core Utiltites version of cat