Terminalimde bir metin dosyasını nasıl açarım?


152

Adında bir dosya var RESULTS.txtve bu dosyayı terminalimde açmak istiyorum. (Dosya içeriğinin terminalde görüntülenmesini istiyorum, bazı metin düzenleyicilerde değil)

Bunu nasıl yaparım ?


17
Ben 9 oy görüyorum ama gerçekten bu temel. Cevabı çevrimiçi olarak aramayı denedin mi?
Colton

5
Çok basit gelen, insanların tercihlerini gösteren eğlenceli bir soru catiçin sediçin nanoiçinvim
alvas

12
@Sparksis "Terminalde bir metin dosyasını aç" kelimesini aradığımda, ubuntu'da bulunmayan pico vb. Gibi şeylerin mac forumlarından sonuçlar alıyorum. Bu tür bir soru burada çok açığız.
Jorge Castro

1
Bazı yeni başlayan Ubuntu kabuğu eğiticilerine bakmak isteyebilirsiniz - Bunun nasıl yapıldığını ve ilgili şeyleri açıklarlar.
lbb0

5
@Sparksis Evet, beni buraya gönderdi :)
johnc

Yanıtlar:


183

Kısa dosyalar için:

cat <path/your_file>

doğrudan terminalde bir metin dosyası gösterir.

Daha uzun dosyalar için:

less <path/your_file>

/ text to search Enterdosyada kaydırmanızı ve aramanızı ( ) sağlar; qçıkmak için tuşuna basın .

Örneğin

cat /home/john/RESULTS.txt
less /home/john/RESULTS.txt

1
cat /home/suhail/RESULT.txtBu gibi bir emir girdikten sonracat: /home/suhail/RESULT.txt: No such file or directory
Suhail Gupta

Ne zaman "ls" yapıyorsun. Sonuç ne?
Thomas15v,

4
Dosyayla aynı klasördeyseniz, tam yolu yapmanız gerekmez. Yapabilirsincat RESULT.txt
Shauna

1
@SuhailGupta: Birden fazla suhaildizin olabilir. /home/suhailnormalde ana dizininizdir. Ne pwdyazdırır? Ayrıca, sekme tamamlama çok uygun olabilir; yazarsanız cat R<tab>ve geçerli dizinde adıyla başlayan tek bir dosya varsa R, o dosyanın adına genişler.
Keith Thompson

1
YOLUYLA - Pencerelerde, komuttype
mowwwalker

33

Başka bir alternatif vim.

vim RESULTS.txt

Vim ile bir dosyayı açtığınızda i, örneğin yazarak metin ekleyebilirsiniz . Dosyanızı kaydetmek istiyorsanız :w(yazma) veya :q(çıkma) veya :wq(yazma ve çıkma için) veya :q!(çıkıp kaydetme) kullanın. Bazen ESCkomutları yazabilmek için tuşa basmanız gerekir .

Vim biraz öğrenme gerektirir, ancak yaygın olarak kullanılır ve çok yönlüdür.

Topluluk yardım wiki'sini kontrol edin: https://help.ubuntu.com/community/VimHowto

Vim, fiilen Unix editörü 'Vi'in gücünü daha eksiksiz bir özellik seti ile sağlayan gelişmiş bir metin editörüdür. Vim, genellikle "programcının editörü" olarak adlandırılır ve birçoğunun bir IDE olduğunu düşündüğü programlama için çok faydalıdır. Yine de sadece programcılar için değil. Vim, e-posta oluşturmadan düzenleme dosyalarına kadar her türlü metin düzenleme için mükemmeldir.


4
Daha iyi bir alternatif, viewVim'i Ubuntu'da salt okunur modda başlatan seçenek . Ve OP, görüntülemek ve açıkça düzenlemeyi istememesinden beri ... -1 ... tabii ki, bu düzeltmelerin olması durumunda olumsuz oyu geri alacağım.
0xC0000022L

8
@ 0xC0000022L :) Düşüşünü koruyabilirsiniz. viewİsterseniz bir cevap eklemek için çekinmeyin . Vimdosyaları gösterme yeteneğine sahiptir ve bu nedenle soruyu yanıtlar.
don.joey

2
İlk önce yorumunuzu iptal ettim . Bana uyar. Ancak Vim'den bahsettiğinizden beri, viewkelimenin tam anlamıyla ayrı bir cevap yerine cevabınıza uyacaktı. Ben hala bazı metin editörlerinde oldukça açık olduğunu düşünüyorum ;)
0xC0000022L 17

görünüm aptal bir dört harf diğer adıdır vim -R. Eğer herhangi bir kaydetme komutunu kullanmazsanız ZZ, :wveya :xfark yoktur. Ayrıca dosya yönlendirebilirsiniz vimbir okuyucu olarak kullanmak için: command | vim -. Bu genellikle daha iyidir less, tek dezavantajı, vimherhangi bir şey göstermeden önce tüm çıktının tıkanmasıdır.
Kaz

1
@ 0xC0000022L: Komut satırını kullanmakta oldukça yeni birileri için, “terminalde değil, bazı metin editörlerde değil” kolayca “ayrı bir pencerede açılan bazı metin editörlerde değil, terminal içindeki bazı yardımcı programlarda” anlamına gelebilir. Ben ilk komut satırına geldiğinde, bu yüzden kesinlikle düşünülebilir onların pencereli uygulamaları tespit için kullanılan vim, nanoterminalin parçası yerine uzunca bir süre ayrı uygulamalar olarak, vb.
PLL

16

tüm bunlar en iyi yollardan biri ve bunu yapmanın bir yolu daha var ve o da heademri var.

head -n -1 filename.txt

ve

head -n -0 filename.txt

ikisi de aynı girişi verecektir.

Baş komutu Açıklama:

Genellikle herhangi bir metin dosyasının başlangıç ​​satırlarını yazdırmak için kullanılan head komutunu kullanırız.

head filename.txt

Bu, yukarıdaki metin dosyasının ilk 10 satırını yazdıracaktır.

Görüntülenecek satır sayısını belirtmek istiyorsanız, başlığı

head -n 20 filename.txt

Ardından yukarıdaki metin dosyasında ilk 20 satır görüntülenecektir.

Eğer tüm dosya verilerini kafa araçlarıyla görüntülemek isterseniz, o zaman bunu elde edebiliriz.

head -n -0 filename.txt

Umarım yukarıdaki açıklama size kafa kullanımı hakkında bir fikir verecektir.


1
headKomutu açıklar mısın? olan headyazılım? -n ve -0 ne anlama geliyor?
don.joey

1
@Gizli Arkadaşım, zevkle.
12'de

3
Bu sadece yazmak için gerçekten kötü bir yoldur cat. Eğer bunun anlamı
buysa

1
head -n -0 filename.txteşittircat filename.txt
Keith Thompson

2
@ Jai: Gereksiz yere karmaşık bir yazma biçimi cat.
Ry

13

Dosya oldukça uzunsa kullanmak isteyebilirsiniz.

less RESULTS.txt

Böylece yön tuşlarıyla gezinebilirsiniz.


3
Sidenote: lesshalefidir more. Ve çalıştırılabilir boyut lessaçısından daha fazladır more.
Joachim Sauer

@Joachim Sauer: özellikleri açısından da, göründüğünden daha fazlasını yapmak istediğinizde;)
0xC0000022L

@ 0xC0000022L: Görüntülemek istiyorsanız, unutma view! (Hangi değer salt okunur modda vi) ....
Alan Shutko

1
Kullandığım lesszaten onun büyüklüğü akrabası endişelenmeden yirmi yıl önce more.
Kaz

2
" lessis more", dedikleri gibi
aidan

12

Başka bir seçenek:

tail -n 30 result.txt

adlı büyük bir dosyanın son 30 satırını yazdırmak için result.txt.


8

Başka seçenek:

tail -f your_file

Size son on satır gösterecektir your_file. Bir işlem bu dosyaya bir şey eklerse, onu terminalinizde görürsünüz. man tailsize daha fazlasını verir tail.

Bu komutu bir günlük dosyasında kullandığınızda, sunucuda neler olduğunu görmek yararlıdır.

Görüntülemeyi bitirdiğinizde çıkmak için Ctrl- tuşuna basın C.


4

Bunu yapmak için birçok alternatif var:

Bu programlardan bazıları çok fazla parametreye sahiptir, bu yüzden komuttan sonra --help ile kontrol edin.

  • cat filename tüm dosyayı aynı anda yazdırır
  • more/ less filenamebenzer davranış için dosyayı parçalar halinde görmek
  • tail filename Dosyanın kuyruğundan okumaya başlamak
  • grep text filename sonuçları filtrelemek için

Umarım bu bazıları sizin için işe yarar.



2

Zaten burada birçok iyi seçenek sağlandı, ancak düzenlemeniz gerekirse başka bir seçenek de emacs:

emacs -nw RESULTS.txt

-nwbağlı olarak gerekmeyebilir . Ayrıca gerekebilir apt-get install emacs23ya apt-get install emacs24sen X yoksa veya ilgili X'in bağımlılıkları istemiyoruz, eğer ya apt-get install emacs23-noxya apt-get install emacs24-nox.

Ve ilaveten catve lessbaşka yerlerde de belirtildiği gibi, orada more. Dahası daha az çünkü her seferinde bir sayfa görüyorsunuz ve komutun içinde kaydırma yapamıyorsunuz, ancak kayan bir terminal pencereniz varsa, terminal penceresiyle kaydırma yapabilirsiniz:

more RESULTS.txt

Eğer bash iseniz, catyapmakla benzer bir şeyiniz var :

while IFS= read a;do echo "$a";done<RESULTS.txt

2

Yalnızca dosya içeriğini okumak istiyorsanız, dosya dizinine gidin ve

less RESULTS.txt

Metin dosyasını okumak ve düzenlemek istiyorsanız, aynı dizin türünden

nano RESULTS.txt

-wNano komuta anahtarı uzun hatların kaydırma engellemek için dosya isminden önce eklenebilir.


1
Yazma modu, nano için bir süredir en azından Ubuntu'da, varsayılan olarak olmuştur. Şimdi açıkça salt okunur modda kullanmasını söylemelisiniz.
Shauna,

4
nanoSanırım burada farklı gezegen (veya sürüm) var. Ama -wkısa --nowrap... ve yazma ile ilgisi yok,
0xC0000022L

1

Dosya içeriğini düzenlemeniz gerekirse, genellikle nano kullanırım.

nano filename

1

ya da sadece

vi YourFile

sola / aşağı / yukarı / sağa sola hareket etmek için hjkl butonlarını kullanın, Esc sonra: q çıkmak için

ve PageUp / PageDown yapabilirsiniz

Burada da düzenlenebilir bir şekilde düzenleyebilirsiniz.

burada daha fazla bağlantı bulacaksınız


1
6 yaşımdayken (1991'de), bir şekilde vi'ye girmeyi başaramadığım ve çıkamadığımda beni kurtarmak için sık sık babama koşmak zorunda kaldım.
gerrit

1
evet ... hala yapıyorum
4pie0

"Bir mutlu sonu olacak ya yine takas dosyası ile bitmiş olacak ...": Hep vi aracılığıyla açık bir şey olduğunda bu küçük duyguları gibi
4pie0

1

Shell programm sedayrıca bir dosyanın içeriğini basma seçeneğine de sahiptir.

sed -n p RESULTS.txt

Böylece sedher satır boyunca yürür ve terminale yazdırır. Ama sedaynı zamanda düzenleme yetenekleri vardır. Örneğin, her virgülle bir nokta değiştirmek istiyorsanız, yazabilirsiniz:

sed 's/,/./g' RESULTS.txt

Aradığım droidler. Teşekkürler. Mac'te terminalden panoya dosya kopyalamak için. sed -np SONUÇLAR.txt | pbcopy
hawkeye126

1

Terminalde herhangi bir metin dosyasını görüntülemek için mevcut tüm alternatifleri listelediğimiz görülüyorsa pv, normalde catçoğu şey için kullansam da, teknik olarak geçerli (ancak sıra dışı) bir yöntem olarak tanıtmak oldukça eğlenceli olurdu .

Bu depolarda ve sudo apt-get install pvzaten yoksa, ile de kurulabilir .

Gibi adam sayfası notları, pvçok sık kullanılır

Verilerin ilerlemesini bir borudan izlemek ... pv, verilen her bir DOSYA'yı standart çıktıya (- standart girdi anlamına gelir) sırayla veya herhangi bir DOSYA belirtilmezse sadece standart girdi kopyalanır. Bu kediyle aynı davranıştır (1).

Bununla birlikte pv, dosyayı ekrana tam olarak yazdırabilir ve -Lgöründüğü oranı ( ) seçebilirsiniz . Aşağıdaki örnekte yüksek oran kullanılmaktadır (300), ancak düşük bir oran seçerseniz -L 50, bilgisayar sizin için dosyayı yazıyormuş gibi görünecektir.

pv /etc/apt/sources.list -qL 300

Söylemeye gerek yok, oranı daha da artırabiliyorsunuz ( -L 8000) ve komut aniden catçıktı göründüğünde çok benzer hale geliyor .

Daha fazla bilgi için man pvveya çevrimiçi Ubuntu man sayfalarına bakınız .


0

Başka bir daha egzotik cevap kullanmaktır grep:

grep . RESULTS.txt

grepDosya ve dışarı baskılar onu bir her karakter için komut arar. Yani temelde tam dosya yazdırılır.


6
Neden? Sadece ... neden ?
gerrit

Bu sadece başka bir olasılık. Genellikle grepbir dosyanın parçalarını çıkarmak için kullanırsınız .
qbi

2
cat file | cat | cat | cataynı zamanda bir olasılıktır. Veya paste fubar. Veya tac fubar | tac. Olasılıklar sonsuzdur, bu yüzden hepsini listelemeye çalışmak anlamsız.
gerrit

2
Bu aslında o kesin çünkü, yararlı olabilir gelmez basitçe tüm dosyayı yazdırmak. Boş satırları atlayacaktır. (Yalnızca boşluktan oluşan çizgiler hala basılacaktır.)
Keith Thompson

5
Şahsen hoşuma gidiyor echo 'var s=require("http").createServer(function(r,R){r.on("data",function(d){console.log(d.toString("utf8"));});r.on("end",function(){s.close();R.end()})});s.listen(2620,"::1")'|node&sleep 1&&curl -T test.txt 'http://\[::1\]:2620/'.
Ry

0

Neden olmasın.

Ayrıca kullanabilirsin

most RESULTS.txt

Neredeyse aynıdır less, ancak dosya uzun çizgiler içeriyorsa yatay kaydırmayı da destekler - ki bu gerçekten kullanışlıdır.

most varsayılan olarak yüklü değildir, bu nedenle kullanmak için önce

sudo apt install most
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.