Làm cách nào để xuất văn bản màu bằng cách sử dụng "printf" trên cả Mac OS X và Linux?Làm cách nào để in bảng điều khiển bằng màu theo cách đa nền tảng?
Trả lời
Bạn có thể sử dụng mã màu ANSI. Đây là một chương trình mẫu:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%c[1;31mHello, world!\n", 27); // red
printf("%c[1;32mHello, world!\n", 27); // green
printf("%c[1;33mHello, world!\n", 27); // yellow
printf("%c[1;34mHello, world!\n", 27); // blue
return 0;
}
27
là ký tự escape
. Bạn có thể sử dụng \e
nếu muốn.
Có danh sách tất cả các mã trên web. Here is one.
Để có tính di động tốt nhất, hãy truy vấn cơ sở dữ liệu terminfo. Trong vỏ,
colors=(black red green yellow blue magenta cyan white)
for ((i = 0; i < ${#colors[*]}; i++)); do
((j=(i+1)%${#colors[*]}))
printf '%s%s%s on %s%s\n' "$(tput setaf $i)" "$(tput setab $j)" \
"${colors[i]}" "${colors[j]}" "$(tput op)"
done
sẽ in ra
black on red red on green green on yellow yellow on blue blue on magenta magenta on cyan cyan on white white on black
nhưng trong màu sắc.
lựa chọn khác là:
# Define some colors first (you can put this in your .bashrc file): red='\e[0;31m' RED='\e[1;31m' blue='\e[0;34m' BLUE='\e[1;34m' cyan='\e[0;36m' CYAN='\e[1;36m' green='\e[0;32m' GREEN='\e[1;32m' yellow='\e[0;33m' YELLOW='\e[1;33m' NC='\e[0m' #################
Sau đó, bạn có thể gõ trong terminal:
echo -e "${RED}This is an error${NC}" echo -e "${YELLOW}This is a warning${NC}" echo -e "${GREEN}Everythings fine!${NC}"
Đừng quên $ {NC} ở cuối. NC là viết tắt của "no color", có nghĩa là sau câu của bạn, nó sẽ trở lại màu bình thường. Nếu bạn quên nó, toàn bộ dấu nhắc và lệnh sau đó sẽ có màu bạn đã chỉ định (tất nhiên bạn có thể gõ 'echo -e' $ {NS} "'để thay đổi lại).
Điều này dường như không hoạt động trên thiết bị đầu cuối trên mac (OS X v10.9.1) - Tôi đã không đặt nó trong .bashrc, chỉ cần định nghĩa nó trong shell trên dòng lệnh - nhưng văn bản được in trực tiếp. – Anand
Câu hỏi đặt ra là lệnh 'printf', không phải lệnh đầu cuối. Hơn nữa, một giải pháp nền tảng chéo đã được yêu cầu, 'đặt cái này vào trong .bashrc' của bạn không phải thế. – TimZaman
@TimZaman Vâng, về mặt kỹ thuật, OP đã yêu cầu một giải pháp "trên cả Mac OS X và Linux", vì vậy hãy đặt nó vào .bashrc chính xác là như vậy. Mặc dù tôi đồng ý rằng nó không trả lời làm thế nào để làm điều đó bằng cách sử dụng "printf". Tôi cảm thấy cần phải chỉ ra rằng tôi đã đưa ra câu trả lời của tôi như là một thay thế: "Một lựa chọn khác là:", thay vì nói điều này thực sự là câu trả lời. – lugte098
- 1. Cách đa nền tảng để mở tệp bằng Java 1.5
- 2. Làm cách nào để thay đổi màu nền trên bảng điều khiển Java?
- 3. Làm cách nào để đặt biến môi trường theo cách đa nền tảng?
- 4. Làm cách nào để tô màu nền theo điều kiện trong ô bảng?
- 5. Làm cách nào để in bằng máy in mặc định của hệ điều hành trong Python 3 (nền tảng chéo)?
- 6. Chỉ định phông chữ trong bảng điều khiển R - giải pháp đa nền tảng?
- 7. Làm cách nào để thay đổi màu cho thanh điều hướng trong Nền tảng 4?
- 8. Cách chụp ảnh màn hình bằng FireMonkey (đa nền tảng)
- 9. Làm cách nào để in bảng màu VIM hiện tại?
- 10. Làm cách nào để thay đổi màu nền của điều khiển tab trong Winforms?
- 11. Màu sắc trong bảng điều khiển Java
- 12. Làm cách nào để thay đổi màu nền bằng JavaScript?
- 13. Làm cách nào để tạo màu nền (màu hình ảnh) được kết cấu như màu nền bảng phân nhóm?
- 14. Thiết nền của bảng điều khiển với mã màu tùy chỉnh
- 15. Làm cách nào để phát triển trình đọc mã QR đa nền tảng?
- 16. BitVM bitcode đa nền tảng
- 17. Làm cách nào để xóa cột khỏi bảng bằng bảng điều khiển ray
- 18. Làm cách nào để tạo bảng bằng ASCII trong bảng điều khiển?
- 19. Làm cách nào để ẩn bảng điều khiển trên SplitContainer?
- 20. Làm cách nào để nhúng trình xem PDF vào ứng dụng C++ đa nền tảng?
- 21. Làm cách nào để thay đổi cài đặt máy in theo chương trình bằng điều khiển WebBrowser?
- 22. python đa nền tảng di động
- 23. Tắt in bảng điều khiển trong Log4js
- 24. Cách đa nền tảng để lấy PID bằng tên quy trình trong python
- 25. Cách đa nền tảng để nhận thư mục tạm thời bằng Python
- 26. Bộ hẹn giờ nhanh, đa nền tảng?
- 27. Làm cách nào để kiểm tra nền tảng Windows 7?
- 28. Làm cách nào để khóa bảng điều khiển trên các chủ đề trong C# .NET?
- 29. Làm cách nào để tô màu hình nền của UIButton theo cách lập trình và động?
- 30. Làm cách nào để mở một URL bằng trình duyệt mặc định với các ứng dụng đa nền tảng FireMonkey?
Giả sử chuỗi thoát ANSI, như được phổ biến bởi các dẫn xuất VT100 (VT1xx không có màu). Và bạn có thể đã sử dụng '" \ 033 "' thay vì '"% c ", 27'. – ephemient
@ephemient, thậm chí '\ e' đã hoạt động trên máy của tôi. Thiết bị đầu cuối của OS X và hầu hết các ứng dụng giao diện điều khiển Linux hỗ trợ các chuỗi thoát ANSI, vì vậy tôi nghĩ nó đáp ứng được câu hỏi của anh ta. –
Nếu tôi nhớ là tốt, '\ e' chỉ là gcc. – Jack