Làm thế nào bạn có thể tùy chỉnh dấu nhắc bash thiết bị đầu cuối của bạn với khuôn mặt cười?


11

Tôi đang cố gắng tìm hiểu làm thế nào tôi có thể tùy chỉnh dấu nhắc bash của thiết bị đầu cuối của mình để sử dụng khuôn mặt cười. Điều tôi muốn (như đã thấy trong cú đánh ví dụ) là để cwd được tách ra khỏi dấu nhắc bởi một \ n và hiển thị khuôn mặt cười màu xanh lá cây nếu lệnh thành công và khuôn mặt buồn đỏ nếu thất bại.

Có ý kiến ​​gì không?

Điều này được lấy cảm hứng từ một screencast Peepcode.

Thí dụ

Câu trả lời:


15

Sau khi dành khoảng nửa giờ để chơi với mã của andhrimnir và nghiên cứu thêm, cuối cùng tôi đã có được thứ mình muốn.

PS1="\w \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]\n\xE2\x98\xBA'; else echo -e '\[\e[01;31m\]\n\xE2\x98\xB9'; fi\` \[\e[01;34m\]\[\e[00m\]"

Bạn có thể tìm thấy một danh sách các biểu tượng cảm xúc ở đây và sau đó chuyển đổi chúng thành mã byte gồm 3 chữ số mà bạn thấy sau ký tự dòng mới.

Để có được cwd, tất cả những gì tôi phải làm là sử dụng \w. Bạn cũng có thể hiển thị người dùng hiện tại bằng cách thực hiện \u@\w, điều này sẽ tạo ra một cái gì đó như joshsmith@~.


6

Có vẻ như khuôn mặt cười hiển thị ở trên là nhân vật unicode 0x263a. Vì vậy, bạn sẽ cần một thiết bị đầu cuối có khả năng unicode (Không chắc là terminal.app có hỗ trợ điều này hay không, tôi tưởng tượng là nó có).

Đây là mã mẫu in mặt cười màu xanh lá cây cho mã trả về 0 và mặt cau mày đỏ khác.

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"

Tín dụng được gửi đến Fingerel trên các diễn đàn Arch (ông đã đăng nó ở đây ).


Công việc tuyệt vời trên mẫu if / then. Tôi tò mò làm thế nào để thực hiện dòng mới, loại bỏ $, thực sự sử dụng biểu tượng Unicode và làm cho nó hiển thị đầy đủ cwd.
Josh Smith

... Và một giờ sau, trả lời câu hỏi của riêng tôi (cảm ơn bạn!).
Josh Smith

1
Rất vui vì tôi có thể giúp! Có rất nhiều thông tin trong chuỗi tại liên kết tôi đã đăng ở trên nếu bạn muốn tìm hiểu sâu hơn về $PS1nội dung tùy chỉnh .
jake-low

Vâng, một nửa nghiên cứu của tôi bắt đầu từ chủ đề đó. Siêu hữu ích. Ngoài ra, đối với bất kỳ ai muốn đi sâu hơn vào dòng lệnh, Peepcode có một screencast tiên tiến tuyệt vời.
Josh Smith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.