Bash und Multiline PS1


2

\ n in PS1 funktioniert einwandfrei, aber wenn Sie versuchen, einen Befehl einzugeben, der mehr als eine Zeile benötigt, geben Sie die zweite Zeile über der ersten ein, und wenn Sie den Teil eines solchen Befehls bearbeiten möchten, der normalerweise in der oberen Zeile stehen soll, wird die Der Cursor bewegt sich auf die darüber liegende Zeile. Gibt es ein Heilmittel dafür, oder wurde die Borowski-Shell einfach nicht für PS1 mit Newlines geboren?

$ bash --version
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ bind -v
set bind-tty-special-chars on
set blink-matching-paren on
set byte-oriented off
set completion-ignore-case off
set completion-map-case off
set convert-meta off
set disable-completion off
set echo-control-characters on
set enable-keypad off
set enable-meta-key on
set expand-tilde off
set history-preserve-point off
set horizontal-scroll-mode off
set input-meta on
set mark-directories on
set mark-modified-lines off
set mark-symlinked-directories on
set match-hidden-files on
set menu-complete-display-prefix off
set meta-flag on
set output-meta on
set page-completions on
set prefer-visible-bell on
set print-completions-horizontally off
set revert-all-at-newline off
set show-all-if-ambiguous off
set show-all-if-unmodified off
set skip-completed-text off
set visible-stats off
set bell-style audible
set comment-begin #
set completion-display-width -1
set completion-prefix-display-length 0
set completion-query-items 100
set editing-mode emacs
set history-size 500
set keymap emacs

Die geänderte Eingabeaufforderung:

PS1="\[\033[01;34m\]\w\n\
\[\033[01;37m\]\]\
\`if [ \u != $LOGIN_NAME ]; then
    echo -n '\u'
fi\`\
\[\033[01;32m\]\
@\
\`if [ '\h' = '$MY_MACHINE' ]; then
    echo -n 'home'
else 
    echo -n '\h'
fi\`\
 \$ \[\033[00m\] "

powershell_ise... Umschalt + Eingabetaste?
STTR

1
Bash 4.2.24 (unter Ubuntu 12.04) funktioniert gut mit einer mehrzeiligen PS1. Können Sie die Ausgabe von bash --versionund posten bind -v?
Jaume

1
@STTR Ich benutze native Bash in native Umgebung
Tijagi

1
Haben Sie darüber nachgedacht, das meiste davon in $PROMPT_COMMANDAngriff zu nehmen ?
Daniel Beck

1
Die zweite Zeile von Ihnen PS1scheint \]am Ende ein Extra zu haben .
Chepner

Antworten:


2

Die Eingabeaufforderungszeichenfolge enthielt ein zusätzliches "]", das sich auf die Anzeige auswirkte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.