İçeriğe atla

cat (Unix)

cat
Orijinal yazar(lar)Ken Thompson,
Dennis Ritchie
Geliştirici(ler)Bell Labs
İşletim sistemiUnix, Unix benzeri Unix-like, Plan 9, Inferno, ReactOS
PlatformÇoklu platform
Türkomut
Lisanscoreutils: GPLv3+
ReactOS: GPLv2+
Resmî sitesicat

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

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

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

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

KomutAçı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.txtyeniDosya.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.txtcat'in bazı uygulamaları, -n seçeneği ile satırlara numara verebilir.
cat dosya1.txt > dosya2.txtdosya1.txt dosyasının içeriğini dosya2.txt dosyasına kopya.
cat dosya1.txt >> dosya2.txtdosya1.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.txtDosyaları 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 | lessless 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 ornekdosya1.txt dosyasındaki "ornek" kelimesinin örneklerini bul.
command | catUUOC (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ı

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

Dış bağlantılar

Kaynakça

  1. ^ "ODTÜ cat dokümantasyonu sayfası". METU. 27 Ocak 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 27 Ocak 2012. 
  2. ^ 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. 
  3. ^ 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. 
  4. ^ cat(1) – Linux Kullanıcı komutları kılavuzu
  5. ^ "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. 
  6. ^ "tac(1) - Linux manual page". man7.org. 23 Nisan 2014 tarihinde kaynağından arşivlendi. 
  7. ^ "sharkdp/bat". 2 Aralık 2021. 1 Mayıs 2018 tarihinde kaynağından arşivlendi – GitHub vasıtasıyla. 
  8. ^ GNU Coreutils. "GNU Coreutils manual" 9 Mart 2023 tarihinde Wayback Machine sitesinde arşivlendi., GNU, 1 Mar 2017.
  9. ^ OpenBSD manual page and the GNU Core Utiltites version of cat

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Unix</span>

UNIX türevi işletim sistemleri çok işlemcili çok pahalı makinelerden tek işlemcili, basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen esnek ve sağlamlığı çok değişik koşullarda test edilmiş sistemlerdir. Fakat özellikle kararlı yapısı ve çok kullanıcılı-çok görevli yapısıyla çok işlemcili sunucularda adeta standart haline gelmiştir ve özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur. UNIX, Interdata 7/32, VAX ve Motorola 68000 arasında hızla yayıldı.

<span class="mw-page-title-main">AWK</span>

AWK, Alfred Aho, Peter Weinberger ve Brian Kernighan tarafından 1977 yılında geliştirilmiş ve ilk olarak Unix Version 7 ile yayınlanmış bir programlama dilidir. C gibi derlenen dillerden farklı olarak yorumlanan bir betik dilidir ve günümüzde özellikle sed ve Kabuk programlamada kullanılmaktadır.

Telnet, Internet ağı üzerindeki çok kullanıcılı bir makineye uzaktaki başka bir makineden bağlanmak için geliştirilen bir TCP/IP protokolü ve bu işi yapan programlara verilen genel isimdir. Telnet iki bileşenden oluşur: (1) iki tarafın nasıl iletişim kuracağını belirleyen protokolün kendisi ve (2) hizmeti sağlayan yazılım uygulaması.Kullanıcı verileri, İletim Kontrol Protokolü (TCP) üzerinden 8 bitlik bayt yönlendirmeli bir veri bağlantısında Telnet kontrol bilgisi ile bant içi serpiştirilir. Telnet, 1969'da RFC 15 ile başlayarak geliştirildi, RFC 855'te genişletildi ve ilk İnternet standartlarından biri olan İnternet Mühendisliği Görev Gücü (IETF) İnternet Standardı STD 8 olarak standartlaştırıldı. encryption sağlayan bazı Telnet eklentileri geliştirilmiştir. Bağlanılan makineye girebilmek (login) için orada bir kullanıcı isminizin (İng:username) ve bağlantının gerçekleşebilmesi için bir telnet erişim programınızın olması gereklidir. Fakat bazı kütüphane ve herkese açık telnet bazlı web servisleri, bağlantı sırasında kullanıcı ismi (numarası) istemeyebilirler; ya da, kullanıcı isim ve parola olarak ne yazmanız gerektiği bağlandığınızda otomatik olarak karşınıza çıkar. Telnet, BBS sistemlere İnternet üzerinden erişimde günümüzde yaygın olarak kullanılmaktadır. Telnet erişim programları, günümüzdeki işletim sistemlerinin çoğunda işletim sistemi ile birlikte gelmektedir. Çok kullanıcılı işletim sistemleri genellikle kullanıcılara metin tabanlı bir arayüz sunar ve bu sistemlerde tüm işlemler klavye vasıtası ile komut isteminden gerçekleştirilir.

<span class="mw-page-title-main">Bzip2</span> Sıkıştırma protokolü

bzip2 veya BZ2, Julian Seward tarafından geliştirilmiş özgür yazılım/açık kaynak kodlu yazılım veri sıkıştırma algoritmasıdır. Seward'ın geliştirdiği program 1996 yılında 0.15 sürümü ile kullanıma sunuldu. Veri sıkıştırıcısının istikrarı ve yaygın kullanımı zamanla arttı ve 1.0 sürümü 2000 yılının sonlarında çıktı.

<span class="mw-page-title-main">Bash</span>

Bash, Brian Fox tarafından GNU Projesi için Bourne kabuğuna özgür yazılım alternatifi olarak yazılmış, Unix ve benzeri işletim sistemlerinde kullanılan komut satırı kabuğu ve bu kabuğun betik dilidir. GNU Tasarısı'nın parçasıdır ve birçok GNU/Linux dağıtımında ön tanımlı kabuk olarak gelir. Ayrıca bir versiyonu Windows 10 için Linux İçin Windows Alt Sistemi aracılığıyla mevcuttur. Solaris 11'in de varsayılan kullanıcı betiğidir. Bash ayrıca 2019 öncesinde çıkan tüm MacOS sürümlerinde varsayılan kabuktu.

sed, bir akım düzenleyicisi, dosya ya da borudan gelen girdideki temel metin dönüştürmelerini gerçekleştirir. Yani dosya ya da standart girdiden metni okur ve bunu kullanıcının istediği biçime dönüştürerek standart çıktıya okur.

tail, Unix ve Unix Benzeri sistemlerde düz metin dosyalarının son birkaç satırını görüntülemek için kullanılan bir Unix komut satırı programı'dır.

head (Unix)

head, Unix ve Unix benzeri sistemlerde düz metin dosyalarının ilk birkaç satırını görüntülemek için kullanılan bir Unix komut satırı programı'dır.

comm

comm, Unix ve Unix Benzeri sistemlerde iki düz metin dosyası arasında karşılaştırma yapmak için kullanılan bir Unix komut satırı programı'dır.

info (Unix)

info hiper metinsel formda bir unix komut satırı aracıdır. Komut satırı arayüzünde çalışan, çok sayfalı belgelemeleri ve yardımları görüntülemeye yarayan bir araçtır. GNU araçlarının bulunmadığı zamanlarda çok kullanışlıdır.

<span class="mw-page-title-main">Unix benzeri</span>

Unix benzeri işletim sistemi, resmi bir UNIX markası olmamasına karşın Unix sistemine benzer şekilde çalışan işletim sistemleridir. Unix benzeri bir yazılım, Unix komut ve kabuğuna benzer işlevlere sahiptir. Bu terimin kullanımı için bir standart yoktur ve bir yazılımın veya işletim sisteminin Unix benzeri olarak adlandırılıp adlandırılamayacağı üzerine farklı görüşler vardır.

ps (Unix)

Çoğu Unix benzeri işletim sisteminde, ps programı o anda çalışan işlemleri görüntüler. "top" adındaki bir başka Unix yardımcı programı ise çalışan süreçlerin gerçek zamanlı bir görünümünü sağlar.

<span class="mw-page-title-main">Metin tabanlı kullanıcı arayüzü</span> bir metin ekranına çıktı vermeye veya onu kontrol etmeye dayalı arabirim türü

Metin tabanlı kullanıcı arayüzü, metinsel kullanıcı arayüzü veya terminal kullanıcı arabirimi olarak da adlandırılır, grafik kullanıcı arayüzlerinin (GUI) icadından bir süre sonra ortaya çıkan ve onu grafik kullanıcı arayüzünden ayırt etmek için türetilen yeni bir terimdir. TUI'de bilgisayar grafikleri metin kipinde görüntülenir. Gelişmiş bir TUI, GUI'ler gibi tüm ekran alanını kullanabilir ve fare ve diğer girişleri kabul edebilir.

rm (Unix)

rm Unix ve Unix benzeri işletim sistemlerinde dosyaları, dizinleri ve sembolik linkleri silmek için kullanılan bir komuttur.

<span class="mw-page-title-main">Unix shell</span> Unix işletim sistemi için yorumlayıcı program

Unix shell, Unix benzeri işletim sistemleri için bir komut satırı kullanıcı arabirimi sağlayan bir komut satırı yorumlayıcısı veya kabuğudur. Kabuk, hem etkileşimli bir komut dili hem de bir komut dosyası dilidir ve işletim sistemi tarafından sistemin kabuk komut dosyalarını kullanarak yürütülmesini kontrol etmek için kullanılır.

tee (Unix)

tee, standart akışları kullanan komut satırı yorumlayıcılarında (kabuklar) bir komuttur. Standart girdiyi okur ve hem standart çıktıya hem de bir veya daha fazla dosyaya çıktıyı yazar; bu şekilde girdiyi kopyalayarak çoğaltır. Bu komut, genel olarak, boruhatları ve filtreler ile birlikte kullanılır; boruhattında giden bir çıktıyı aynı zamanda bir dosyaya kaydetmek istediğimiz zaman kullanışlıdır.

env, Unix ve Unix-benzeri işletim sistemleri için bir kabuk komutudur. Ya çevre değişkenlerinin bir listesini yazdırmak ya da mevcut çevreyi değiştirmeden başka bir aracı değiştirilmiş bir ortamda çalıştırmak için kullanılır. Env kullanarak değişkenler eklenip çıkarılabilir ve var olan değişkenlere yeni değerler atanarak değiştirilebilir.

file (komut) Standart Unix programı

​file​ komutu, Unix ve Unix benzeri işletim sistemlerinde standart bir program'dır. Bir bilgisayar dosyası içinde bulunan veri türünü tanımak için kullanılır.

dirname, Unix ve Unix benzeri sistemlerde standart bir komuttur. Komut, belirtilen dizinin bulunduğu yolu çıktı verir.

<span class="mw-page-title-main">Düz metin</span> yalnızca okunabilir materyalin biçimlendirilmemiş karakterlerinden oluşan bilgisayar verileri

Bilgi işlemde, düz metin yalnızca karakterlerden oluşan okunabilir materyali temsil eden ancak grafiksel gösterimini veya diğer nesneleri temsil etmeyen veriler için kullanılan geniş/serbest bir terimdir. Ayrıca metnin basit düzenini etkileyen boşluklar, satır sonları veya sekme karakterleri gibi sınırlı sayıda "boşluk" karakteri de içerebilir. Düz metin, stil bilgilerinin dahil edildiği biçimlendirilmiş metinden; paragraflar, bölümler ve benzerleri gibi belgenin yapısal kısımlarının tanımlandığı yapılandırılmış metinden; ve bazı kısımların ikili nesneler olarak yorumlanması gereken ikili dosyalardan farklıdır.