CẬP NHẬT: Tôi đã thêm một tập lệnh (khác) mới ... Ignacio Vazquez-Abrams
có một điểm: Câu hỏi thực sự yêu cầu executable scripts are green, et cetera
.. được rồi ... bạn sẽ tìm thấy một tập lệnh (nguyên mẫu) như vậy ở cuối câu trả lời này.
Phần đầu tiên (bản gốc) này là về grc
và grcat
.
Điều này nên làm việc; grc
... (như enzotib đã chỉ ra .. Tên gói là grc
... Tiện ích phụ được sử dụng trong ví dụ này làgrcat
generic colouriser for everything
generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.
Ví dụ sau đây in
./
màu đỏ tươi
bin/cpp/
màu lục lam
bigint
màu trắng đậm
Tôi chưa sắp xếp đầy đủ cách nó xử lý tập tin cấu hình, nhưng có vẻ như nó sẽ làm những gì bạn muốn (một khi bạn thuần hóa nó) .. vd. đối với một tệp không có thư mục con và chuỗi màu dường như không nằm trong cùng chuỗi với biểu thức.
Tôi cho rằng điều đó là có thể (nhưng hiện tại tôi hơi bận) ...
echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi
find . -maxdepth 3 -name '*' | grcat findhi
Đây là kịch bản mới lấy cảm hứng từ Ignacio :)
Điều này hoạt động nếu bạn sử dụng một đường dẫn duy nhất như đối số đầu tiên find
.
Có những vấn đề UNTESTED trong kịch bản này. Nó chỉ là khái niệm.
Một vấn đề là: Liên kết tượng trưng ... vùng nước âm u ...
Như vậy, nó in ra ERROR
khi gặp một loại không xác định (ví dụ: liên kết tượng trưng), và sau đó tiếp tục xử lý qua đó.
Cảm ơn enzotib
các tput
ví dụ.
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
có chức năng này: github.com/tavianator/bfs