Bisakah `cat` menampilkan file menggunakan markup kode dalam warna?


45

Terkadang saya dengan cepat ingin melihat konten file dari baris perintah. Untuk ini saya tentu saja menggunakan cat, tetapi sering sumber file dalam Python , Java atau HTML sederhana . Untuk file-file ini akan berguna jika catbisa memberikan markup warna pada file-file tersebut, sehingga lebih mudah dibaca.

Bisakah catmelakukan hal seperti itu?


Ini mungkin sudah memiliki jawaban di sini
Wilf

ha @wilf Saya menemukan kode yang sama dengan google: D Juga perlu dicatat topik ini di SO: superuser.com/questions/84426/…
Rinzwind

@Rinzwind - Saya mencari stackoverflow, karena pasti akan muncul ;-)
Wilf

Pertanyaan ini mengingatkan saya pada yang cat -vdianggap berbahaya .
Bola Salju

Jawaban:


48

cattidak dapat melakukan ini. Namun, mungkin pigmen dapat membantu Anda di sana. Ini adalah skrip python dan dapat diinstal melalui apt-get

sudo apt-get install python-pygments

atau mudah diunduh dan diinstal melalui easy_install.

Ini mendukung banyak bahasa kode sumber dan juga bahasa markup

Digunakan oleh

pygmentize -g <filename>

5
Buka file sebagai pygmentize -g <filename>, -gsaklar penting untuk menangani file tanpa lexer. misalnya jika Anda mencoba /etc/fstabmembuka tanpa -gitu akan gagal.
souravc

Terima kasih @souravc Menambahkannya ke jawabannya. Menariknya, argumen ini sepertinya tidak disebutkan di halaman manual atau halaman bantuan
txwikinger

2
Yah saya banyak bermain dengan itu. Anda dapat menemukannya, coba pygmentize --help Jika -gdilewatkan, coba tebak lexer dari konten file, atau lewat sebagai teks biasa jika gagal (ini dapat bekerja untuk stdin).
souravc

4
Ini yang terbaik, lalu alias kucing untuk menghitung -g dan Anda berwarna emas. Dalam ikan itu sederhana funced cat... type pygmentize -g $argv... save..funcsave cat.
Elijah Lynn

di saya, bashrcsaya menambahkan: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Antonios Hadjigeorgalis

19

Bukan dari catdirinya sendiri tetapi Anda bisa menggunakan sesuatu seperti source highlite atau supercat atau highlight

Sorotan sumber

Program ini, diberikan file sumber, menghasilkan dokumen dengan penyorotan sintaksis. Ini juga menyediakan pustaka sorot C ++ (baru) (sejak versi 3.0).

Sorotan sumber membaca spesifikasi bahasa sumber secara dinamis, sehingga dapat dengan mudah diperluas (tanpa mengkompilasi ulang sumber) untuk menangani bahasa baru. Ia juga membaca spesifikasi format output secara dinamis, dan dengan demikian dapat dengan mudah diperluas (tanpa mengkompilasi ulang sumber) untuk menangani format output baru. Sintaks untuk spesifikasi ini cukup mudah (lihat manual).

Manual tentang instalasi:

Lihat file INSTALL untuk instruksi bangunan dan instalasi terperinci; Lagi pula jika Anda terbiasa mengompilasi perangkat lunak Linux yang dilengkapi dengan sumber, Anda cukup mengikuti prosedur yang biasa, yaitu menghapus file yang Anda unduh di direktori dan kemudian:

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

Supercat

Ini adalah beranda Supercat. Supercat adalah program yang mewarnai teks berdasarkan persamaan / string / karakter reguler yang cocok. Supercat mendukung output html serta teks ASCII standar. Tidak seperti beberapa program pewarnaan teks yang ada, Supercat tidak mengharuskan Anda harus menjadi programmer untuk membuat aturan pewarnaan.

Jika Anda telah menulis file konfigurasi supercat untuk tipe file standar, jangan ragu untuk menghubungi saya di "bug-spc (at) nosredna (dot) net" untuk kemungkinan dimasukkan dalam distribusi supercat.

Atau dengan fungsi ( sumber ):

#!/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

Membutuhkan: Pygments ( sudo apt-get install python-pygments python3-pygments) Tambahkan sebagai fungsi untuk mem-bash .functions dan memberinya nama seperti warna ()


14

Seperti dari jawaban ini di sini , Anda dapat menggunakan python-pygmentspaket untuk menyoroti hal-hal. Pertama lakukan:

sudo apt-get install python-pygments python3-pygments

kemudian:

pygmentize -g FILENAME

kemudian coba:

masukkan deskripsi gambar di sini

Anda juga dapat mengaturnya sebagai alias, seperti pada jawaban yang saya tautkan - pada dasarnya, jalankan ini:

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

Tutup terminal, buka lagi, dan catcperintah sekarang seharusnya berfungsi - jika tidak, pastikan baris ini ada di dalam .bashrcfile, dan tidak diomortasikan:

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

Hal lain adalah menggunakan nano:

nano testfile

masukkan deskripsi gambar di sini


6

man view atau man vim

Penggunaan dasar: view <filename>

Keluar: :q<Return>(tambahkan huruf <Esc>pertama jika menggunakan vim), atau ZZ(huruf besar z dua kali).

Editor teks programmer sudah vimmemiliki semua yang Anda butuhkan, dan kemungkinan sudah menjadi bagian dari sistem Anda.

vimmengaktifkan mode baca-saja dengan viewatau vim -R. Jika semua yang ingin Anda lakukan adalah melihat file yang ditandai, itu sudah cukup.

Mudah digunakan, dinavigasi, tersedia di mana-mana. Tidak perlu dipusingkan dengan menginstal perangkat lunak baru atau menulis skrip bash.


Aku tahu. Masalahnya adalah bahwa membuka dan menutup VIM tidak cepat. Saya ingin langsung melihat file dan kemudian melanjutkan di baris perintah. Itu sebabnya saya menemukan penghukuman yang bagus. Hasil instan, tidak berhenti dari program atau apapun .. :)
kramer65

1
@ kramer65 OK tentu saja itu preferensi Anda, tetapi Anda tidak perlu "membuka" vimatau view, Anda cukup memberikannya dengan file :, view file.pyjadi tidak ada perbedaan di sana dengan cat. Tentu Anda harus menutupnya, tetapi benar-benar, :q<Return>atau ZZbukan tugas yang sulit.
berbeda ben

Masalah utama adalah bahwa vi / vim / view tidak menulis ke stdout, jadi saya tidak bisa dengan mudah menulis perintah sambil melirik sintaks yang disorot keluaran di atas.
Jack_Hu


3

cattidak dapat menghasilkan penyorotan sintaks saja. Anda masih dapat melakukan ini sebagai berikut, menggunakan python-pygments. Pertama instal dari terminal sebagai,

sudo apt-get install python-pygments

Sekarang salin fungsi di bawah ini ~/.bashrc. Ini akan memberi Anda apa yang Anda inginkan apalagi itu akan mempertahankan properticat jika tidak ada gunanya menggunakancat

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

Sumber ~/.bashrcsebagai,

. ~/.bashrc

Ini akan memberikan output berwarna,

catc <filename>

Ini akan menyatu dengan warna juga,

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

Apakah ada cara untuk mengaktifkan scrolling dengan panah atas dan bawah saat menggunakan pygmentize? Saya membukanya menggunakan perintah dari form xterm -e "pygmentize -g <filename>" dan menemukan bahwa satu-satunya cara untuk menggulir adalah dengan menggunakan scroll bar. Saya mencoba piping output ke lesstetapi itu menghasilkan output sampah.
Leo Simon

ya Anda bisa menggunakannya pygmentizedengan lebih sedikit. Buat fungsi bash lesscsebagai berikut:lessc () { pygmentize -gf terminal "$1" | less -R }
souravc

2

Bat - Kloning kucing dengan sayap

Anda mungkin juga ingin memeriksa batyang memiliki fitur berikut:

  • Penyorotan sintaksis
  • Integrasi git
  • Opsional menunjukkan karakter yang tidak dapat dicetak
  • Paging otomatis dengan less
  • File concatenation sebagai pengganti drop-in untuk catketika dialihkan

 Pratinjau

Cuplikan layar kelelawar menampilkan file berwarna

Foto diambil dari GitHub resmi

Instalasi

Anda bisa mendapatkan paket Debian terbaru di sini dan menginstalnya dengan:

sudo dpkg -i bat_0.10.0_amd64.deb

Menyesuaikan nomor versi dan arsitektur.


0

Jawaban lain mencakup mengapa cattidak bisa melakukannya. Padahal Anda bisa melakukannya dengan lebih sedikit menggunakan lesspipe.sh .


0

Daripada menginstal paket pihak ketiga, Anda cukup menggunakan gedituntuk melihat file dengan cepat dengan penyorotan sintaksis. Misalnya salin bilah alamat di atas dan tempel ke terminal Anda:

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

Anda akan melihat pertanyaan ini dalam HTML dengan warna yang diformat:

gedit https.png

  • Anda dapat menggunakan gedittombol navigasi yang familier
  • Anda dapat menghidupkan / mematikan bungkus garis
  • Anda dapat menggunakan plugin seperti saya telah menginstal untuk selokan 80 karakter dan ikhtisar dokumen (paling kanan) dengan slider thumbnail
  • Satu-satunya peringatan adalah Anda perlu mengingat Alt+ F4untuk segera menutup jendela untuk mensimulasikan catyang tidak memerlukan penekanan tombol untuk menutup.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.