Bash: Comment puis-je obtenir la commande de l'histoire dans une session screen?
Si je commence une session écran avec screen -dmS name
, comment pourrais-je accéder à l'historique des commandes de l'écran session avec un script?
À l'aide de la ↑, la dernière commande exécutée apparaît, même dans l'écran.
OriginalL'auteur hexacyanide | 2013-02-16
Vous devez vous connecter pour publier un commentaire.
screen
ne pas conserver un historique des commandes que vous tapez. Votre environnement peut ou peut ne pas conserver un historique. Puisque vous semblent utiliserbash
, vous pouvez utiliser lehistory
commande.screen
ne semblent avoir qu'une grossière approximation de la recherche dans l'historique (il se contente de recherche dans le tampon pour une ligne de commande. Voir lascreen
homme page, sous "historique de commande" (lié àC-a {
par défaut).OriginalL'auteur chepner
J'utilise par défaut le shell bash, sur mon système, et donc peut ne pas fonctionner avec d'autres coquillages.
c'est ce que j'ai dans mon
~/.screenrc
fichier, de sorte que chaque nouvelle fenêtre de l'écran dispose de sa propre commande de l'histoire:Écran Par Défaut De Windows Avec L'Historique Des Commandes
Pour ouvrir un ensemble d'écran par défaut de windows, chacun avec leur propre commande de l'histoire de fichiers, vous pouvez ajouter le texte suivant à la
~/.screenrc
fichier:S'Assurer Que Les Nouveaux Windows Obtenir Leur Propre Commande De L'Histoire De
La valeur par défaut des paramètres de l'écran signifie que vous créez une nouvelle fenêtre à l'aide
Ctrl+a c
ouCtrl+a Ctrl+c
. Cependant, avec le ci-dessus dans votre~/.screenrc
de fichiers, ceux-ci vont utiliser la valeur par défaut~/.bash_history
fichier. Pour résoudre ce problème, nous allons remplacer les raccourcis pour la création de nouvelles fenêtres. Ajoutez ceci à votre~/.screenrc
fichier:Maintenant, chaque fois que vous créez une nouvelle fenêtre de l'écran, c'est en fait le lancement d'un shell (bash), réglage de la
HISTFILE
variable d'environnement à quelque chose qui inclut l'actuel écran de la fenêtre de nombre ($WINDOW
).De l'historique des commandes les fichiers seront partagés entre les sessions écran avec la même fenêtre numéros.
Les Commandes d'écriture pour
$HISTFILE
sur l'ExécutionComme il est normal bash comportement, l'histoire n'est écrite à la
$HISTFILE
fichier à la sortie de l'enveloppe et de la fenêtre de l'écran. Toutefois, si vous souhaitez des commandes écrites de l'histoire de fichiers après l'exécution de la commande, et donc disponibles immédiatement pour d'autres sessions écran avec le même nombre de fenêtre, vous pouvez ajouter quelque chose comme ceci à votre~/.bashrc
fichier:HISTSIZE
etc ne semblent pas coller si vous les intégrer dans lescreen
commande ci-dessus.OriginalL'auteur Nathan S. Watson-Haigh
Lorsque vous
exit
un terminal (ou shell) de la coquille écrit son histoire à $HISTFILE, de sorte à obtenir de son histoire dans un autre terminal, vous pouvez taperexit
dans le terminal que vous voulez l'histoire de la et elle sera écrite.exit
?Autant que je sache, jusqu'puis il est stocké dans la mémoire jusqu'à $HISTSIZE lignes, lorsqu'il écrit, il conserve l'historique du fichier à $HISTFILESIZE lignes max
J'ai oublié
shopt -s histappend
voir:unix.stackexchange.com/questions/6501/...OriginalL'auteur technosaurus
@technosaurus est droit. $HISTFILE est écrit lorsque bash sorties, vous pouvez donc la sortie de l'un bash session, et en commencer une nouvelle, et l'histoire doit avoir été préservée à travers le fichier.
Mais je pense qu'il y a une meilleure façon de résoudre votre problème. Le bash manuel comprend une description de la l'histoire de commande intégrée. Il vous permet de sauvegarder cette histoire avec
history -w [filename]
et de lire l'histoire avechistory -r [filename]
. Si vous ne fournissez pas un nom de fichier, il utilise $HISTFILE.Donc, je voudrais vous proposer d'enregistrer l'histoire à l'intérieur de votre écran de session dans un fichier spécifique (ou par défaut de votre $HISTFILE si vous le souhaitez). Puis lire le fichier de l'historique dans l'autre bash session à laquelle vous souhaitez accéder à l'historique de. De cette façon, vous n'avez pas à quitter l'origine bash session.
OriginalL'auteur RaveTheTadpole
utiliser ceci:
écran -L
avec un L majuscule
il va stocker une copie de la borne d'entrée et de sortie pour un fichier nommé screenlog.0
ou si vous utilisez-S à un nom, le fichier de journalisation est le nom de l'écran
OriginalL'auteur mehrdad
J'ai mis les lignes suivantes dans mon .bashrc:
Mon défaut .bashrc a cette "affaire" pour l'essentiel avec 'xterm*|rxvt*)' valeur, donc j'ai ajouté mon "écran" est partie en elle. Si vous n'avez pas cette "affaire", vous pouvez utiliser la prochaine au lieu de:
Et après j'ai un propre bash_history pour toutes les fenêtres de mon écran.
Note: ceci fonctionne pas dans le chroot!
OriginalL'auteur Regisz
history
montre tout l'historique de commande.OriginalL'auteur Yap Kai Lun Leon