GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi Ctrl + V ne colle-t-il pas dans Bash (shell Linux) ?

À l'époque des terminaux physiques, les presse-papiers à l'échelle de la session n'existaient pas, seuls quelques programmes prenaient en charge le copier / coller interne - souvent sous le nom de «tampons» ou «anneaux de destruction» - et utilisaient diverses frappes différentes. Par exemple, le bash le shell utilise Ctrl K ou Ctrl U pour "tuer" (couper), Ctrl Oui "tirer" (coller); cela vient de emacs éditeur.

Ctrl C presque partout dans Unix se trouvait la touche "interruption", utilisée pour annuler le programme ou l'opération en cours. Le Ctrl V key signifiait souvent "insérer textuellement" - c'est-à-dire insérer littéralement le caractère suivant sans effectuer aucune action associée. Par exemple, un Esc normal passe en mode commande dans le vi éditeur, mais Ctrl V , Échap insèrera le ESC caractère dans le document.

L'utilisation de Ctrl C pour copier et Ctrl V coller à partir du presse-papiers à l'échelle de la session a été introduit par Mac OS en 1983 et Microsoft Windows 3.x en 1990. (Les versions antérieures de Windows (1.x et 2.x), ainsi qu'IBM OS / 2, ne prenaient en charge que l'IBM CUA touches Ctrl Ins pour copier et Maj Ins coller; ces raccourcis restent pris en charge par toutes les versions de Windows.)

Lorsque les interfaces graphiques prenant en charge le presse-papiers ont finalement atteint Unix, le Ctrl les touches étaient déjà utilisées par de nombreux programmes de terminaux. De plus, l'interface graphique de X avait des mécanismes quelque peu différents :"sélections" et "coupe les tampons". Même maintenant, vous pouvez sélectionner du texte dans un programme et l'insérer à l'aide du bouton central de la souris, sans aucune action de copie explicite.

En bref, au moment où Xterm et GNOME Terminal ont été écrits (je suppose que vous utilisez ce dernier), Ctrl V avait déjà un sens complètement différent pendant de nombreuses années et ne pouvait pas être changé. De plus, une méthode alternative de copie de texte - la "sélection" - était déjà présente dans X11, donc l'action de copier/coller explicite était probablement considérée comme moins importante qu'elle le serait dans Windows. Cela signifie que différents raccourcis clavier ont dû être sélectionnés - par exemple, la plupart des programmes de terminal modernes, comme GNOME Terminal, utilisent Ctrl Maj C et Ctrl Maj V . (Si vous utilisez Xterm, les mêmes raccourcis peuvent être ajoutés manuellement en utilisant les XTerm*vt100*translations Xressource. Rxvt n'a pas une telle option.)

(La plupart des boîtes à outils X11 prennent également en charge les touches CUA "copier" et "coller", qui n'entrent pas en conflit avec les programmes de terminal. Malheureusement, les implémentations sont plutôt incohérentes - Ctrl Ins copie dans le "presse-papiers" dans la plupart des programmes (GTK, Qt4, mais ignoré par Xaw) ; cependant, Maj Ins colle depuis la "sélection principale" dans la plupart des programmes GTK et Qt4, mais depuis le "presse-papiers" dans Firefox, et depuis les tampons de coupe désormais obsolètes dans le Xaw désormais obsolète.)

Cela dit, certains terminaux ou consoles (notamment la console Windows 10) font prendre en charge ces clés. Comme la console Windows a toujours eu un mode "marquer/sélectionner" séparé, Ctrl C a maintenant également deux significations basées sur le contexte - en mode normal, il envoie une interruption, en mode sélection, il copie dans le presse-papiers (tout comme Entrée l'habitude).

Pendant ce temps, les outils de ligne de commande Windows ne sont jamais vraiment utilisés Ctrl V pour rien, donc c'était obligé de "coller" sans trop déranger quoi que ce soit. Faire la même chose sur des terminaux de type Unix serait cependant plus problématique.


Utilisez Ctrl Maj V pour coller.

Ctrl avec d'autres caractères est généralement utilisé par le shell pour des fonctions spéciales.


Voici vos paramètres de copier-coller à usage général avec les terminaux populaires :

gnome-terminal (le plus populaire sous Linux)
Copier :Ctrl Maj C
Coller :Ctrl Maj V
Remarque  :Sélectionner pour copier et clic central coller fonctionne également, mais il utilise un autre presse-papiers.

PuTTY (terminal le plus populaire sous Windows)
Copier :(sélectionner avec la souris, pas d'interaction avec le clavier)
Coller  :Clic droit (ou plus sûrement :shift Clic droit )
Remarque  :Applications qui acceptent les entrées de la souris (comme vim et links ) peut voler Clic droit -- décalage Clic droit fonctionnera toujours dans n'importe quelle application.

Terminal OSX
Copier :Pomme C
Coller :Pomme V
Remarque : Applications qui prennent le contrôle de la souris (comme vim et links ) peut remplacer ce que signifie sélectionner du texte, auquel cas la copie ne fonctionnera pas comme prévu. Dans ces cas, maintenez enfoncé Control pendant que vous faites glisser la souris pour sélectionner. L'interaction de la souris avec les applications est désactivée par défaut dans les paramètres de votre terminal, donc la plupart des gens ne le sauront même pas.


Linux
  1. Pourquoi [a-z] correspond-il aux lettres minuscules dans Bash ?

  2. Comment Bash sait-il comment il est invoqué ?

  3. Linux – Pourquoi faut-il autant de temps pour détecter une clé USB ?

  4. Pourquoi le Regex dans Bash ne fonctionne-t-il que s'il s'agit d'une variable et pas directement ? ?

  5. Comprendre les variables dans Bash Shell sous Linux

Comment utiliser la commande Declare dans Linux Bash Shell

Comment installer Linux Bash Shell sur Windows 10

Script Shell/Bash pour trouver des nombres premiers sous Linux

Comment utiliser Linux Bash Shell dans Windows 10 ?

Pourquoi exécuter une commande shell Linux avec '&' ?

Pourquoi Linux chauffe-t-il mon ordinateur ?