Powodowanie, że monit powłoki Linuksa wyświetla ostatnią zwracaną wartość


12

Obecnie pracuję na komputerze z systemem Linux, a monit powłoki pokazuje mi ostatnią zwracaną wartość i liczbę wykonanych poleceń (wraz z obrazem, z liczbami pokazanymi na fioletowo).

Mój komputer tego nie ma, jak mogę to skonfigurować?
Używam Xubunto, jeśli potrzebujesz więcej szczegółów, daj mi znać - nie jestem zbytnio użytkownikiem Linuksa (nie wiem, co jest tutaj istotne).

przykład


Jest to zbyt niejasne, aby odpowiedzieć. Jakie są te polecenia, które wykonujesz? Jaki komputer (OS) nie ma tego?
— Chris Ting

Powiedziałem, że mój system operacyjny to Xubuntu i nie jest to związane z żadnym konkretnym poleceniem, to po prostu coś, co zawsze się wyświetla.
— Eran

Odpowiedzi:


10

Wygląda na bashto, że jest domyślną powłoką Xubuntu .

Edytuj .bashrclub .bash_profile(w zależności od konfiguracji systemu) i poszukaj linii zaczynającej się od PS1=. Ta linia ustawia monit .

Aby dodać wartość zwracaną ostatniego polecenia, dodaj do tego wiersza:

`echo -n $?`

więc wygląda to tak jak poniżej (mój aktualny monit, uproszczony):

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

Będzie wyglądać tak, _będąc kursorem:

danielbeck in ~ (0)
 -> $ _

Alternatywnie możesz użyć zmiennej środowiskowej, PROMPT_COMMANDaby wstawić kod powrotu do pytania:

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

Spowoduje to dodanie np. (0)Tuż przed twoim niezmodyfikowanym monitem.


Otrzymujesz „licznik”, dodając \#do pytania: to numer polecenia . Bardziej przydatny może być numer historii , który nie zaczyna się od 1, ale pozwala wykonać dowolne polecenie, wprowadzając wykrzyknik, a następnie numer historii polecenia:

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

Po dodatkowej grze:

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

To pokaże wartość zwracaną tylko wtedy, gdy jest niezerowa, we własnej linii. Numer polecenia i numer historii znajdują się w tym samym wierszu, co polecenie, które zamierzasz wprowadzić:

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

5

Zmienna $?zawiera kod wyjścia dla ostatniego uruchomionego programu.

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

Myślę, że można uzyskać „liczbę wykonanych poleceń” za pomocą inkrementatora

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

Następnie musisz zmodyfikować zmienną PS1 / PS2 w .bashrc, aby zmienić monit. To wydaje się być porządnym przewodnikiem (oprócz tego, że zaleca modyfikację / etc / bashrc, po prostu zrobiłbym ~ / .bashrc).


1
Dzięki, spróbuję później, kiedy będę na własnym komputerze i zobaczę, jak to będzie.
— Eran

1

Do Twojej wiadomości, jeśli używasz Zsh, jest to jeszcze łatwiejsze. Ta konstrukcja: %(?..%F{red}%?%f)oznacza, że ​​poziom błędów ostatnich poleceń jest wyświetlany na czerwono, jeśli nie jest zero (normalny), ale jeśli jest normalny, nic nie pokazuje. Środki konstrukcyjne %(1j.[%j].)pokazują bieżącą liczbę zadań w tle w nawiasach kwadratowych.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.