Membuat Linux shell prompt menunjukkan nilai pengembalian terakhir

12

Saat ini saya menggunakan mesin Linux dan prompt shell menunjukkan kepada saya nilai pengembalian terakhir dan jumlah perintah yang dieksekusi (termasuk gambar, dengan angka-angka ini ditampilkan dalam warna ungu).

Komputer saya sendiri tidak memiliki ini, bagaimana saya bisa mengkonfigurasinya?
Saya menggunakan Xubunto, jika diperlukan lebih banyak detail, beri tahu saya - Saya tidak banyak pengguna Linux (saya tidak tahu apa yang relevan di sini).

contoh

Eran
sumber
Ini terlalu samar untuk dijawab. Apa perintah ini yang Anda jalankan? Apa komputer Anda (OS) yang tidak memiliki ini?
Chris Ting
Saya sudah mengatakan OS saya adalah Xubuntu, dan ini tidak terkait dengan perintah tertentu, itu hanya sesuatu yang selalu bisa ditampilkan.
Eran

Jawaban:

10

Tampaknya bashini adalah shell default Xubuntu .

Edit .bashrcatau .bash_profile(tergantung pada konfigurasi sistem Anda) dan cari garis yang dimulai dengan PS1=. Baris ini mengatur permintaan Anda .

Untuk menambahkan nilai pengembalian perintah terakhir, tambahkan berikut ini ke baris itu:

`echo -n $?`

sehingga terlihat seperti berikut ini (prompt saya saat ini, disederhanakan):

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

Ini akan terlihat seperti ini, dengan _menjadi kursor:

danielbeck in ~ (0)
 -> $ _

Atau, Anda dapat menggunakan variabel lingkungan PROMPT_COMMANDuntuk menambahkan kode kembali ke prompt Anda:

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

Ini akan menambahkan mis. (0)Tepat sebelum prompt Anda yang tidak dimodifikasi.


Anda mendapatkan "penghitung" dengan menambahkan \#prompt Anda: ini adalah nomor perintah . Yang lebih bermanfaat mungkin adalah nomor histori , yang tidak dimulai dari 1, tetapi memungkinkan Anda untuk mengeksekusi perintah apa pun dengan memasukkan tanda seru, diikuti dengan nomor histori perintah:

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

Setelah beberapa bermain tambahan:

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

Ini hanya akan menunjukkan nilai kembali jika bukan nol, pada baris itu sendiri. Nomor perintah dan nomor riwayat ada di baris yang sama dengan perintah yang akan Anda masukkan:

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

Variabel $?berisi kode keluar untuk program yang terakhir kali dijalankan.

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

Saya pikir Anda bisa mendapatkan "jumlah perintah yang dieksekusi" dengan menggunakan incrementer

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

Maka Anda perlu memodifikasi variabel PS1 / PS2 di .bashrc Anda untuk mengubah prompt. Ini sepertinya panduan yang layak (kecuali merekomendasikan memodifikasi / etc / bashrc, saya hanya akan melakukan ~ / .bashrc).

Mat
sumber
1
Terima kasih, saya akan mencobanya nanti ketika saya di komputer saya sendiri dan akan melihat bagaimana kelanjutannya.
Eran
1

FYI, jika Anda menggunakan zsh itu bahkan lebih mudah. Konstruk ini: %(?..%F{red}%?%f)berarti menampilkan perintah terakhir errorlevel dalam warna merah jika bukan nol (normal), tetapi jika normal tidak menampilkan apa pun. Konstruk %(1j.[%j].)berarti menunjukkan jumlah pekerjaan latar belakang saat ini dalam tanda kurung.

Keith
sumber