`cat` แสดงไฟล์โดยใช้รหัสมาร์กอัปเป็นสีได้หรือไม่


45

บางครั้งฉันต้องการดูเนื้อหาของไฟล์อย่างรวดเร็วจากบรรทัดคำสั่ง สำหรับผมในการใช้หลักสูตรนี้catแต่ก็มักจะเป็นไฟล์ที่มาในPython , Javaหรือง่ายHTML สำหรับไฟล์เหล่านี้มันจะมีประโยชน์ถ้าcatให้มาร์กอัปสีกับไฟล์เพื่อให้อ่านง่ายขึ้น

สามารถcatทำสิ่งดังกล่าวหรือไม่


นี่อาจมีคำตอบอยู่แล้วที่นี่
วิลฟ์

ฮ่า @wilf ฉันพบรหัสเดียวกันกับ google: D นอกจากนี้ยังควรทราบหัวข้อนี้ใน SO: superuser.com/questions/84426//
Rinzwind

@Rinzwind - ฉันค้นหา StackOverflow ขณะที่มันกำลังถูกผูกไว้ที่จะเกิดขึ้น ;-)
วิลฟ์

คำถามนี้ทำให้ผมนึกถึงการพิจารณาที่เป็นอันตรายcat -v
สโนว์บอล

คำตอบ:


48

catไม่สามารถทำได้ อย่างไรก็ตามบางทีอาจเป็นเรื่องเหลวไหลอาจช่วยคุณได้ เป็นสคริปต์ไพ ธ อนและสามารถติดตั้งผ่าน apt-get

sudo apt-get install python-pygments

หรือดาวน์โหลดและติดตั้งได้อย่างง่ายดายผ่าน easy_install

รองรับภาษาซอร์สโค้ดจำนวนมากและภาษามาร์กอัป

มันถูกใช้โดย

pygmentize -g <filename>

5
เปิดแฟ้มเป็นpygmentize -g <filename>ที่-gสวิทช์เป็นสิ่งสำคัญที่จะจัดการแฟ้มโดยไม่ต้อง lexer ตัวอย่างเช่นถ้าคุณพยายามที่/etc/fstabจะเปิดโดยที่-gมันจะล้มเหลว
souravc

ขอบคุณ @souravc เพิ่มไปยังคำตอบ น่าสนใจข้อโต้แย้งนี้ดูเหมือนจะไม่ได้รับการกล่าวถึงในหน้าคนหรือหน้าช่วยเหลือ
txwikinger

2
ดีฉันเล่นมากกับมัน คุณสามารถค้นหาได้ลองpygmentize --help ถ้า-gผ่าน, พยายามเดา lexer จากเนื้อหาไฟล์หรือส่งผ่านเป็นข้อความธรรมดาหากสิ่งนี้ล้มเหลว (สิ่งนี้สามารถใช้ได้กับ stdin)
souravc

4
นี่คือสิ่งที่ดีที่สุดแล้วก็นามแฝงว่าแมวจะทำการเพิ่มจำนวน -g และคุณก็เป็นทองคำ funced cat... type pygmentize -g $argv... save..funcsave catในปลามันเป็นเรื่องง่ายเป็น
Elijah Lynn

ในของbashrcฉันฉันเพิ่ม: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Antonios Hadjigeorgalis

19

ไม่ได้มาจากcatตัวเอง แต่คุณสามารถใช้สิ่งที่ต้องการHighlite แหล่งที่มา หรือSuperCatหรือไฮไลท์

แหล่งที่มาของไฮไลท์

โปรแกรมนี้ให้ไฟล์ต้นฉบับสร้างเอกสารที่มีการเน้นไวยากรณ์ นอกจากนี้ยังมีไลบรารีไฮไลต์ C ++ (ใหม่) (ตั้งแต่เวอร์ชัน 3.0)

Source-highlight อ่านข้อกำหนดภาษาต้นฉบับแบบไดนามิกจึงสามารถขยายได้อย่างง่ายดาย (โดยไม่ต้องคอมไพล์ต้นฉบับ) สำหรับการจัดการภาษาใหม่ นอกจากนี้ยังอ่านข้อกำหนดรูปแบบเอาต์พุตแบบไดนามิกและทำให้สามารถขยายได้อย่างง่ายดาย (โดยไม่ต้องคอมไพล์ต้นฉบับ) สำหรับการจัดการรูปแบบเอาต์พุตใหม่ ไวยากรณ์สำหรับข้อกำหนดเหล่านี้ค่อนข้างง่าย (ดูที่คู่มือ)

คู่มือเกี่ยวกับการติดตั้ง:

ดูไฟล์ติดตั้งสำหรับคำแนะนำการสร้างและการติดตั้งโดยละเอียด; อย่างไรก็ตามหากคุณคุ้นเคยกับการรวบรวมซอฟต์แวร์ Linux ที่มาพร้อมกับแหล่งข้อมูลคุณสามารถทำตามขั้นตอนปกติได้เช่นถอดไฟล์ที่คุณดาวน์โหลดในไดเรกทอรีจากนั้น:

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

Supercat

นี่คือหน้าแรกของ Supercat Supercat เป็นโปรแกรมที่ทำให้ข้อความเป็นสีตามการจับคู่นิพจน์ / สตริง / อักขระปกติ Supercat รองรับเอาต์พุต html และข้อความ ASCII มาตรฐาน ซึ่งแตกต่างจากโปรแกรมปรับสีข้อความบางรายการที่มีอยู่ Supercat ไม่ต้องการให้คุณเป็นโปรแกรมเมอร์เพื่อสร้างกฎการกำหนดสี

หากคุณเขียนไฟล์กำหนดค่า supercat สำหรับประเภทไฟล์มาตรฐานโปรดอย่าลังเลที่จะติดต่อฉันที่ "bug-spc (at) nosredna (dot) net" เพื่อรวมไว้ในการแจกจ่าย supercat

หรือด้วยฟังก์ชั่น ( แหล่งที่มา ):

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

ต้องใช้: Pygments ( sudo apt-get install python-pygments python3-pygments) เพิ่มเป็นฟังก์ชั่นในการทุบตี. functions และตั้งชื่อเหมือนสี ()


14

จากคำตอบนี้ที่นี่คุณสามารถใช้python-pygmentsแพ็คเกจเพื่อเน้นสิ่งต่างๆ ก่อนอื่นให้ทำ:

sudo apt-get install python-pygments python3-pygments

แล้ว:

pygmentize -g FILENAME

จากนั้นไปได้:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถตั้งค่าเป็นนามแฝงเช่นเดียวกับคำตอบที่ฉันเชื่อมโยง - โดยทั่วไปให้เรียกใช้สิ่งนี้:

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

ปิดเทอร์มินัลเปิดอีกครั้งและcatcคำสั่งควรใช้งานได้ - หากไม่ได้ตรวจสอบให้แน่ใจว่าบรรทัดเหล่านี้อยู่ใน.bashrcไฟล์และไม่มีการแยกหมายเหตุ:

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

อีกสิ่งหนึ่งก็คือใช้nano:

nano testfile

ป้อนคำอธิบายรูปภาพที่นี่


6

man view หรือ man vim

การใช้งานขั้นพื้นฐาน: view <filename>

ออกจาก: :q<Return>(เพิ่ม<Esc>ก่อนถ้าใช้vim) หรือZZ(ตัวพิมพ์ใหญ่ z สองครั้ง)

เครื่องมือแก้ไขข้อความของโปรแกรมเมอร์vimมีทุกอย่างที่คุณต้องการอยู่แล้วและเป็นส่วนหนึ่งของระบบของคุณอยู่แล้ว

vimมีโหมดอ่านอย่างเดียวเปิดใช้งานด้วยหรือview vim -Rหากสิ่งที่คุณต้องการทำคือดูไฟล์ที่ทำเครื่องหมายว่าควรเพียงพอแล้ว

ใช้งานง่ายนำทางได้ทุกที่ ไม่จำเป็นต้องยุ่งเกี่ยวกับการติดตั้งซอฟต์แวร์ใหม่หรือการเขียนสคริปต์ทุบตี


ฉันรู้ว่า. ประเด็นก็คือการเปิดและปิด VIM นั้นไม่รวดเร็ว ฉันต้องการดูไฟล์ทันทีและดำเนินการต่อในบรรทัดคำสั่ง นั่นเป็นเหตุผลว่าทำไมฉันถึงพบว่าเป็นการดีอย่างพิถีพิถัน ผลทันทีไม่ต้องปิดโปรแกรมหรืออะไร .. :)
kramer65

1
@ kramer65 ตกลงแน่นอนมันเป็นความต้องการของคุณ แต่คุณไม่จำเป็นต้อง "เปิด" vimหรือviewคุณเพียงแค่ให้กับไฟล์: จึงไม่แตกต่างกันที่นั่นด้วยview file.py catแน่นอนว่าคุณต้องปิดมัน แต่จริงๆ:q<Return>หรือZZไม่ใช่งานที่ยาก
เบ็

ปัญหาที่สำคัญคือ vi / vim / view ไม่ได้เขียนไปยัง stdout ดังนั้นฉันไม่สามารถเขียนคำสั่งได้อย่างง่ายดายในขณะที่มองไปที่ไวยากรณ์ที่ไฮไลต์เอาต์พุตข้างต้น
Jack_Hu


3

catไม่สามารถสร้างการเน้นไวยากรณ์ได้เพียงอย่างเดียว python-pygmentsแต่คุณก็ยังสามารถทำเช่นนี้ดังต่อไปนี้โดยใช้ ก่อนติดตั้งจาก terminal เป็น

sudo apt-get install python-pygments

~/.bashrcขณะนี้คัดลอกฟังก์ชั่นดังต่อไปนี้ มันจะให้สิ่งที่คุณต้องการนอกจากนั้นมันจะรักษาคุณสมบัติของcatมิฉะนั้นจะไม่มีประโยชน์ในการใช้cat

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

แหล่งที่มา~/.bashrcเป็น

. ~/.bashrc

มันจะให้ผลลัพธ์สีแดง

catc <filename>

มันจะต่อกับสีเช่นกัน

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

มีวิธีการเปิดใช้งานการเลื่อนด้วยลูกศรขึ้นและลงเมื่อใช้ pygmentize? ฉันกำลังเปิดโดยใช้คำสั่งของแบบฟอร์มxterm -e "pygmentize -g <filename>" และกำลังค้นหาว่าวิธีเดียวในการเลื่อนคือการใช้แถบเลื่อน ฉันลองไพพ์เอาท์พุทไปlessที่นั่น แต่ก็ทำให้เกิดขยะ
Leo Simon

ใช่คุณสามารถใช้pygmentizeกับน้อย สร้างฟังก์ชั่นทุบตีlesscดังต่อไปนี้:lessc () { pygmentize -gf terminal "$1" | less -R }
souravc

2

Bat - แมวโคลนที่มีปีก

คุณอาจต้องการตรวจสอบbatซึ่งมีคุณสมบัติดังต่อไปนี้:

  • การเน้นไวยากรณ์
  • การรวม Git
  • เลือกแสดงอักขระที่ไม่สามารถพิมพ์ได้
  • เพจจิ้งอัตโนมัติด้วย less
  • การต่อไฟล์เป็นแบบดรอปดาวน์catเมื่อเปลี่ยนเส้นทาง

 ดูตัวอย่าง

สกรีนช็อตของ bat แสดงไฟล์สี

รูปภาพที่ถ่ายจากGitHub อย่างเป็นทางการ

การติดตั้ง

คุณสามารถรับแพ็คเกจ Debian ล่าสุดได้ที่นี่และติดตั้งด้วย:

sudo dpkg -i bat_0.10.0_amd64.deb

ปรับหมายเลขรุ่นและสถาปัตยกรรม


0

คำตอบอื่น ๆ ครอบคลุมถึงสาเหตุcatที่ทำไม่ได้ แม้ว่าคุณจะสามารถทำมันมีน้อยใช้ lesspipe.sh


0

แทนที่จะติดตั้งแพ็คเกจของบุคคลที่สามคุณสามารถใช้geditเพื่อดูไฟล์อย่างรวดเร็วด้วยการเน้นไวยากรณ์ ตัวอย่างเช่นคัดลอกแถบที่อยู่ด้านบนและวางลงในเทอร์มินัลของคุณ:

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

คุณจะเห็นคำถามนี้ในรูปแบบ HTML ที่มีการจัดรูปแบบสี:

gedit https.png

  • คุณสามารถใช้geditปุ่มนำทางที่คุ้นเคย
  • คุณสามารถเปิด / ปิดการตัดบรรทัด
  • คุณสามารถใช้ปลั๊กอินอย่างที่ฉันติดตั้งไว้สำหรับรางน้ำขนาด 80 ตัวอักษรและภาพรวมเอกสาร (ขวาสุด) ด้วยแถบเลื่อนรูปขนาดย่อ
  • ข้อแม้เดียวคือคุณต้องจำAlt+ F4เพื่อปิดหน้าต่างอย่างรวดเร็วเพื่อจำลองcatซึ่งไม่ต้องกดแป้นเพื่อปิด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.