Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

8 Bash Prompt hữu ích và thú vị

Nhiều người không coi prompt dòng lệnh là yếu tố hữu ích, thậm chí không để ý. Tuy nhiên, một prompt tốt có thể thay đổi cách bạn dùng command line, và gián tiếp, hệ thống. Bài này giới thiệu 8 Bash prompt hữu ích/thú vị kèm ví dụ. Phần đầu liệt kê prompt, phần sau hướng dẫn áp dụng.

1. Hiện kaomoji vui khi lệnh thành công

Prompt vui mà hữu ích! Lệnh thành công → kaomoji vui (^_^). Lệnh thất bại → kaomoji buồn (O_O).

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\$ "

Dùng if statement kiểm tra exit code (\$?), escape sequence để hiển thị kaomoji đúng màu.

2. Đổi màu prompt khi lệnh thất bại

Có lẽ prompt hữu ích nhất danh sách. Thay màu khi lệnh fail, rút gọn đường dẫn dài, hiển thị số history Bash để dễ truy xuất.

PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007""'

Dùng if statement + mã màu. Có thể tùy màu theo ý thích, nhưng nên dùng logic giúp ích chứ không đổi màu cho vui.

3. Prompt trải nhiều dòng

Muốn nhiều info trong prompt? Prompt này hiển thị: date, time, full path, user@host, terminal đang dùng, số file và dung lượng thư mục.

PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"

Không cần if statement, layout tĩnh nhưng nội dung động. Khuyến khích: áp dụng rồi phân tích từng phần để hiểu cấu trúc.

4. Dùng màu phân tách thông tin

Prompt đơn giản, dùng màu tốt để tách: time, user@host, current directory.

PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "

Một trong những prompt hữu ích nhất, cơ sở tốt để học custom prompt.

5. Hiện full đường dẫn thư mục

Prompt 2 dòng sạch, tối giản (có dòng trống đầu).

Dòng 1: full working path. Dòng 2: user.

PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"

Bỏ \n đầu nếu không muốn dòng trống. Thử nghiệm layout tùy terminal settings.

6. Hiển thị số background job

2 dòng: dòng 1 - user@host + working path. Dòng 2 - history number + background job count (\j).

PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '

Có thể mở rộng: thêm if statement + color coding cảnh báo khi job đạt ngưỡng nhất định.

7. Thông tin chi tiết working directory

Dòng 1: user@host, job count, date/time. Dòng 2: current directory, số file, disk usage.

PS1="\n\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]m\[\017\]([\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, \$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"

Phức tạp về escape/formatting. Làm từng mảnh một: nhập từng phần, kiểm tra hiển thị/lỗi, xây dần lên hoàn chỉnh.

8. Tự tạo Bash Prompt riêng

Kết hợp các prompt trên để tự tạo. Ví dụ: biến thể của #7, gọn hơn, info liên quan.

PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"

Khuyến khích: tự tạo thay vì copy. Sẽ hiểu cách các element kết hợp, thậm chí sáng tạo prompt riêng.

Câu hỏi thường gặp

1. Tại sao cần Bash prompt khác nhau?

Năng suất là yếu tố then chốt. Dùng command line thường xuyên → thấy prompt mỗi vài giây. Đưa info quan trọng vào prompt = luôn có sẵn. Thường hiệu quả hơn mở nhiều cửa sổ.

2. Thêm prompt vào Terminal như thế nào?

Copy paste code vào terminal → chỉ áp dụng session hiện tại. Muốn vĩnh viễn: paste vào cuối file ~/.bashrc → restart terminal.

3. Các prompt này chạy được trên shell khác không?

Thường có cross-compatibility nhưng không đảm bảo 100% parity. Xem bài customize Mac Terminal (dùng zsh) - có khác biệt nhỏ nhưng nhiều tương đồng.

4. Biết thêm được element gì vào prompt?

Gần như mọi element hệ thống đều có thể hiện. Tìm hiểu Bash variables - chìa khóa "mở khóa" các element. Tài liệu hay trên Linux.com - nên để bên cạnh khi custom.

5. Không muốn custom prompt nữa thì sao?

Mở config file (~/.bashrc) → xóa dòng liên quan. Không cần lệnh thêm. Khuyến khích restart terminal nếu không thấy thay đổi.

Nếu dùng command line thường xuyên hoặc có nhu cầu đặc biệt, custom prompt là ý tưởng tuyệt vời. Không cần kiến thức sâu, thường tìm được prompt sẵn từ dev khác.