Làm cho dấu nhắc shell Linux hiển thị giá trị trả về cuối cùng


12

Tôi hiện đang sử dụng máy Linux và dấu nhắc shell đang hiển thị cho tôi giá trị trả về cuối cùng và số lệnh đã thực hiện (bao gồm hình ảnh, với các số này được hiển thị bằng màu tím).

Máy tính của tôi không có cái này, làm sao tôi có thể cấu hình nó?
Tôi đang sử dụng Xubunto, nếu cần thêm chi tiết cho tôi biết - Tôi không phải là người dùng Linux nhiều (tôi không biết những gì có liên quan ở đây).

thí dụ


Điều này quá mơ hồ để trả lời. Những lệnh này bạn đang thực hiện là gì? Máy tính (HĐH) của bạn không có cái này là gì?
Chris Ting

Tôi đã nói hệ điều hành của tôi là Xubfox và điều này không liên quan đến bất kỳ lệnh cụ thể nào, nó chỉ là thứ luôn được hiển thị.
Eran

Câu trả lời:


10

Có vẻ như vỏ mặc địnhbash của Xubfox .

Chỉnh sửa .bashrchoặc .bash_profile(tùy thuộc vào cấu hình hệ thống của bạn) và tìm kiếm một dòng bắt đầu bằng PS1=. Dòng này đặt lời nhắc của bạn .

Để thêm giá trị trả về của lệnh cuối cùng, hãy thêm dòng sau vào dòng đó:

`echo -n $?`

vì vậy nó trông giống như sau (nhắc nhở hiện tại của tôi, được đơn giản hóa):

PS1='\u in \w (`echo -n $?`)\n -> \$ '

Nó sẽ trông như thế này, với _con trỏ:

danielbeck in ~ (0)
 -> $ _

Ngoài ra, bạn có thể sử dụng biến môi trường PROMPT_COMMANDđể thêm mã trả về cho dấu nhắc của mình:

export PROMPT_COMMAND='RET=$?; echo -n "($RET) "'

Điều này sẽ thêm ví dụ (0)ngay trước lời nhắc không được sửa đổi của bạn.


Bạn nhận được "bộ đếm" bằng cách thêm \#vào lời nhắc của mình: đó là số lệnh . Hữu ích hơn có thể là số lịch sử , không bắt đầu từ 1, nhưng cho phép bạn thực hiện bất kỳ lệnh nào bằng cách nhập dấu chấm than, theo sau là số lịch sử của lệnh:

984 $ foo
-bash: foo: command not found
985 $ !984
foo
-bash: foo: command not found
986 $ _

Sau một số lần chơi bổ sung:

PS1='`RET=$?; if [ $RET != 0 ] ; then echo "rc $?"; fi`\n\u in `pwd`\n#\# !\! \$ '

Điều này sẽ chỉ hiển thị giá trị trả về nếu nó khác không, trên dòng riêng của nó. Số lệnh và số lịch sử nằm trên cùng một dòng với lệnh bạn sẽ nhập:

danielbeck in /Users/danielbeck/Downloads
#1 !984 $ foo
-bash: foo: command not found
rc 127
danielbeck in /Users/danielbeck
#2 !985 $ _

5

Biến $?chứa mã thoát cho chương trình chạy cuối cùng.

ninth:~ sakkaku$ echo Hello World
Hello World
ninth:~ sakkaku$ echo $?
0
ninth:~ sakkaku$ cat asdasd
cat: asdasd: No such file or directory
ninth:~ sakkaku$ echo $?
1

Tôi nghĩ rằng bạn có thể nhận được "số lượng lệnh được thực thi" bằng cách sử dụng bộ tăng

ninth:~ sakkaku$ echo $[numcommands++]
0
ninth:~ sakkaku$ echo $[numcommands++]
1
ninth:~ sakkaku$ echo $[numcommands++]
2
ninth:~ sakkaku$ echo $[numcommands++]
3

Sau đó, bạn sẽ cần sửa đổi biến PS1 / PS2 trong .bashrc để thay đổi lời nhắc. Đây có vẻ là một hướng dẫn tốt (ngoại trừ nó khuyên bạn nên sửa đổi / etc / bashrc, tôi sẽ chỉ làm ~ / .bashrc).


1
Cảm ơn, tôi sẽ thử nó sau khi tôi ở máy tính của mình và sẽ thấy nó hoạt động như thế nào.
Eran

1

FYI, nếu bạn sử dụng zsh, nó thậm chí còn dễ dàng hơn. Cấu trúc này: %(?..%F{red}%?%f)có nghĩa là hiển thị các lệnh cuối cùng có lỗi màu đỏ nếu nó không bằng 0 (bình thường), nhưng nếu nó không hiển thị gì. Cấu trúc %(1j.[%j].)có nghĩa là hiển thị số lượng công việc nền hiện tại trong dấu ngoặc vuông.

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.