Bir metin dosyasının içeriğini komut satırında nasıl görüntüleyebilirim?


131

Bir metin dosyasının içeriğini komut satırında görüntülemek istiyorum. Dosya sadece 5-6 karakter içeriyor. Bunu yapmanın kolay bir yolu var mı?

Yanıtlar:


194

kullanma cat

Dosyanız kısa olduğu için kullanabilirsiniz cat.

cat filename

kullanma less

Daha uzun bir dosyanın içeriğini görüntülemek zorundaysanız, gibi bir çağrı cihazı kullanabilirsiniz less.

less filename

Sen yapabilir lessgibi davranacaksan catküçük dosyalar üzerinde çağrıldığında ve onu geçerek normalde aksi davranması -Fve -Xbayraklar.

less -FX filename

Bunun için bir takma ad var less -FX. Birini kendin gibi yapabilirsin:

alias aliasname='less -FX'

Takma adı kabuk yapılandırmanıza eklerseniz, sonsuza dek kullanabilirsiniz.

kullanma od

Dosyanız garip veya yazdırılamayan karakterler içeriyorsa od, karakterleri incelemek için kullanabilirsiniz . Örneğin,

$ cat file
(ÐZ4 ?o=÷jï
$ od -c test
0000000 202 233   ( 320   K   j 357 024   J 017   h   Z   4 240   ?   o
0000020   = 367  \n
0000023

+1 de sed -n l filefaydalı olabilir.
enzotib

1
lessDiğer çağrı programları gibi belirgin avantajları var mı pg, yoksa kişisel tercihinize mi düşüyor?
Sam Weinberg

@SamWeinberg: lessdaha çok özelliğe sahiptir pg. less(1)Ve pg(1)man sayfalarına bir göz atın. Başka çağrı cihazları da var. Unix.stackexchange.com/questions/81129/… adresine bakınız . lessmuhtemelen en yaygın kullanılan çağrı cihazıdır, ancak hangisini kullandığınız kişisel tercihinize bağlıdır.

unutma moreve most!
Rudolf Olah

29

Herkes kullanıyor olsa da cat filenamestandart çıktı ilk amacın bir dosya metin yazdırmak için aleyhte olan kedi enating. Kedinin adam sayfasından:

cat - dosyaları birleştirin ve standart çıktıya yazdırın

Artık kedi dosyaları yazdırmak için uygun ancak alternatifler var:

  echo "$(<filename)"
or
  printf "%s" "$(<filename)"

( )Bu durumda, bir içerik, bir ifade değerini geri dosya o sırada genişletilmiş $için echoveya printf.

Güncelleme:

< filename

Bu tam olarak ne istiyorsan onu yapar ve hatırlaması kolaydır.

Bir menüden bir dosya seçmenize ve ardından yazdırmanıza izin veren bir örnek.

#!/bin/bash

select fname in *;
do
# Don't forget the "" around the second part, else newlines won't be printed
  printf "%s" "$(<$fname)"
  break
done

Daha fazla okuma için:
BashPitfalls - cat file | sed s / foo / bar /> dosya
Bash Referansı - Yönlendirme


Güncellemeniz: " < filenametam olarak istediğiniz şey ..." yanıltıcıdır. Genel olarak, bu alternatifler üzerine ilginç bir tartışma olmasına rağmen cat, daha basit olduğunu düşünüyorum .
X Tian

Bare < filename, dosyanın içeriğini göstermez, ancak görüntüler cat filename.
jarno

Sen de kullanabilirsin tee < filename.
jarno

2
echo "$(<filename)"Faşizm için +1 . Burada yeteri kadar yok.
Yokai

Echo ile Linux İç Komutunu kullanmak için bu harika bir fikir "$(<filename)". Teşekkürler ...
Reza Harasani 25:18

9

Bir metin dosyasının içeriğini görüntülemek için aşağıdaki komutu kullanabilirsiniz.

kedi dosya adı 

Hakkında daha fazla bilgi için catçalıştırın man cat.

9

Unix'te metin dosyalarını işlemek için araçlar temel, günlük komutlardır:

Unix ve linux dosyalarındaki tüm içeriği yazdırmak için

cat filename.txt

veya

more filename.txt

veya

less filename.txt

Son birkaç satır için

tail filename.txt

İlk birkaç satır için

head filename.txt

4

Bir seçenek kullanmaktır more

Örneğin more file.txt

Ancak ekleyen tüm özelliklere sahip değil less.
Basit bir örnek, çıktıda geri kaydırma yapamayacağınızdır. Genelde daha az tarafından üstlenilmiştir - çünkü jest olarak adlandırılmıştır.

Az daha çoktur


3

Her zaman kullanıyorum $ less "your file here", çok basit olduğu gibi, yerleşik bir etkileşimli grepkomut sağlar ve ok tuşlarıyla kaydırma yapabileceğiniz kullanımı kolay bir arayüz sunar.

(Ayrıca hemen hemen her * nix sistemine dahil edilmiştir)


lessbir overkill-versiyonudur more(karşılaştırma man lessile man more), ve benim için iki can sıkıcı özelliklere sahiptir: 1) açıkça yazmak zorunda EOF alternatif ekran tampon, az sonlandığı görüntülemekte olduğunuz dosya 2 kaybolur) geçer q(Biliyorum, bunun için bir seçenek var). Dolayısıyla, yeni bir ortamda ilk eylemlerimden biri export PAGER=/bin/moreprofilime yerleşmek ve moreher zaman kullanmak .
ott--

@ ott--: 1) -XBayrağı deneyin . 2) -EBayrağı deneyin . lessBir sahiptir morebenzetim modunu. LESS_IS_MOREÇevresel değişkeni ayarlayarak etkinleştirebilirsiniz . moreEmülasyon modunda yukarı doğru kaydırma yapabilirsiniz .


Genel olarak, lessbunun aşırı karmaşık olduğu konusunda hemfikirim . Dış komutları çalıştırma kabiliyeti, aşırı karmaşıklığına mükemmel bir örnektir.

@EvanTeitelman Her zaman grep işlevselliğini kendim için son derece yararlı buldum, @ ott-- Ben öykünmesi nedeniyle moreve birçok ek özelliği olduğu için işi çok iyi yapıyor.
SG60

2

Büyük bir dosyaysa ve belirli bir bölümünü aramak istiyorsanız, kullanabilirsiniz.

 cat filename | grep text_to_search -ni 

Ayrıca daha etkileşimli Vim editörü (veya Vim'iniz yoksa vi editörü) kullanabilirsiniz:

 vim filename
Or
 vi filename

Vim / vi harika bir editör, "Normal Mod" da bir okuyucu olarak da kullanılabilir veya -R seçeneğini kullanarak, dosyaya göz atmanıza yardımcı olacak birçok özelliğe sahiptir.


İçin kısa vim -Rolduğunu view. Ancak, xargs ve vi - “Giriş bir terminalden değil” de tartışıldığı gibi yeniden yönlendirmeleri sevmediğini unutmayın .
Manatwork

@ headsatwork için teşekkürler! Kısa bir süre önce Vim'i kullanmaya başladım ve birkaç özelliği nedeniyle beğendim. Yönlendirmeler ile ilgili olarak, bunu unuttum, hatırlattığınız için teşekkürler. Şu an itibariyle, GUI arayüzü olmayan ssh kullandığım uzak bir VM üzerinde çalışıyorum, bu nedenle Vim, başka bir GUI editörü çalışamadığı zaman büyük bir kullanım alanı buluyor, bu yüzden Vim'i burada vurguladım.
Endişelenme Çocuk

1

Dosya adı içeriğini görüntülemek için cat komutunu kullanın. kedi dosya adı

Dosyayı düzenlemek için vim komutunu kullanın. vim dosya adı

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.