Möchten Sie die Skript-Shell endgültig verwenden?
Eu pensei em algo como enviar os comandos principaisctrl+Ashift-AName
name__enter
Eu procurei por cerca de uma hora sobre como emular as teclas digitadas em um script Shell, mas não foundrei a resposta.
Sie können den Bildschirm-/Xterm-Titel mithilfe der folgenden Zeilen festlegen:
#!/bin/bash
mytitle="Some title"
echo -e '\033k'$mytitle'\033\\'
[UPDATE] - auf Anfrage füge ich auch die von @Espo vorgeschlagene Lösung hinzu:
Abhängig von Ihrer Xterm-Version oder Ihrer Linux-Distribution funktioniert die obige Zeile möglicherweise nicht und Sie können die Xterm-Defaults ausprobieren:
#!/bin/bash
mytitle="Some title"
echo -e '\033]2;'$mytitle'\007'
Weitere Informationen zu den Details finden Sie unter: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 .
Von http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3
xterm-Escape-Sequenzen
Fenster- und Symboltitel können geändert werden in einem laufenden xterm mit XTerm Fluchtsequenzen. Folgende Sequenzen sind in dieser Hinsicht nützlich:
ESC]0;stringBEL
- Setzen Sie den Symbolnamen und den Fenstertitel auf stringESC]1;stringBEL
- Setzen Sie den Symbolnamen auf stringESC]2;stringBEL
- Fenstertitel auf Zeichenfolge setzendabei ist ESC das Escape-Zeichen (\ 033) und BEL ist das Glockenzeichen (\ 007).
Drucken einer dieser Sequenzen innerhalb von das xterm verursacht das Fenster oder Symboltitel, der geändert werden soll.
Hinweis: Diese Sequenzen gelten für die meisten xterm-Ableitungen, wie nxterm, color-xterm und rxvt. Anderes Terminal Typen verwenden oft unterschiedliche Fluchten; sehen der Anhang für Beispiele. Für die vollständige Liste der xterm-Escape-Sequenzen siehe die Datei ctlseq2.txt. mit der Xterm-Distribution oder xterm.seq, das im Lieferumfang von rxvt .__ enthalten ist. Verteilung.
Escape-Sequenzen drucken
Für Informationen, die konstant sind während der gesamten Lebensdauer dieser Shell, wie Host und Benutzername, wird es es genügt, um die Flucht einfach zu wiederholen Zeichenfolge in der Shell-RC-Datei:
echo -n "\033]0;${USER}@${Host}\007"
sollte einen Titel wie .__ erzeugen. Benutzername @ Hostname, unter der Annahme der Shell Die Variablen $ USER und $ Host werden gesetzt korrekt. Die erforderlichen Optionen für Das Echo kann je nach Shell variieren (siehe Beispiele unten).
Für Informationen, die sich während .__ ändern können. die Lebensdauer der Shell, z. B. aktuell Arbeitsverzeichnis, entgeht diese müssen wirklich jedes Mal angewendet werden Die Aufforderung ändert sich. Auf diese Weise die String wird mit jedem Befehl aktualisiert Sie geben aus und können .__ verfolgen. Informationen wie aktuelles Arbeiten Verzeichnis, Benutzername, Hostname, etc . Einige Shells bieten spezielle Funktionen einige tun dies nicht und wir müssen die Titelsequenzen einfügen direkt in die Eingabeaufforderung. Diese wird im nächsten Abschnitt veranschaulicht.
Folgende Möglichkeiten stehen zur Verfügung, um das Umbenennen von Bildschirmtiteln per Skript durchzuführen:
Durch Hinzufügen der folgenden Einstellungen zu .ssh/config
wird der Bildschirmtitel beim Anmelden an einem System mithilfe von SSH automatisch festgelegt:
Host *
PermitLocalCommand yes
LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\"
Anstelle von %h
, der den Hostnamen des Computers darstellt, mit dem Sie eine Verbindung herstellen, können Sie %n
verwenden. Dies ist der tatsächliche Name/Alias, mit dem Sie eine Verbindung zum Computer herstellen.
HINWEIS: Sie benötigen OpenSSH> = v5.1, um die Localhost-Parameter% n und% h verwenden zu können. Unter 'man ssh_config' finden Sie weitere Informationen zu LocalCommand.
Um den Titel automatisch auf den Hostnamen des localhost zurückzusetzen, können Sie nach dem Schließen der SSH-Sitzung Ihrer Eingabeaufforderungsvariablen PS1
in .bashrc
eine Escape-Sequenz hinzufügen.
export PS1='you_favorite_PS1_here'
if [ "$TERM" == 'screen' ]; then
export PS1=${PS1}'\[\033k\h\033\\\]'
fi
Diese Tricks sind besonders nützlich, wenn Sie eine .screenrc
config verwenden, die Ihnen zeigt, auf welcher Bildschirmseite Sie gerade arbeiten. Fügen Sie .screenrc
etwas wie das Folgende hinzu, damit das funktioniert:
caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"
Führen Sie die folgenden Befehle aus. Sie müssen keine Datei oder Konfiguration wie ~/.bashrc bearbeiten. Kann zur Laufzeit verwendet werden.
Festlegen von statischem Text als Titel: (Mein Titel)
export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
Lokale/globale Variable als Titel setzen: ($ USER)
export PS1='\[\e]0;$USER\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
Befehlsausgabe als Titel setzen: (Hostname)
export PS1='\[\e]0;`hostname`\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
Auf Standard setzen (Zurücksetzen):
export PS1='\[\e]0;\[email protected]\h: \w\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
set_screen_title ()
{
echo -ne "\ek$1\e\\"
}
Sie können auch den Bildschirm aufrufen und ihm mitteilen, einen Titel festzulegen:
screen -X title "new title"
Wenn Sie sich in einem Bildschirmfenster befinden, wird der Name dieses Fensters festgelegt. Wenn Sie sich nicht im Bildschirm befinden, wird der Name des zuletzt geöffneten Fensters festgelegt.
Um Espos Antwort hinzuzufügen, können die Xterm-Escape-Sequenzen auch auf die Bash-Variable PS1
angewendet werden
ESC]0;stringBEL -- Set icon name and window title to string
ESC]1;stringBEL -- Set icon name to string
ESC]2;stringBEL -- Set window title to string
Beispiel
PS1='\e]0;string\a'
Um die automatische Titelaktualisierung beim Springen mit ssh zu aktivieren, fügen Sie Folgendes zu ~/.bashrc
hinzu:
ssh() {
echo -n -e "\033k$1\033\\"
/usr/bin/ssh "[email protected]"
echo -n -e "\033k`hostname -s`\033\\"
}
echo -n -e "\033k`hostname -s`\033\\"
Siehe http://linuxepiphany.blogspot.com.ar/2010/05/good-screenrc-config-setup.html
Eu tenho essa solução de experimentar com os outros, como @ flurin-arner und comecei o @ weston-ganger set-title () . Eu também usei @ imgx64 Prompt_DIRTRIM sugestão. Eu também estou usando o @itseranga git branch Prompt , Embora ist ein Tool, mit dem Sie Fragen und Antworten zur Eingabeaufforderung beantworten können.
Primeiro como mostrado por weston e acima
TITLE="\[\e]2;$*\a\]"
hier können Sie die endgültige Bedienungsanleitung für das Terminal, "$ *" und die Eingabe des Kommandos sowie weitere Informationen eingeben.
2º, como declarado, também estou adicionando o git branch u.
export Prompt_DIRTRIM=3
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
3º, por experiência copiei o código TITLE acima, coloquei o $ * em string fixa e tentei isso:
see: \[\e]2;'SomeTitleString'\a\]
export PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\]\[\e]2;'SomeTitleString'\a\] $ "
Isso teve o efeito desejado! Finalmente, eu queria o caminho base como meu título. PS1 Params Hier können Sie die Basis mit den folgenden Lösungsoptionen auswählen:
export PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\]\[\e]2;\W\a\] $ "
sem o ramo git:
export PS1="\[email protected]\h \[\033[32m\]\w\[\033[33m\]\[\033[00m\]\[\e]2;\W\a\] $ "
resultando em um Prompt com git-branch:
[email protected] ~/.../StudyJava (master) $
resultando em um Prompt sem parse_git_branch:
[email protected] ~/.../StudyJava $
onde pwd dá
/home/user/somedir1/otherdir2/StudyJava
e título do terminal
StudyJava
NOTA: De @seff acima eu estou esscialmente substitindo o "Meu Título" por "\ W"
export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$ '
# add the following in your ~/.bashrc or ~/.bash_profile
Prompt_COMMAND='printf "\033]0;%[email protected]%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
oder noch besser das gesamte Konzept zum Anpassen Ihrer bash-Konfigurationen zwischen vielen Hosts von hier kopieren
Meine Lösung für dieses Problem bestand darin, ein Bash-Skript zu erstellen und es meiner ~/.bashrc-Datei hinzuzufügen:
set-title() {
ORIG==$PS1
TITLE="\e];[email protected]\a"
PS1=${ORIG}${TITLE}
}
Wenn ich mich jetzt in einer bash-Shell-Sitzung befinde, tippe ich "set-title wanted_title" ein und ändert sich in "gewünschter Titel". Dies funktioniert für mehrere Versionen von Ubuntu, derzeit auf Kinetic 16.04
Ich habe diese Lösung von hier bekommen. Ich suchte es wieder, konnte es nicht finden und dachte, ich würde es hier für alle Interessierten posten.