UPDATE:ฉันได้เพิ่มสคริปต์ใหม่ (แตกต่าง) ... Ignacio Vazquez-Abrams
มีประเด็น: คำถามที่ถามจริงๆexecutable scripts are green, et cetera
.. โอเค ... คุณจะพบสคริปต์ (ต้นแบบ) เช่นนี้ในตอนท้ายของคำตอบนี้
นี่เป็นครั้งแรก (เดิม) ส่วนเป็นเรื่องเกี่ยวกับและ grc
grcat
สิ่งนี้น่าจะใช้ได้ grc
... (ตามที่enzotibได้ชี้ให้เห็น .. ชื่อแพ็กเกจคือgrc
... ยูทิลิตีย่อยที่ใช้ในตัวอย่างคือgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
ตัวอย่างต่อไปนี้จะพิมพ์ออกมา
./
ในสีม่วงแดง
bin/cpp/
ในสีฟ้า
bigint
ตัวหนาสีขาว
ฉันยังไม่ได้เรียงอย่างเต็มที่ว่าจะจัดการกับไฟล์กำหนดค่าอย่างไร แต่ดูเหมือนว่ามันจะทำสิ่งที่คุณต้องการ (เมื่อคุณเชื่อง) .. เช่น สำหรับไฟล์ที่ไม่มี sub-dir และลำดับสีดูเหมือนว่าจะไม่อยู่ในลำดับเดียวกันกับนิพจน์
ฉันคิดว่ามันเป็นไปได้ (แต่ฉันยุ่งเล็กน้อยในขณะนี้) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
นี่คือสคริปต์ที่ได้รับแรงบันดาลใจจาก Ignacioใหม่:)
find
นี้ทำงานได้ถ้าคุณใช้เส้นทางเดียวเป็นคนแรกที่จะหาเรื่อง
มีปัญหาที่ยังไม่ผ่านการทดสอบในสคริปต์นี้ มันเป็นเพียงแนวคิด
ปัญหาหนึ่งคือ: ลิงก์สัญลักษณ์ ... น่านน้ำมืดมน ...
ตามที่มันพิมพ์ERROR
เมื่อพบประเภทที่ไม่รู้จัก (เช่นลิงก์สัญลักษณ์) จากนั้นดำเนินการประมวลผลต่อไป
ขอบคุณenzotib
สำหรับtput
ตัวอย่าง
dircol=$(tput bold ;tput setaf 4)
coloff=$(tput sgr0)
root="$HOME" # define path here, not in 'find` arg
root="${root:-.}" # default to '.'
root="${root%/}/" # add trailing '/'
#
find "$root" -maxdepth 1 -name '*' -printf "%y %P\n" |
while read -r line ;do
case $line in
d ) printf "%s\n" "$dircol$root$coloff";;
d\ *) printf "%s\n" "$dircol$root${line:2}$coloff";;
f\ *) l="$root${line:2}"
d="${l%/*}/"
f="${l##*/}"
cd -P "$d"
printf "%s" "$dircol$d$coloff"
ls --color=always -R1 "$f"
cd - >/dev/null
;;
*) printf "ERROR - type not yet catered for\n";;
esac
done
bfs
ว่ามีฟังก์ชั่นนี้: github.com/tavianator/bfs