2010-12-10 29 views
20

Tôi đã cố gắng tìm kiếm các ví dụ về tập lệnh Unix Bash có thể xử lý kiểu văn bản cơ bản (in đậm/gạch chân/nghiêng), nhưng không tìm thấy gì? Là một điều như vậy có thể làm?Kịch bản Unix Bash để khuyến khích/gạch dưới/in nghiêng văn bản cụ thể

Ví dụ:

  1. vững tâm/Gạch chân/In nghiêng tất cả các dòng kết thúc bằng ":"?
  2. (Tắt) Hiển thị/Gạch chân/Làm nghiêng tất cả các dòng kết thúc bằng ":"?

Tôi muốn thiết lập nó làm Dịch vụ qua Máy tự động; vì vậy hãy sử dụng /bin/bash và hành động trên "văn bản đã chọn" (tất nhiên là trong một tệp tương thích với văn bản đa dạng thức).

Trả lời

20

Về cơ bản, bạn muốn làm khai báo một số biến với mã phong cách - một cái gì đó như thế này:

underline=`tput smul` 
nounderline=`tput rmul` 
bold=`tput bold` 
normal=`tput sgr0` 

sau đó bạn có thể gọi những để sử dụng trong sản lượng của bạn bằng cách sử dụng các biến, như thế này:

echo "${bold}bold${normal} text stands out!" 
echo "${underline}underlined${nounderline} text does, too." 

Tự động áp dụng cho tất cả các dòng bắt đầu bằng một ký tự cụ thể, bạn nên sử dụng các biến như được hiển thị ở trên. Bên cạnh việc sử dụng phương pháp này dễ dàng hơn, nó cũng sạch hơn và dễ sử dụng hơn. Ví dụ, khi sử dụng phương pháp này, bạn có khả năng tạo kiểu bất kỳ số từ nào trong một chuỗi đầu ra cho trước, để nhấn mạnh một từ cụ thể, không phải toàn bộ câu (trừ khi đó là mục tiêu của bạn).

Để biết thêm thông tin, bạn nên kiểm tra http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html và/hoặc người tput

+0

Ngoài ra, cần lưu ý rằng mặc dù ** tput sgr0 ** không loại bỏ TẤT CẢ phong cách, nó không phải lúc nào cũng thực hiện như mong đợi , vì vậy tốt nhất bạn nên sử dụng mã "thoát" liên quan đến kiểu bạn đang sử dụng (ví dụ: sử dụng $ {underline} để bắt đầu khu vực gạch chân, sau đó gọi $ {nounderline} để kết thúc việc sử dụng kiểu). –

+0

Chúc mừng, Chris. Tôi mới làm quen với Unix Bash và chỉ thực sự quen thuộc với cách tiếp cận "một lớp", vì vậy xin lỗi sự thiếu hiểu biết của tôi, nhưng mã bạn cung cấp (với các biến, vv) có được sử dụng trong Automator bin/bash không? Tôi cũng không hiểu việc sử dụng "echo", "$" ... Tôi đã từng thấy echo được sử dụng trong PHP. –

+0

Bạn có thể hiển thị ví dụ về 'sgr0' không hoạt động như mong đợi không? –