2010-03-09 3 views
7

Ich habe diese Zeilen kürzlich zu meiner ~/.bashrc Datei hinzugefügt, um den aktuellen Zweig anzuzeigen, wenn ich in einem Git Arbeitsordner bin, und es funktioniert gut für Das. Was ich jedoch verloren habe, ist, dass der aktuelle Ordnername in der Registerkarte für das Terminal angezeigt wurde, das ich geöffnet habe, und jetzt ist es nicht: es sagt immer nur "Terminal". Kann ich das zurückbekommen und das Zeug behalten? Hier sind die fraglichen Zeilen - es ist das zweite Problem, da das Auskommentieren nur durch die zweite Zeile behoben wird.Bash PS1-Einstellungen - wie bekomme ich den aktuellen Ordner als den Terminaltitel zurück

Ich habe Erklärungen der Optionen für PS1 untersucht, kann aber nichts über den Titel des Terminalfensters sehen. Kann jemand beraten? Dank, max

EDIT

I PS1 tatsächlich manipulieren bereits um

in einer anderen Farbe mit jedem Teil

<rvm version and gemset> <computer name> <current folder> <git branch>

, ein Terminal mit dem Format zu haben, aber ich habe nie wirklich habe die docs schon mal gesehen, danke für den link dazu. Meine aktuelle PS1 Einstellung ist

\[\033[0;31m\]$(__my_rvm_ruby_version)\[\033[0;33m\]\h\[\033[0;37m\]:\[\033[1;33m\]\W\[\033[1;32m\]$(__git_branch)\[\033[1;32m\]$(__git_dirty) \[\033[0;37m\]$ 

Vermutlich ich, ohne zu verlieren meine vorhandenen Einstellungen so etwas wie

export "<something> $PS1" 

tun kann, um meine Endanschlussstreifen Namen gesetzt. Ich habe damit herumgestochert und es nicht geschafft.

EDIT - herausgefunden mit Hilfe von einigen der Antworten unten - vielen Dank! Ich wickelte es in einem Shell-Skript bis

#!/usr/bin/env bash 
#renames the current terminal tab via the PS1 env var 
source ~/.bashrc 
export PS1="$PS1""\[\e]0;$1 \a\]" 

es heißt „renametab“, so kann ich es jetzt nennt mit zB

source renametab mytabname 

„Quelle“ ist erforderlich, um die Änderungen in den aktuell Shell zu exportieren: wenn Ich mache nur renametab mytabname der Export geht nur in eine Subshell, die getötet wird, wenn das Skript beendet ist.

Nochmals vielen Dank, für die Hilfe!

Antwort

4

Das ist, was ich als Standard auf meinem Ubuntu haben über den Titel des Terminal:

PS1='\[\e]0;\[email protected]\h: \w\a\]' 

Prepend Ihre PS1 mit diesem und es sollte

+0

Perfekt, danke Romuald! –

+0

Dies ist, was ich getan habe, um meine aktuellen PS1-Einstellungen zu verlieren: 'foo' sollte durch den tatsächlichen Wert ersetzt werden. 'export PS1 =" $ PS1 "'\ [\ e] 0; foo \ a \]' ' –

5

Sie können in Ordnung sein versuchen:

PS1="$PS1"'\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ ' 

Aber es würde helfen zu wissen, was PS1 früher in ~/.bashrc oder in /etc/bash.bashrc eingestellt wird.

+0

Das funktioniert wunderbar - ich liebe den Verweis auf die vorhandene Variable! Mit meinem .bashrc musste ich das '\ h: \ w' fallen lassen, um überflüssige Einträge zu entfernen:' PS1 = "$ PS1" '$ (__ git_ps1 "\ [\ e [32m \] [% s] \ [\ e [0m \ "" $ – sage

0

Eine andere Möglichkeit, dies zu tun ist, verwenden Sie PROMPT_COMMAND und lassen Sie PS1 nur die Eingabeaufforderung sein. Zum Beispiel:

PROMPT_COMMAND = 'echo-ne "\ 033] 0; $ {USER} @ $ {HOSTNAME %%.*}: $ {PWD/# $ HOME/~} "; echo -ne "\ 007"‘

0

Ich benutze diese:

PROMPT_COMMAND='echo -ne "\033]0;${PWD/$HOME/~} - ${USER}@${HOSTNAME}\007"' 

, die in einem Fenstertitel wie folgt ergibt:

/home/tkirk - [email protected] 
0

für die truelly hilflos (wie ich). Hier ist meine Bash RC, die git branch Name in der Eingabeaufforderung enthält und setzt den Fenstertitel. Beachten Sie dies die PROMPT_COMMAND für __git_ps1 verwendet, die PS1 intern setzt. Wenn auf diese Weise mit __git_ps1 es benötigt 2 Argumente Das erste Argument ist die Zeichenkette vor dem Zweignamen, das zweite Argument ist die Zeichenkette nach dem Kleie ch Name.

# 
# ~/.bashrc 
# 

# If not running interactively, don't do anything 
[[ $- != *i* ]] && return 

source ~/git/contrib/completion/git-prompt.sh 

alias ls='ls --color=auto' 
alias cd..='cd ..' 

c_reset='\[\e[0m\]' 
c_prompt='\[\e[1;31m\]' 
c_path='\[\e[0;33m\]' 

if [ -f ~/git/contrib/completion/git-prompt.sh ]; then 
. ~/git/contrib/completion/git-prompt.sh 
GIT_PS1_SHOWDIRTYSTATE=true 
GIT_PS1_SHOWCOLORHINTS=true 
GIT_PS1_UNTRACKEDFILES=true 
# Below, The section "\[\e]0;\w\a\]" sets the window title 
PROMPT_COMMAND="__git_ps1 '${c_path}\w${c_reset}' '\n\[email protected]\t${c_prompt}-->${c_reset}\[\e]0;\w\a\]' " 
fi 

#PS1 is set by the __git_ps1 script above, so comment out below 
#PS1='\w\n[\[email protected]\t]$>' 
2

Wenn Sie Glück haben, Ihr Terminal ist XTerm kompatibel, und Sie können die ANSI-Sequenzen verwenden, um Terminal-Titelsatz.

Anstatt Ihnen die Sequenz zu geben, werde ich Sie auf die documentation zeigen. Jetzt können Sie Ihre Eingabeaufforderung kolorieren. Die Reihenfolge, die Sie benötigen, wird als xterm title hack beschrieben, was es ist.

Sie können auch die Steuersequenzen in der Eingabeaufforderung verwenden, um PS1 festzulegen. Diese finden Sie in der BASH-Manpage unter PROMPTING.

Und hier ist es, was ich in meinem .bashrc haben:

PS1="\e]0;BASH: \[email protected]\h\aBASH \v: \[email protected]\h:\w\n\$ " 
  • \e]0;BASH: \[email protected]\h\a - Set Fenstertitel
    • \e] - Senden Sie ESC-Zeichen durch geschlossene linke Klammer gefolgt. Dies ist der Beginn einer ANSI-Befehlsfolge.
    • 0; - Null gefolgt von einem Semikolon. Die folgende Zeichenfolge setzt den Titel
    • BASH: \[email protected]\h\ - My Window Title
      • \u - Benutzername
      • @ - Das @ -Zeichen
      • \h - Hostname
    • \a - Der BEL (Cnrl- G) die meinen Titel beendet
  • BASH \v: \[email protected]\h:\w\n\$ - Setzt meine Eingabeaufforderung
    • BASH \v: - Die Zeichenfolge BASH gefolgt von der Version. Mein Standard-Shell ist Ksh, so, wenn ich die bash-Shell verwende, möchte ich das Wort BASH in meiner prompt
    • \u sehen - Der Benutzername
    • \h-
    • \w Der Hostname - Der aktuelle Arbeitsverzeichnis (HOME basiert)
    • \n - Neue Zeile - Meine Eingabeaufforderung ist zwei Zeilen. Auf diese Weise belegen lange Verzeichnisse nicht den Befehlszeilenbereich.
    • \$ - Dollarzeichen oder #, wenn Sie Root-Berechtigungen haben.

rumspielen und Spaß haben. Probieren Sie die verschiedenen Escape-Sequenzen aus. Fügen Sie Farbe hinzu. Betten Sie das GIT-Zeug ein. Erkunden.

Denken Sie daran, es ist nur ein Computer. Das Schlimmste, was Sie tun können, ist, dass das ganze System zusammenbricht und all Ihre wertvolle Arbeit löscht, Ihren Job verliert und zu einem hoffnungslosen Paria wird, dessen einziges Einkommen darin besteht, Kunden zu fragen, ob sie Pommes wollen. Es sei denn, Sie arbeiten in einer Bank. Dann können Sie auch die gesamte Weltwirtschaft zum Einsturz bringen.

+0

Ich wusste nicht, dass ich mein Leben so gründlich durch die PS1 var zerstören könnte! ;-) Danke für den Link zu den Docs, und um nicht zu sagen "rtfm noob lol". Bitte beachten Sie die Bearbeitung in meinem OP - Danke! –

Verwandte Themen