web-dev-qa-db-fra.com

Comment sélectionner et copier le contenu du terminal (ATL + CTRL + F1)

Lorsque vous vous trouvez dans le "terminal de niveau inférieur" (vous ne savez pas comment cela s'appelle), celui qui est ouvert en appuyant sur Ctrl + Alt + F1, comment puis-je copier le contenu de la commande que j’ai utilisée, puisqu’il n’ya pas de souris et que je ne peux pas déplacer mon curseur pour la ligne de commande?

4
silkAdmin

Vous pouvez simplement rediriger la sortie vers un fichier avec > ou &>... On m'a demandé de le déplacer de commentaires en réponses, alors le voici.

A propos, quelques notes:

Le fait de placer > entre une commande et un nom de fichier écrasera le contenu actuel du fichier avec la sortie standard.

Mettre >> est ajouté à un fichier.

Placer un & avant le redirecteur interceptera également l'erreur standard (dans Bash> 4).

9
RobotHumans

Le dernier historique de commande utilisé est généralement stocké dans votre fichier historique (.bash_history). Vous pouvez ouvrir ce fichier avec l'éditeur de votre choix et copier le contenu.

En ce qui concerne la manipulation de la ligne de commande de la fenêtre de la console, vous pouvez compter sur les fonctions d’édition de ligne de commande du bash Shell. Ils sont décrits dans la section READLINE de la page de manuel de Bash (man bash). Mais ils ne vous permettront pas de coller la partie copiée dans un éditeur.

Une autre façon de contourner ce problème consiste à utiliser l'utilitaire d'écran . Il existe plusieurs présentations tutoriels sur le Web. L’écran a une fonction copier-coller:

  1. Presse CTRL+A ensuite ESC entrer en mode copie.
  2. En déplaçant les touches du curseur, vous pouvez positionner le premier caractère de la région sélectionnée, puis appuyer sur Space. Vous avez maintenant défini la première marque.
  3. Déplacez le curseur à la fin du texte que vous souhaitez sélectionner et appuyez sur Space. Vous avez maintenant copié la région sélectionnée dans la mémoire tampon.
  4. Pour coller le tampon, appuyez sur CTRL+A puis ].
5
lgarzo

Pour envoyer la sortie d'une commande dans un fichier, vous pouvez utiliser redirection.

Par exemple, vous pouvez envoyer votre commande dmesg dans un fichier avec

dmesg > ~/Documents/output.txt

Ensuite, la sortie va écrire dans ce fichier au lieu de l’écran. Lorsque vous revenez à l'interface graphique, vous pouvez trouver le fichier dans votre dossier Documents et accéder au contenu.

4
Kris Harper

Il y a plusieurs façons de contourner ce problème. Le plus simple est avec xclip et j'ai sauvegardé pour le dernier.

la réponse de hbdgaf présente une solution: la redirection. Voici deux variantes du thème - redirection avec tube nommé et byobu. Premièrement, aucune installation de logiciel supplémentaire n’est requise, alors que byobu doit être installé.

Option 1: tube nommé

Lorsque vous exécutez une commande et utilisez le pipeline | pour rediriger sa sortie vers une autre commande, appelée canal anonyme - elle existe pour un moment donné. Le canal nommé, en revanche, est un type de fichier spécial dans lequel les données entrent, puis sortent.

Voici les étapes pour le faire fonctionner:

  1. créer le canal nommé avec mkfifo /tmp/myPipe

  2. exécutez la commande souhaitée et redirigez le résultat vers /tmp/myPipe. Par exemple, Sudo apt-get install byobu > /tmp/myPipe. Notez que la commande attendra jusqu'à ce que vous libériez la sortie de myPipe. Utilisez & pour le faire attendre en arrière-plan et laissez-vous continuer à utiliser le terminal, comme si Sudo apt-get install byobu > /tmp/myPipe &. Notez également que stdout ira dans le tuyau, mais que stderr ira à l'écran. Si vous voulez à la fois stderr et stdout dans le tube, utilisez &> au lieu de >

    1. revenez à l'interface graphique et libérez la sortie de ce canal avec cat /tmp/myPipe. Vous pouvez maintenant copier le résultat avec la souris et le clavier.

Option 2: session partagée en byobu

En ce qui concerne byobu, l’idée de base est de créer une session partagée. Vous lancez Byobu dans les terminaux ATS et GUI, et vous voyez la même sortie ici et là. Je suggèrerais de lancer TTY en premier, car de cette façon, c'est plus propre. Alors disons que je lance Byobu dans TTY2, que je lance df;free, que je vais à l'interface graphique, que je lance gnome-terminal, puis que j'appelle byobu, et le tour est joué - je vois le même résultat que j'ai vu dans TTY!

Option 3: xclip, le moyen le plus simple

Supposons que je veuille copier le résultat de la commande df. Tout ce que j'ai à faire avec xclip est la suivante:

$ export DISPLAY=:0 ; df | xclip -sel clip

Et ce sera déjà dans votre presse-papiers graphique!

Il y a cependant une petite erreur: xclip n'est pas une application native, et doit être installé via Sudo apt-get install xclip

Bien sûr, la saisie de tous ces éléments peut être répétitive, vous pouvez donc créer une fonction .bashrc pour effectuer le travail. Copiez et collez simplement la fonction ci-dessous dans votre fichier .bashrc, sauvegardez-le et maintenant, chaque fois que vous vous connectez, vous disposez d'une commande simple pour copier le résultat dans le presse-papier

function toClipboard
{
  export DISPLAY=:0
  "$@" | xclip -sel clip

}

Et vous l'exécuteriez comme $ toClipboard df -h, alors remarquez que vous pouvez exécuter une commande avec des paramètres.

Option 4: script

Il existe une commande appelée script qui a exactement cet objectif - enregistrez ce que vous voyez en ligne de commande dans un fichier. Vous pouvez soit l'exécuter en premier, puis taper la sortie dans son shell, puis quitter; ou vous pouvez appeler l'écran avec le drapeau --command, comme si script --command "df -h"

Cependant, il y a un inconvénient: le fichier de sortie peut contenir des caractères spéciaux. Cliquez ici pour savoir comment nettoyer la sortie

Option 5:/dev/vcsX

Comme montré par Giles du site U & L, on peut réellement vider le contenu de tty sur la sortie standard d'un autre terminal. Supposons que nous voulions vider tty2. La commande pour cela est

 cat /dev/vcs1

Cette méthode a pour inconvénient que si votre terminal est défini sur un certain niveau de lignes de défilement, vous ne pouvez obtenir qu’une sortie partielle.

3
Sudo apt-get install gpm

GPM est exactement ce dont vous avez besoin et très utile. Dans la console (ctrl+alt+f1), vous pouvez copy en faisant glisser le bouton gauche de la souris, puis paste en cliquant sur le bouton droit de la souris.

3
Pad