web-dev-qa-db-fra.com

Définir le script de script

Est-il possible de définir ce que vous voulez comme script?

Vous êtes dans le pays qui vous intéresse, principalementctrl+Ashift-ANamename__enter

Nous nous sommes procurés de temps en temps comme exemple, en tant que script numérique dans un script, sans plus.

47
Beerweasle

Vous pouvez définir le titre de screen/xterm à l’aide des lignes suivantes: 

#!/bin/bash

mytitle="Some title"
echo -e '\033k'$mytitle'\033\\'

[MISE À JOUR] - sur demande, j'inclus également la solution proposée par @Espo ci-dessous:

Selon votre version de xterm ou votre distribution linux, la ligne ci-dessus peut ne pas fonctionner et vous pouvez essayer les paramètres par défaut de xterm:

#!/bin/bash

mytitle="Some title"
echo -e '\033]2;'$mytitle'\007'

Pour plus d'informations, voir: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 ou reportez-vous à la réponse de @Espo ci-dessous.

46
Shirkrin

De http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

séquences d'échappement xterm

Les titres des fenêtres et des icônes peuvent être modifiés dans un xterm en cours d’exécution en utilisant XTerm Séquences d'échappement. Le suivant les séquences sont utiles à cet égard:

  • ESC]0;stringBEL - Définit le nom de l'icône et le titre de la fenêtre sur chaîne
  • ESC]1;stringBEL - Définir le nom de l'icône en chaîne
  • ESC]2;stringBEL - Définit le titre de la fenêtre en chaîne

où ESC est le caractère d'échappement (\ 033), et BEL est le caractère de cloche (\ 007).

Imprimer une de ces séquences dans le xterm provoquera la fenêtre ou titre de l'icône à changer.

Remarque: ces séquences s’appliquent à la plupart des les dérivés xterm, tels que nxterm, color-xterm et rxvt. Autre terminal les types utilisent souvent des évasions différentes; voir l'annexe pour des exemples. Pour le liste complète des séquences d'échappement xterm voir le fichier ctlseq2.txt, qui vient avec la distribution xterm, ou xterm.seq, qui vient avec le rxvt Distribution.

Imprimer les séquences d'échappement

Pour une information constante tout au long de la vie de cette coquille, tels que l'hôte et le nom d'utilisateur, ce sera il suffit de faire simplement écho à l'évasion chaîne dans le fichier rc du shell:

    echo -n "\033]0;${USER}@${Host}\007"

devrait produire un titre comme nom_utilisateur @ nom_hôte, en supposant que le shell les variables $ USER et $ Host sont définies correctement. Les options requises pour L'écho peut varier selon Shell (voir les exemples .__ ci-dessous).

Pour des informations susceptibles de changer au cours de la durée de vie du shell, telle que le courant répertoire de travail, ces échappées vraiment besoin d'être appliqué à chaque fois l'invite change. De cette façon, le La chaîne est mise à jour avec chaque commande vous émettez et pouvez suivre informations telles que le travail en cours répertoire, nom d'utilisateur, nom d'hôte, etc. Certains obus offrent des fonctions spéciales à cette fin, certains ne le font pas et nous doivent insérer les séquences de titre directement dans la chaîne d'invite. Ce est illustré dans la section suivante.

19
Espo

Vous trouverez ci-dessous d'autres moyens de créer un script pour renommer les titres d'écran:

L'ajout des paramètres suivants à .ssh/config définit automatiquement le titre de l'écran lors de la connexion à un système à l'aide de SSH:

Host *
  PermitLocalCommand yes
  LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\" 

Au lieu de %h, qui représente le nom d'hôte de la machine avec laquelle vous vous connectez, vous pouvez utiliser %n, qui est le nom/alias réel que vous avez utilisé pour vous connecter à la machine.

REMARQUE: OpenSSH> = v5.1 est nécessaire pour pouvoir utiliser les paramètres Localhost% n et% h. Consultez 'man ssh_config' pour plus d'informations sur LocalCommand.

Pour revenir automatiquement au titre, en revenant à celui du nom d'hôte de l'hôte local, après la fermeture de la session SSH, vous pouvez ajouter une séquence d'échappement à votre variable d'invite PS1 dans .bashrc:

export PS1='you_favorite_PS1_here'
if [ "$TERM" == 'screen' ]; then
    export PS1=${PS1}'\[\033k\h\033\\\]'
fi

Ces astuces sont particulièrement utiles lorsque vous utilisez une config .screenrc qui vous indique dans quel "onglet" d'écran vous travaillez actuellement. Ajoutez quelque chose comme ce qui suit à .screenrc pour que cela fonctionne:

caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"
11
Johnny Halfmoon

Essayez les commandes ci-dessous, nul besoin de modifier un fichier ou une configuration telle que ~/.bashrc, peut être utilisé à l'exécution.

Définir le texte statique comme titre: (Mon titre)

export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Définir la variable locale/globale comme titre: ($ USER)

export PS1='\[\e]0;$USER\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Définit le résultat de la commande sous le titre: (nomhôte)

export PS1='\[\e]0;`hostname`\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Définir par défaut (Revenir en arrière):

export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
10
Seff
set_screen_title ()
{
    echo -ne "\ek$1\e\\"
}
7
Randy Proctor

Vous pouvez également appeler screen et lui dire de définir un titre:

screen -X title "new title"

Si vous êtes dans une fenêtre d'écran, le nom de cette fenêtre sera défini. Si vous n'êtes pas à l'écran, le nom de la dernière fenêtre ouverte sera défini.

3
idbrii

Pour ajouter à la réponse d'Espo, les séquences d'échappement xterm peuvent également être appliquées à la variable Bash PS1

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

Exemple

PS1='\e]0;string\a'
2
Steven Penny

Pour activer la mise à jour automatique des titres lorsque vous parcourez ssh, ajoutez ceci à ~/.bashrc:

ssh() {
  echo -n -e "\033k$1\033\\"
  /usr/bin/ssh "$@"
  echo -n -e "\033k`hostname -s`\033\\"
}
echo -n -e "\033k`hostname -s`\033\\"

Voir http://linuxepiphany.blogspot.com.ar/2010/05/good-screenrc-config-setup.html

1
mijhael3000

Vous avez déjà choisi d’expérimenter des expériences, comme cela est arrivé @ flurin-arner eu comecei o @ weston-ganger set-title () . Vous aussi utilisez @ imgx64 Prompt_DIRTRIM sugestão. Nous sommes également habitués à @itseranga invite de branche , embora isso não tenha nada est une question à propos de laquelle vous demanderez le plus de temps possible.

Prix ​​des billets pour Weston et Acima

 TITLE="\[\e]2;$*\a\]"

cliquez ici pour afficher le mode d'emploi du terminal, "$ *" dans le journal des commandes, sans plus attendre.

Cliquez ici pour lire la suite, vous pouvez également cliquer sur le lien indiqué pour obtenir une réponse rapide, mais vous ne verrez jamais ce qu'il se passe ici.

export Prompt_DIRTRIM=3
parse_git_branch() {
       git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
     }

export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "

3º, por experiência copiei o código TITRE acima, coloquei o $ * em uma string fixa e tentei isso:

see: \[\e]2;'SomeTitleString'\a\]

export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\]\[\e]2;'SomeTitleString'\a\] $ "

Je vous souhaite également un cadeau! Dernière mise à jour sur la base de données française. PS1 Params La plupart des joueurs\u0026quot; base de la solution de rechange:

export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\]\[\e]2;\W\a\] $ "

sem o ramo git:

export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\[\033[00m\]\[\e]2;\W\a\] $ "

resultando em um Invite com git-branch:

user@Host ~/.../StudyJava (master) $  

resultando em um Invite sem parse_git_branch:

   user@Host ~/.../StudyJava $  

onde pwd dá

/home/user/somedir1/otherdir2/StudyJava

e título do terminal

StudyJava

NOTA: De @seff acima eu estous essencialmente substituant le "Meu Título" au "\ W"

export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
0
mancocapac
 # add the following in your ~/.bashrc or ~/.bash_profile
 Prompt_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

ou même mieux, copiez le concept entier pour personnaliser vos configurations bash entre de nombreux hôtes de ici

0
Yordan Georgiev

Ma solution à ce problème consistait à créer un script bash et à l'ajouter à mon fichier ~/.bashrc:

set-title() {
  ORIG==$PS1
  TITLE="\e];$@\a"
  PS1=${ORIG}${TITLE}
}

Maintenant, lorsque je suis dans une session bash Shell, je tape "set-title desire_title" et il devient "titre désiré" . Cela fonctionne pour plusieurs versions d'Ubuntu, actuellement sur Kinetic 16.04.

J'ai eu cette solution de ici . Je le cherchais encore, je ne pouvais pas le trouver et je pensais le poster ici pour tous les intéressés. 

0
Flurin Arner