Hur man kopierar och klistrar in text på Linuxs Bash Shell

Vill du kopiera och klistra in på kommandoraden i Bash-skalet? Vi kommer att visa dig flera tekniker oavsett om du föredrar tangentbordet eller musen. Dessa fungerar oavsett om du är vid ett grafiskt skrivbord eller vid en traditionell textbaserad TTY.

De vanliga tangentbordsgenvägarna fungerar inte

Att kopiera och klistra in text är en viktig del av att använda en dator. När människor använder en Linux-dator för de första gångerna, oavsett om de kommer från Windows- eller macOS-världen, blir de ofta förvirrade när de försöker kopiera och klistra in i ett terminalfönster.

I Windows använder du Ctrl+C för att kopiera en del av markerad text och Ctrl+V för att klistra in den. I macOS använder du Kommando+C för att kopiera det och Kommando+V för att klistra in det. De följer samma konvention med C för att kopiera och V för att infoga.

Samma tangenttryckningar fungerar i de flesta Linux-grafiska applikationer, som editorn gedit eller den LibreOffice office suite.Ctrl+C kopierar markerad text och Ctrl+V klistrar in den vid markören. Vår nykomling till Linux tänker förmodligen inte ens på det faktum att dessa konventioner har genomförts till dessa applikationer. De använder knapptryckningarna från muskelminnet och fortsätter med sitt arbete.

När vår nykomling öppnar ett terminalfönster och försöker kopiera och klistra in på Bash skal kommandotolken, att alla ändras. Ctrl+C och Ctrl+V tilldelades funktioner långt innan man tänkte på att kopiera och klistra in. Faktum är att dessa tangenttryckningar rekryterades lång tid innan grafiska skal uppfanns, när en teletyp (TTY) var en fysisk sak.

Ctrl+C och Ctrl+V i TTY

När en TTY var en fysisk enhet, valdes Ctrl+C som en praktisk tangentkombination för att generera en signal. Den signalen är SIGINT, som talar om för den aktuella processen att avslutas. Eftersom ett terminalfönster är en emulerad TTY, har den tangentkombinationen (och många andra) bevarats och replikerats i emuleringen. Observera att det är terminalfönstret som är emuleringen. Bash-skalet är ett program som körs i den emulerade TTY.

Vi kan enkelt se de funktioner som har tilldelats Ctrl+C och Ctrl+V. Anta att du skriver följande kommando och trycker på ”Enter”.

ls -R /

Eftersom vi använder alternativet -R (rekursivt) kommer kommandot ls att börja lista alla filer och kataloger, med start från rotkatalogen. Efter ett par ögonblick inser du att detta inte är vad du ville, så du avslutar processen genom att trycka på Ctrl+C.

Ctrl+C

ls-processen avslutas. Det synliga beviset för Ctrl+C är markerat i skärmdumpen. Det visas som ^C.

Tangentkombinationen Ctrl+V anropar ”ordrätt infoga.” Detta gör att du kan ange en representation av en nyckel i det du skriver, istället för att få effekten av nyckeln. För att se detta, prova följande kommandon (skriv inte kommatecken). (Om du till exempel vill prova den första trycker du på Ctrl+V och sedan på Enter.)

Ctrl+V, Enter
Ctrl+V, PgDn
Ctrl+V, RightArrow
Ctrl+V, Esc

Som en snabb sida kanske du märker att Enter representeras av ^M . Vi såg tidigare att Ctrl+C visades som ^C. Det verkar som att ^ representerar Ctrl. Så Ctrl+M betyder förmodligen detsamma som Enter. Betyder det att vi kan ange Enter genom att skriva Ctrl+M? Prova det i ett terminalfönster. Du kommer att se att det gör det.

Så vi kan uppenbarligen inte förvänta oss att Ctrl+C och Ctrl+V ska utföra kopiering och inklistring av text när de redan har hävdvunna funktioner tilldelade dem. Så vad kan vi använda?

Ctrl+Skift+C och Ctrl+Skift+V

Lätt att komma ihåg eftersom de är väldigt lika sina motsvarigheter, Ctrl+Skift+C och Ctrl+Skift+V är direkta ersättningar för Ctrl+C och Ctrl+V.

Om du markerar text i terminalfönstret med musen och trycker på Ctrl+Skift+C så kopierar du den texten till en urklippsbuffert.

Ctrl+Shift+C

Du kan använda Ctrl+Skift+V för att klistra in den kopierade texten i samma terminalfönster eller i ett annat terminalfönster.

Ctrl+Shift+V

Du kan också klistra in i ett grafiskt program som gedit. Men observera att när du klistrar in i ett program – och inte i ett terminalfönster – måste du använda Ctrl+V.

Och du kan gå åt andra hållet också. Du kan markera text i gedit och trycka på Ctrl+C och sedan klistra in den i ett terminalfönster med Ctrl+Skift+V.

Tangentkombinationen Ctrl+Infoga är densamma som Ctrl+Skift+C och kombinationen Skift+Infoga är densamma som Ctrl+Skift+V. Förbehållet här är att dessa endast kan användas inom samma terminalfönster.

Använda musen: Högerklicka

Du kan använda musen för att kopiera och klistra in i ett terminalfönster. Du måste använda musen för att markera texten du ska kopiera, så varför inte använda den för att kopiera och klistra in?

När du har markerat lite text högerklickar du med musen och väljer ”Kopiera” från snabbmenyn.

För att klistra in den kopierade texten, högerklicka med musen en gång till och välj ”Klistra in” från snabbmenyn.

Texten klistras in vid markörens position på kommandoraden. I det här exemplet har den relativa sökvägen angetts felaktigt, och Bash kan inte ändra katalog. Användaren missade ”~/” från början av sökvägen. De har skrivit ”~/” och sedan kopierat resten av sökvägen från deras tidigare försök och klistrat in den på sin andra kommandorad.

När de trycker på Enter flyttas de till katalogen.

Det här exemplet visade att klistra in i samma terminalfönster, men du kan använda den här högerklickstekniken för att klistra in i olika terminalfönster. Du kan också klistra in i grafiska applikationer med den här metoden.

Använda musen: Mittknappen

Det finns ett ännu snabbare sätt att kopiera och klistra in med hjälp av musen, så länge musen har en mittknapp. Om du trycker ner ditt scrollhjul (försiktigt!) och det klickar, har du en mittknapp.

Markera lite text i ett terminalfönster och tryck sedan på mittknappen. Den markerade texten klistras in på markörpositionen på kommandoraden. Kopiering och inklistring sker samtidigt.

Så, markera lite text:

Tryck sedan på mittknappen:

Du kan använda den här metoden för att klistra in mellan olika terminalfönster och även i grafiska applikationer. Markera bara texten, flytta till det andra terminalfönstret eller programmet och tryck på mittknappen.

Old School – Ingen mus

Vad händer när du inte har en mus? Om du inte kan markera någon text, hur kan du kopiera och klistra in den?

Linux-servrar är ofta konfigurerade utan en grafisk skrivbordsmiljö (GDE), vilket innebär att du inte har tillgång till en mus. Även på en Linux-dator som kör en grafisk skrivbordsmiljö som GNOME och du har en mus, kommer det att finnas tillfällen då du inte kan använda musen för att markera text.

Till exempel kan du ha bytt till en av de ytterligare TTY:erna. På moderna distributioner finns dessa från Ctrl+Alt+F3 (TTY3) till Ctrl+Alt+F6 (TTY6). (Ctrl+Alt+F2 tar dig tillbaka till din GDE-session och Ctrl+Alt+F1 tar dig till inloggningsskärmen för din GDE.)

Kanske använder du till och med en äkta hårdvaru-TTY-enhet för att ansluta till en Linux- eller Unix-dator.

Hur som helst kommer dessa tekniker att fungera för dig. Poängen att komma ihåg här är att det här inte är kopiera och klistra, det klipps ut, kopieras och klistras in, och du kan bara klippa ut och kopiera från den aktuella kommandoraden. Naturligtvis kan du använda piltangenterna för att bläddra igenom din historik för att hitta kommandoraden du vill klippa ut, kopiera och klistra från.

De tangenttryckningar du kan använda är:

Ctrl+W: Klipp ut ordet före markören och lägg till det i urklippsbufferten.
Ctrl+K: Klipp ut delen av linjen efter markören och lägg till den i urklippsbufferten. Om markören är i början av raden kommer den att klippa ut och kopiera hela raden.
Ctrl+U: Klipp ut delen av linjen före markören och lägg till den i urklippsbufferten. Om markören är i slutet av raden kommer den att klippa ut och kopiera hela raden.
Ctrl+Y: Klistra in den senaste texten som klipptes ut och kopierades.

Låt oss hoppa över till TTY3. (Använd Ctrl+Alt+F1 för att komma tillbaka till skrivbordet efteråt.)

Ctrl+Alt+F3
tty

Vi har en fil som vi vill ta bort, låt oss kontrollera att den finns här.

ls -l file_to_delete.txt

Om vi ​​använder upp-piltangenten anropar vi det senaste kommandot vi använde från kommandohistoriken. Vi skulle bara kunna redigera den här raden, men syftet är att demonstrera klippning, kopiering och inklistring, så vi kommer att utföra vår uppgift att ta bort filen på ett lite utdraget sätt.

Vi flyttar markören till den första bokstaven i filnamnet och trycker sedan på Ctrl+K. Detta tar bort den delen av raden och kopierar texten till urklippsbufferten.

Vi trycker på Backsteg tills vi rensar linjen.

Vi skriver in rm för att radera filen.

Och nu kan vi trycka på Ctrl+Y och klistra in resten av raden.

Detta slutför vårt kommando och vi kan trycka på Enter för att få filen raderad.

Den här typen av klipp, kopiera och klistra kan inte användas mellan de ytterligare TTY:erna. Du kan till exempel inte klippa ut, kopiera och klistra in mellan TTY3 och TTY4.

De ytterligare TTY:erna ses bäst som en rad fysiska TTY:er som sitter sida vid sida. Det finns inget sätt att klippa och klistra mellan de olika fysiska terminalerna, och det finns inget sätt att göra det i dessa emuleringar.

Kopiera det, kontroll

Oavsett vilken situation du befinner dig i när du använder en Linux-dator, kommer det att finnas ett sätt att kopiera och klistra in. Du har alternativ. Vissa av dem är konstiga alternativ, men det finns åtminstone alternativ.