'Kedi' ne için kullanılır?


14

Kedi komutunun bazı çevrimiçi şeylerde geldiğini gördüm ve catsadece basit komut satırı şeyler yapan birinin bağlamında ne yaptığını ve ne için olduğunu merak ettim .

Yanıtlar:


12

catbireyin temel amacı con etmektir kedi enate dosyaları. cat file1 file2 ...içeriği gösterilir file, file2içerikleri tek bir dosyada sanki birbiri ardına ve diğerleri. Bkz manpage :

NAME
       cat - concatenate and print files

Aşağıdakilerden herhangi birinde kullanım içindir:

  • bir hedef komut dosyalardan okuyamaz ve ona birden fazla dosya iletmeniz gerekir. trYardımcı program buna bir örnektir . Normalde, tek bir dosyayla:

    tr < file
    

    Ancak birden çok dosyada yeniden yönlendirme kullanılamaz, bu yüzden yapmanız gerekenler:

    cat file1 file2 ... | tr
    
  • Bir hedef komut olabilir birden fazla dosya okuma, ancak birden fazla dosya verdi ne zaman onun davranışı değişebilir. Bir örnek, wcher dosya için sayıları ve dosya adıyla yalnızca toplamı isteyebileceğiniz dosya adlarını yazdırır.

Karşılaştığınız çoğu komutları hatırla ( grep, sed, awk, sort, ...) mükemmel ince dosyalarını okuyabilir.

Bir dosyanın içeriğini görüntülemek istiyorsanız , bir çağrı cihazı kullanın - lessve moreher ikisi de dosyaları görüntülemek üzere sunma yeteneğine sahiptir ve kullanımı çok daha uygundur.


Yeniden yönlendirme, işlem ve komut değiştirme ile birleştirebileceğiniz için birden fazla dosyayla çok iyi kullanılabilir: < <(cat file[12]) trhem de <<<$(cat file[12]) trbirden fazla dosyayı yeniden yönlendirmenin mükemmel geçerli yollarıdır. Elbette catbunun için de ihtiyacınız var , sadece bu borulama tek yol değil.
tatlı

Bilgiçlik etmeniz gerekiyorsa, bu yönlendirme yine de yalnızca tek bir dosya kullanır - komutun stdout'unu temsil eden dosya (ya da başka türlü ise stdin). Bash, zsh gibi gerçek çoklu dosya yönlendirmesini desteklemez.
muru

9

catUnix benzeri işletim sistemlerinde en sık kullanılan komutlardan biridir. Metin dosyaları ile ilgili üç ilgili işlevi vardır:

  1. onları sergilemek
  2. kopyalarını birleştirmek
  3. yenilerini yaratmak.
  4. Dosyaları kopyala

kedinin genel sözdizimi:

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

Dosyaları Okuma

Kedinin en yaygın kullanımı dosyaların içeriğini okumaktır ve kedi genellikle bu amaç için en uygun programdır. Ekran monitöründe görüntülemek üzere bir metin dosyasını açmak için gereken tek şey cat kelimesini, ardından bir boşluk ve dosyanın adını yazmak ve ardından ENTER tuşuna basmaktır. Örneğin, aşağıdakiler dosya1 adlı bir dosyanın içeriğini görüntüler:

cat file1

birbirine bağlama

Kedinin ikinci rolü bitiştirmedir. (Bu kedinin meraklı isminin kaynağıdır.) Orijinal dosyalar üzerinde herhangi bir etkisi yoktur.

Örneğin, aşağıdaki komut üç dosya dosya1, dosya2 ve dosya3 içeriğinin kopyalarını birleştirir:

cat file1 file2 file3

Her dosyanın içeriği monitör ekranında görüntülenir. Bu çıktı, çıkış yeniden yönlendirme operatörü kullanılarak aşağıdakiler kullanılarak dosya4 gibi başka bir dosyaya kolayca yeniden yönlendirilebilir:

cat file1 file2 file3 > file4

Dosya Oluşturma

@Muru yorumu sayesinde : kedi, kendisini değil, yeniden yönlendirme özelliğine bağlı olarak yeni dosyalar oluşturabilir

Küçük dosyalar için bu vi, gedit veya diğer metin editörlerini kullanmaktan daha kolaydır. Cat yazdıktan sonra çıktı yönlendirme operatörü ve oluşturulacak dosyanın adı, ardından tuşuna basıp ENTERson olarak Ctrl& dtuşlarına basılarak gerçekleştirilir .

Örneğin, dosya1 adlı yeni bir dosya yazılarak oluşturulabilir

cat > file1

ardından ve tuşlarına ENTERaynı anda basın .Ctrld

PS1: file1 adlı bir dosya zaten varsa, üzerine yazılır

PS2: append operatörü >>örnek cat >> file1 kullanarak çıkılan dosyaya ekleyebilirsiniz

Dosyaları Kopyala

Cat komutu ayrıca ( kabuk yeniden yönlendirme özelliğine bağlı olarak) yeni bir dosya oluşturmak ve varolan bir dosyadan veri aktarmak için kullanılabilir. Örnek: dosyanın bir kopyasını oluşturun oldfile.txt:

cat oldfile.txt > newfile.txt

Referanslar:


1
Re 3: catbu dosyaları oluşturmuyor - kabuk, yeniden yönlendirme kullandığınız zamandır. Yapabilirsin echo foo > file1.
muru

@muru Tamamen haklısın, ama yine de kedi komutunun bir kullanımı
Maythux

1
Hayır, değil. catBaşka bir şey tarafından gerçekte ne yapıldığına atıfta bulunuyorsunuz . Örneğin, less file1 > file2(veya grep '.*' file1 > fileveya awk 1 file1 > file2veya ...) yapmak aynı etkiye sahiptir. Ditto for 4. Bunlar sadece yanlış kullanımlardır.
muru

Sadece kullanabileceğimi > fileve aynı sonucu verebileceğimi biliyorum , ama bunu kedi ile yapmak için geçerli olduğunu düşünemez miyim ?!
Maythux

1
Dosya oluşturmadığını belirtirseniz , bunu yapabilirsiniz cat. Diyen catoluşturan veya kopya dosya sadece düz yanlıştır.
muru

1

Bir dosyanın içeriğini göstermek için kullanılabilir. Ör: cat "my file.txt". Ayrıca man cat, ne catiçin kullanılabileceğiyle ilgili ayrıntıları göstermek için de yapabilirsiniz .


0

İşte başka bir yolu dosya kabuk yeniden yönlendirme (veya boru) yaratılması ve için cat:

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

cat << EOFdize EOFtekrar karşılaşılana kadar aşağıdaki satırları çıktılar . Ardından >( >>) çıktıyı dosyaya yönlendirir foo.sh. Alternatif olarak, kök olarak bir dosya oluşturmanız gerekiyorsa, çıktıyı komutla yürütülen tee( tee -a) komutuna bağlayabilirsiniz sudo:

cat << EOF | sudo tee foo.sh && sudo chmod +x foo.sh
#!/bin/sh
HELLO='Hello World!'
echo "\$HELLO"
EOF
  • Yukarıdakiler chmod +x, başarıyla oluşturulmuşsa ( &&) dosyayı yürütülebilir ( ) yapar.
  • Bazı karakterlerin (as $) özel anlamı \, çıktısında (ile ) kaçmalıdır cat.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.