Здійснення підказки оболонки Linux показує останнє повернене значення


12

Зараз я перебуваю на машині Linux, і підказки оболонки показують мені останнє повернене значення та кількість виконаних команд (малюнок включений, із цими номерами, показаними фіолетовим кольором).

На моєму власному комп’ютері цього немає, як це можна налаштувати?
Я використовую Xubunto, якщо потрібно більше деталей, дайте мені знати - я не дуже користувач Linux (я не знаю, що тут актуально).

приклад


Це занадто розпливчасто, щоб відповісти. Які ці команди ви виконуєте? Який у вас комп'ютер (ОС), якого немає?
Кріс Тінг

Я говорив, що моя ОС - це Xubuntu, і це не пов'язано з будь-якою конкретною командою, це просто щось, що завжди проявляється.
Еран

Відповіді:


10

Здається, bashце стандартна оболонка Xubuntu .

Відредагуйте .bashrcабо .bash_profile(залежно від конфігурації вашої системи) та шукайте рядок, починаючи з PS1=. Цей рядок задає ваш запит .

Щоб додати зворотне значення останньої команди, додайте до цього рядка наступне:

`echo -n $?`

так це виглядає, наприклад, наступним чином (мій поточний запит, спрощений):

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

Це буде виглядати приблизно так, з _курсором:

danielbeck in ~ (0)
 -> $ _

Крім того, ви можете використовувати змінну середовища, PROMPT_COMMANDщоб додати код повернення до вашого запиту:

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

Це додасть, наприклад, (0)безпосередньо перед вашим інакше не зміненим запитом.


Ви отримуєте "лічильник", додавши \#у своє запит: це номер команди . Більш корисним може бути номер історії , який не починається з 1, але дозволяє виконувати будь-яку команду, ввівши знак оклику, а потім номер історії команди:

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

Після додаткової гри:

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

Це покаже лише повернене значення, якщо воно не є нульовим, у власному рядку. Номер команди та номер історії знаходяться в одному рядку з командою, яку ви збираєтеся ввести:

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

5

Змінна $?містить код виходу для останньої програми запуску.

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

Я думаю, ви можете отримати "кількість виконаних команд", використовуючи інкремент

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

Тоді вам потрібно буде змінити змінну PS1 / PS2 у вашому .bashrc, щоб змінити підказку. Це здається гідним посібником (за винятком випадків, коли він рекомендує змінювати / etc / bashrc, я б просто зробив ~ / .bashrc).


1
Дякую, я спробую пізніше, коли я буду за власним комп'ютером і побачу, як це відбувається.
Еран

1

FYI, якщо ви використовуєте zsh, це ще простіше. Ця конструкція: %(?..%F{red}%?%f)означає показати останні помилки команд рівнем червоного кольору, якщо він не дорівнює нулю (нормально), але якщо це нормально, не показуйте нічого. Засіб конструкції %(1j.[%j].)показує поточну кількість фонових завдань у квадратних дужках.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.