Kedi kodları kullanarak renk kodlu dosyaları gösterebilir mi?


45

Bazen bir dosyanın içeriğini komut satırından hızlıca görüntülemek istiyorum. Bunun için elbette kullanıyorum cat, ancak genellikle Python , Java veya basit HTML'deki kaynak dosyalar . Bu dosyalar catiçin, dosyalara biraz renk biçimlendirme verebilirseniz, daha kolay okunabilmesi kullanışlı olacaktır .

catBöyle bir şey yapabilir miyim ?


Bu zaten bir cevap olabilir burada
Wilf

ha @wilf Google ile aynı kodu buldum: D Ayrıca SO: superuser.com/questions/84426/…
Rinzwind

@Rinzwind - Ben gelmek zorunda olduğu gibi stackoverflow arandı ;-)
Wilf

Bu soru bana cat -vzararlı olduğunu hatırlatıyor .
Kartopu

Yanıtlar:


48

catbunu yapamaz. Bununla birlikte, belki pigmeler orada size yardımcı olabilir. Bu bir python betiğidir ve apt-get yoluyla yüklenebilir

sudo apt-get install python-pygments

veya easy_install aracılığıyla kolayca indirilip yüklenebilir.

Birçok kaynak kod dilini ve işaretleme dilini destekler

Tarafından kullanılır

pygmentize -g <filename>

5
Dosyayı farklı aç pygmentize -g <filename>, -ganahtar, lexer olmadan dosyayı işlemek önemlidir. Mesela /etc/fstabonsuz açmaya çalışırsanız -gbaşarısız olur.
souravc

Thanks @souravc Cevabına ekledi. İlginç bir şekilde, bu argüman man sayfasında veya yardım sayfasında bahsedilmiş gibi görünmüyor
txwikinger

2
Ben onunla çok oynadım. bulabilir, deneyebilir, başarılı pygmentize --help olursa -g, lexer'ı dosya içeriğinden tahmin etmeye çalışın veya bu başarısız olursa düz metin olarak geçirin (bu stdin için çalışabilir).
souravc

4
Bu en iyisi, daha sonra takma ad kediyi pygmentize etmek -g ve altınsınız. Balıklarda olduğu kadar basit funced cat... type pygmentize -g $argv... save..funcsave cat.
Elijah Lynn

Benim de bashrcekledim: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Antonios Hadjigeorgalis

19

Kendinden değil, kaynak highlite veya supercat veya highlightcat gibi bir şey kullanabilirsiniz.

Kaynak-vurgulamak

Bir kaynak dosyası verilen bu program, sözdizimi vurgulayan bir belge üretir. Ayrıca (++ 3.0 sürümünden beri) bir C ++ vurgulama kitaplığı sağlar.

Source-highlight kaynak dil özelliklerini dinamik olarak okur, böylece yeni dilleri işlemek için kolayca genişletilebilir (kaynakları yeniden derlemeden). Ayrıca, çıkış formatı özelliklerini dinamik olarak okur ve böylece yeni çıkış formatlarını işlemek için kolayca genişletilebilir (kaynakları yeniden derlemeden). Bu spesifikasyonların sözdizimi oldukça kolaydır (kılavuza bakınız).

Kurulumla ilgili el kitabı:

Detaylı inşaat ve montaj talimatları için INSTALL dosyasına bakınız; Yine de, kaynaklarla birlikte gelen Linux yazılımını derlemeye alışkınsanız, normal prosedürü uygulayabilirsiniz, yani bir dizinde indirdiğiniz dosyayı açın ve ardından:

 cd <source code main directory>
 ./configure
 make
 make install

Supercat

Bu, Supercat'in ana sayfası. Supercat, normal ifadeler / dizeler / karakterlerle eşleşerek metni renklendiren bir programdır. Supercat, standart ASCII metninin yanı sıra html çıktısını da destekler. Var olan bazı metin renklendirme programlarının aksine, Supercat renklendirme kurallarını yapmak için bir programcı olmanızı gerektirmez.

Standart bir dosya tipi için bir supercat config dosyası yazdıysanız, lütfen supercat dağılımına dahil edilmesi için benimle "bug-spc (at) nosredna (dot) net" adresinden iletişime geçmekten çekinmeyin.

Veya bir fonksiyonla ( kaynak ):

#!/bin/bash#!/bin/bash
if [ ! -t 0 ];then
        file=/dev/stdin
elif [ -f $1 ];then
        file=$1
else
        echo "Usage: $0 code.c"
        echo "or e.g. head code.c|$0"
        exit 1
fi
pygmentize -f terminal -g $file

Gerektirir: Pygments ( sudo apt-get install python-pygments python3-pygments) bash .functions işlevine ekleyin ve color () gibi bir ad verin.


14

Buradaki cevaptan itibaren python-pygmentspaketleri vurgulamak için kullanabilirsiniz . İlk önce:

sudo apt-get install python-pygments python3-pygments

sonra:

pygmentize -g FILENAME

o zaman bir gitmek var:

görüntü tanımını buraya girin

Bağlandığım yanıtta olduğu gibi, bunu takma ad olarak da ayarlayabilirsiniz - temel olarak şunu çalıştırın:

echo "alias catc='pygmentize -g'" >> ~/.bash_aliases 
chmod +x ~/.bash_aliases

Terminali kapatın, tekrar açın ve catckomut şimdi çalışmalıdır - çalışmazsa, bu satırların .bashrcdosyada olduğundan ve açık olmadığından emin olun :

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Başka bir şey sadece kullanmak olacaktır nano:

nano testfile

görüntü tanımını buraya girin


6

man view veya man vim

Temel kullanım: view <filename>

Çıkın: :q<Return>( <Esc>kullanıyorsanız bir ilk ekleyin vim) veya ZZ(büyük harf z iki kez).

Programcının metin editörü vimzaten ihtiyacınız olan her şeye sahip ve muhtemelen sisteminizin bir parçası.

vimviewveya ile etkinleştirilmiş salt okunur bir moda sahip vim -R. Tek yapmak istediğiniz işaretlenmiş dosyayı görüntülemekse, yeterli olacaktır.

Kullanımı kolay, gezilebilir, her yerde kullanılabilir. Yeni bir yazılım yüklemek veya bash scriptleri yazmak konusunda uğraşmanıza gerek yok.


Biliyorum. Mesele şu ki VIM'in açılması ve kapatılması hızlı değil. Bir dosyayı anında görüntülemek ve komut satırında devam etmek istiyorum. Bu yüzden böyle iyi bir tanesini pygmentize buldum. Anında sonuç, bir programdan veya herhangi bir şeyden
ayrılmak

1
@ kramer65 Tamam elbette bu sizin tercihiniz ancak “açmanız” vimveya “ viewsadece dosya sağlamanız gerekmiyor” view file.py, yani burada bir fark yok cat. Tabii ki kapatmanız gerekiyor, ama gerçekten :q<Return>veya ZZzor görevler değil.
farklı bir ben

En büyük sorun vi / vim / view komutunun stdout'a yazmamasıdır, bu yüzden yukarıdaki sözdiziminde vurgulanan çıktıya bakarken kolayca komut yazamam.
Jack_Hu


3

catsadece vurgulayarak sözdizimi üretemez. Yine de, bunu kullanarak yapabilirsiniz python-pygments. İlk önce onu terminalden,

sudo apt-get install python-pygments

Şimdi aşağıdaki işlevi kopyalayın ~/.bashrc. Dahasıcat istediğin şeyi verecek, aksi taktirde kullanmanın hiçbir anlamı yoktur.cat

catc(){
    cat "$@" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

Kaynak ~/.bashrcolarak

. ~/.bashrc

Renklendirilmiş çıktı verir,

catc <filename>

Renklerle de birleşecek,

catc <file1> <file2> ... <filen>

Kullanırken up ile ve aşağı okları kaydırma etkinleştirmek için bir yol var mı pygmentize? ben biçiminde bir komut kullanarak açıyorum xterm -e "pygmentize -g <filename>" ve kaydırma tek yolu kaydırma çubuğunu kullanmak olduğunu bulma yaşıyorum. Çıkışı boruya bağlamayı denedim, lessancak bunun sonucunda çöp çıktı.
Leo Simon

evet pygmentize, daha azıyla kullanabilirsiniz . lesscAşağıdaki gibi bir bash işlevi oluşturun :lessc () { pygmentize -gf terminal "$1" | less -R }
souravc

2

Yarasa - Kanatlı bir kedi klonu

batAşağıdaki özelliklere sahip olanı da kontrol etmek isteyebilirsiniz :

  • Sözdizimi vurgulama
  • Git entegrasyonu
  • İsteğe bağlı olarak yazdırılamayan karakterleri gösterme
  • Otomatik sayfalama less
  • Yeniden catyönlendirildiğinde , bir değiştirme yerine dosya birleştirme

 Ön izleme

Renkli bir dosyayı gösteren yarasanın ekran görüntüsü

Resmi GitHub resmi çekilmiş resmi

Kurulum

En son Debian paketini buradan edinebilir ve kurabilirsiniz:

sudo dpkg -i bat_0.10.0_amd64.deb

Sürüm numarası ve mimariyi uyarlama.



0

Üçüncü taraf bir paket kurmak yerine gedit, sözdizimi vurgulamalı bir dosyayı hızlıca görüntülemek için kullanabilirsiniz . Örneğin, yukarıdaki adres çubuğunu kopyalayın ve terminalinize yapıştırın:

gedit https://askubuntu.com/questions/405960/can-cat-show-files-using-code-markup-in-colors

Bu soruyu HTML’de biçimlendirilmiş renklerle göreceksiniz:

gedit https.png

  • Tanıdık geditgezinme tuşlarını kullanabilirsiniz
  • Satır kaydırmayı açıp kapatabilirsiniz.
  • Küçük karakter kaydırıcılı 80 karakter oluğu ve belgeye genel bakış (en sağda) için yüklediğim eklentileri kullanabilirsiniz
  • Tek uyarı, pencereyi hızlı bir şekilde kapatmak için tuş vuruşlarının kapanmasını gerektirmeyen simülasyonu hızlıca kapatmak için Alt+ hatırlamanız gerekiyor .F4cat
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.