Tạo các lệnh OS X Terminal tôi gõ BÓNG


11

Tôi muốn làm cho các lệnh tôi đã nhập (đầu vào) vào thiết bị đầu cuối nổi bật so với tất cả đầu ra.

Ví dụ:

iMac: ~ buster $ chmod -R GW Myfolder
iMac: ~ buster $ cd Myfolder
iMac: Myfolder buster $ ls -l
tổng 0
drwxr-xr-x 9 rễ quản trị 306 ngày 20 tháng 4 năm 2010 bin
drwxr-xr-x 7 rễ quản trị 238 tháng tư 20 2010 bao gồm
drwxr-xr-x 73 root admin 2482 18 tháng 5 17:16 lib
drwxr-xr-x 6 root admin 204 Tháng Tư 20 2010 man
imac: myfolder buster $ echo Go Giants!
Đi đại gia!

nhảy mạnh vào tâm trí nhưng tôi chấp nhận một màu hoặc thậm chí làm nổi bật toàn bộ dòng ...

Tôi chắc chắn có một cách để làm điều này nhưng nó không rõ ràng đối với tôi ...

cảm ơn!

Câu trả lời:


9

Chỉnh sửa ~/.bash_profilehoặc ~/.bashrc(xem bình luận của Gilles bên dưới) và thêm các dòng sau:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${OFF}\u@\h:\w \$${BOLD}"
PS2="> ${BOLD}"
trap 'echo -ne "${OFF}" > $(tty)' DEBUG

Di chuyển ${BOLD}xung quanh để làm cho một phần của dấu nhắc cũng in đậm. Nếu lời nhắc không nên được tô màu, bạn cần có ${OFF}tiền tố PS1, nếu không các dòng trống (nhấn enter mà không có gì được viết) sẽ làm cho dấu nhắc sau được in đậm (tín dụng cho @Jay, cảm ơn lần nữa!)

Điều này thêm một bẫy gỡ lỗi để tắt định dạng in đậm, vì vậy nó khá là hack. Tín dụng (hoạt động mà không có nhóm tty trên OS X mặc dù).

Đây là một chút của một hack, vì vậy sử dụng nó có nguy cơ của riêng bạn.

Chỉ đặt PS1/ PS2nhắc nhở của bạn thành đậm sẽ dễ dàng hơn và giống như hiển thị:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${BOLD}\u@\h:\w \$${OFF}"
PS2="${BOLD}>${OFF} "

1
Không phải ~/.bash_profile, nhưng ~/.bashrc(hoặc cả hai, nếu bạn không lấy nguồn .bashrctừ .bash_profile). Các cài đặt này cần được đặt cho từng phiên bản tương tác của bash và chỉ .bash_profileđược đọc bởi các vỏ đăng nhập.
Gilles

Cảm ơn, sẽ chỉnh sửa câu trả lời của tôi. Tôi không có bashrc, vì vậy tôi đã sử dụng những gì đã có.
Daniel Beck

2
Tôi đã tìm ra nó, đặt $ {OFF} ở phía trước: PS1 = "$ {OFF} \ u @ \ h: \ w \ $$ {BOLD}"
Jay

1
@Daniel: Không nên có dấu gạch dưới ~/.bashrc.
Dennis Williamson

1
Nếu tôi sử dụng mũi tên lên bốn lần liên tiếp, để đi qua lịch sử lệnh, thì 3 ký tự đầu tiên của lệnh cũ sẽ trở thành một phần của dấu nhắc và không có cách nào để loại bỏ chúng. Tôi không thể xóa chúng bằng phím xóa lùi.
Jay

1

Tôi đã gặp một chút rắc rối với các giải pháp ở đây khi sử dụng El Capitan (đặc biệt là trong iTerm2 nhưng trong Terminal cũ đơn giản). Tôi có hai loại lỗi:

  1. Khả năng xóa dấu nhắc bash của tôi hoàn toàn bằng cách chỉ cần nhấn phím cách rồi xóa lùi
  2. Các ký tự không mong muốn tìm đường vào đầu ra bash của tôi, ví dụ: đầu vào pwdsẽ dẫn đến

    \[\]/Users/home/Directory

    hoặc trong

    \e[0m/Users/home/Directory

Tôi đề xuất giải pháp sau đây, mà thực sự chỉ là giống nhau hơn.

    BOLD="\033[1m"
    OFF="\033[m"
    PS1="${OFF}\u@\h :${BOLD}"
    PS2="> ${BOLD}"
    trap 'echo -ne "${OFF}" > $(tty)' DEBUG

Công việc tốt! Chỉ là một vài khác biệt nhỏ, nhưng tôi rất vui vì bạn đã khám phá ra cách này để làm việc với El Captain.
DrZoo
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.