GNU/Linux >> Znalost Linux >  >> Linux

Proč se Ctrl + V nevloží do Bash (Linux shell)?

V dobách fyzických terminálů neexistovaly schránky pro celou relaci, jen málo programů podporovalo interní kopírování/vkládání – často pod názvem „buffery“ nebo „kill rings“ – a používaly různé různé stisky kláves. Například bash shell používá Ctrl K nebo Ctrl U pro "zabití" (cut), Ctrl Y "trhnout" (vložit); pochází z emacs editor.

Ctrl C téměř všude v Unixu byla klávesa „přerušení“, používaná ke zrušení aktuálního programu nebo operace. Klávesa Ctrl V klíč často znamenal „doslovné vložení“ – to znamená doslova vložit následující znak bez provedení jakékoli související akce. Například normální Esc přepne do příkazového režimu v vi editor, ale Ctrl V , Esc vloží ESC znak do dokumentu.

Použití Ctrl C kopírovat a Ctrl V vložit ze schránky celé relace byl představen Mac OS v roce 1983 a Microsoft Windows 3.x v roce 1990. (Starší verze Windows (1.xa 2.x), stejně jako IBM OS/2, podporovaly pouze IBM CUA klávesy Ctrl Ins pro kopírování a Shift Ins vložit; tyto zkratky zůstávají podporovány všemi verzemi Windows.)

Když GUI s podporou schránky konečně dosáhla Unixu, Ctrl stisky kláves již používalo mnoho terminálových programů. Kromě toho mělo grafické rozhraní X poněkud odlišné mechanismy:„výběry“ a „vyříznutí vyrovnávacích pamětí“. Dokonce i nyní můžete vybrat text v jednom programu a vložit jej pomocí prostředního tlačítka myši, bez jakékoli explicitní akce kopírování.

Stručně řečeno, v době, kdy byly napsány Xterm a GNOME Terminal (hádám, že používáte druhý), Ctrl V již měl po mnoho let zcela jiný význam a nebylo možné jej změnit. Kromě toho byla v X11 již přítomna alternativní metoda kopírování textu – „výběr“, takže explicitní akce kopírování/vkládání pravděpodobně nebyla považována za tak důležitou, jako by byla ve Windows. To znamená, že bylo nutné vybrat různé klávesové zkratky – například většina moderních terminálových programů, jako je terminál GNOME, používá Ctrl Shift C a Ctrl Shift V . (Pokud používáte Xterm, stejné zkratky lze přidat ručně pomocí XTerm*vt100*překladů Xresource. Rxvt takovou možnost nemá.)

(Většina X11 toolkit také podporuje CUA klávesy "copy" a "paste", které nejsou v konfliktu s terminálovými programy. Bohužel implementace jsou značně nekonzistentní – Ctrl Ins kopie do "schránky" ve většině programů (GTK, Qt4, ale ignorovány Xaw); nicméně Shift Ins vloží z "primárního výběru" ve většině programů GTK a Qt4, ale ze "schránky" ve Firefoxu a z dnes již zastaralých cut-bufferů v dnes již zastaralém Xaw.)

Vše, co bylo řečeno, některé terminály nebo konzole (zejména konzole Windows 10) dělají podporovat tyto klíče. Protože konzole Windows měla vždy samostatný režim "označit/vybrat", Ctrl C nyní má také dva významy založené na kontextu – v běžném režimu posílá přerušení, v režimu select se zkopíruje do schránky (stejně jako Enter zvyklý).

Mezitím nástroje příkazového řádku systému Windows nikdy nepoužívaly Ctrl V pro cokoliv, takže se to muselo „vložit“, aniž by cokoli narušilo. Dělat totéž na unixových terminálech by však bylo problematičtější.


Použijte Ctrl Shift V pro vložení.

Ctrl s jinými znaky je obvykle používán shellem pro speciální funkce.


Zde jsou vaše obecná nastavení kopírování a vkládání s oblíbenými terminály:

gnome-terminál (nejoblíbenější v systému Linux)
Kopírovat :Ctrl Shift C
Vložit :Ctrl Shift V
Poznámka :Vyberte pro kopírování a klikněte prostředním tlačítkem vložit také funguje, ale používá alternativní schránku.

PuTTY (nejoblíbenější terminál ve Windows)
Kopírovat :(vyberte myší, bez interakce s klávesnicí)
Vložit :Klikněte pravým tlačítkem (nebo spolehlivěji:shift Klikněte pravým tlačítkem )
Poznámka :Aplikace, které využívají vstup myší (například vim a links ) může ukrást Kliknout pravým tlačítkem -- posun Klikněte pravým tlačítkem bude vždy fungovat v jakékoli aplikaci.

Terminál OSX
Kopírovat :Apple C
Vložit :Apple V
Poznámka: Aplikace, které ovládají myš (například vim a links ) může přepsat to, co znamená vybrat text, v takovém případě nebude kopírování fungovat tak, jak očekáváte. V těchto případech podržte Control při výběru tažením myši. Interakce myši s aplikacemi je ve výchozím nastavení vašeho terminálu zakázána, takže o tom většina lidí ani neví.


Linux
  1. Linux – Proč Setuid nefunguje?

  2. Proč Regex v Bash funguje pouze v případě, že je proměnnou a ne přímo?

  3. 6 Operátorů řetězení příkazového řádku Bash Shell v Linuxu

  1. Proč se [a-z] shoduje s malými písmeny v bash?

  2. Proč spouštět příkaz prostředí Linux s '&'?

  3. Proč Linux zahřívá můj počítač?

  1. Jak Bash ví, jak je vyvoláván?

  2. Linux – Proč detekce USB Stick trvá tak dlouho?

  3. Pochopení proměnných v Bash Shell pod Linuxem