Frage

Ich weiß, dass ich einen date Befehl in meinem zsh Prompt exec kann. Aber es zeigt die alt Zeit; die aktuelle Zeit, um zu sehen, ich habe <return> zu treffen und eine neue Abfrage mit der aktuellen Zeit.

Gibt es eine Möglichkeit, die zsh Aufforderung zu konfigurieren ständig selbst jede Sekunde zu aktualisieren?

War es hilfreich?

Lösung

Dies wäre .... unangenehm in einem Standard-zsh Aufforderung (oder bash oder anderen Schalen).

Ich schlage vor, Sie besser seien aus Gnu Bildschirm.

Der Bildschirm kann eine Statuszeile hat, die die Zeit zeigen. Hier ist ein Beispiel screenrc nach unten scrollen zu „Red Hat Magazine Ein Leitfaden für GNU Screen“ zu sehen die Probe (ich werde das hier reproduzieren) ein, wenn der Bildschirm ausgeführt wird, in der unteren rechten Ecke des Terminals die aktuelle Uhrzeit:

~ / .screenrc

hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'

# Default screens
screen -t shell1        0
screen -t shell2        1

http://www.gnu.org/software/screen/

Andere Tipps

Hinweis: Ich schrieb diese Antwort für eine ähnliche Frage , aber zu sehen, wie diese Frage, die ich denke, reposting hier wäre meine Antwort mehr Ansichten hat nützlich sein.

Dies ist in der Tat möglich, ohne auf fremde Hacks greifen zu müssen. Ich habe dies habe in meinem .zshrc

RPROMPT='[%D{%L:%M:%S %p}]'

TMOUT=1

TRAPALRM() {
    zle reset-prompt
}

Die TRAPALRM Funktion wird alle TMOUT Sekunden (in diesem Fall 1) genannt, und hier führt es eine schnelle Auffrischung, und zwar bis eine Befehlsausführung beginnt (und es stört nicht alles, was Sie, bevor man an der Eingabeaufforderung eingeben eingeben).

Quelle: http://www.zsh.org/mla/users/ 2007 / msg00944.html (es ist von 2007!)

klingt wie eine gute Anfrage zu mir. Wenn alles, was es mehr Sinn, als die Zeit zeigt, macht, wenn die Eingabeaufforderung angezeigt wurde.

Zum Glück Peter Stephenson geschrieben, eine Technik . Versuchen Sie so etwas wie dies in .zshrc:

PROMPT="[%T] %n@%M %~ %# "

schedprompt() {
  emulate -L zsh
  zmodload -i zsh/sched

  # Remove existing event, so that multiple calls to
  # "schedprompt" work OK.  (You could put one in precmd to push
  # the timer 30 seconds into the future, for example.)
  integer i=${"${(@)zsh_scheduled_events#*:*:}"[(I)schedprompt]}
  (( i )) && sched -$i

  # Test that zle is running before calling the widget (recommended
  # to avoid error messages).
  # Otherwise it updates on entry to zle, so there's no loss.
  zle && zle reset-prompt

  # This ensures we're not too far off the start of the minute
  sched +30 schedprompt
}

schedprompt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top