Windows.  Virus.  Anteckningsböcker.  Internet.  kontor.  Verktyg.  Förare

161 Jane Doh

Jag förstår att Upp/Ner ger dig kommandohistorik. Men hur ser du på tidigare resultat genom att scrolla upp och ner?

Jag har använt Shift + Page Up / Page Down , Alt + Shift + Up / Down och Page Up / Page Down , men ingen av dessa verkar fungera.

Detta är Redhat Linux box.

linux terminal rhel

14 svar

SHIFT + Page Up och SHIFT + Page Down . Om det inte fungerar prova detta och då bör det:

Gå till ditt terminalprogram och se till att Redigera/Profilinställningar/Scrollning/Scrollback/Obegränsat
kontrollerade.

Den exakta platsen för detta alternativ kan vara någon annanstans, men jag ser att du använder Redhat.

SHIFT+Page Up och SHIFT+Page Down är de korrekta nycklarna för att fungera på virtuell konsol, men vmware-konsolen har inte de terminalinställningarna. Den virtuella konsolen har en fast scroll back-storlek, det ser ut som att den är begränsad av storleken på videominnet enligt denna virtuella Linux-konsol Rulla dokumentation.

ALTERNATIV FÖR LINJE-TILL-LINE-BEHANDLING

Ctrl + Shift + Upp-pil eller Ned-pil

Till skillnad från Shift + Page Up eller Page Down , som rullar hela sidan, kommer detta att hjälpa till med smidig linjär rullning, vilket är precis vad jag letade efter.

Ett annat alternativ som kanske redan är installerat på ditt system är att använda GNU shield:

# Denna startskärm som lägger till grundläggande fönsterhantering i terminalskärmen # Detta startar kopieringsläget du kan använd för att rulla [ # Använd nu pilarna för att bläddra # För att avsluta kopieringsläget, gör

Se man-skärmen för fler användbara alternativ (flera fönster,...)...

Det verkar inte vara lätt möjligt: ​​Arch Linux Wiki listar inte sätt att göra detta på konsolen (även om det lätt är möjligt på en virtuell terminal).

Ctrl - b , sedan [ , sedan kan du använda vanliga navigeringsknappar för att rulla (som uppåtpil eller PgDn). Tryck på q för att avsluta rullningsläget.

Ämnet för användbara arbetsmetoder i Linux terminal outtömlig. Det verkar som att allt är ordnat väldigt enkelt: en skalprompt och kommandon som matas in från tangentbordet. Men i denna enkelhet ligger en avgrund av icke självklara, men användbara möjligheter. Det är därför vi regelbundet publicerar material om funktionerna i att arbeta i Linux-kommandoraden. I synnerhet kommer det idag att vara en översättning av en artikel vars författare brinner för att spara tid genom att öka produktiviteten.

Om du är intresserad av att arbeta på Linux-kommandoraden - här är några av våra material om detta ämne:

  • [ +114 ] Mest användbara Linux Kommandoradstekniker
  • [ +70 ] 10 Linux-terminaltricks som få människor känner till
  • [+65 ] Förvånansvärt användbart verktyg: lsof
  • [ +32 ] Linux: omdirigering
  • [ +29 ] PDF-version av artiklar om Bash-skript

Linux kommandoradstrick och tidsbesparingar

Har du någonsin sett en kollega använda några enkla Linux-kommandon att lösa problem som tar dig flera linjer att lösa? Det måste vara så att när något sådant här hände var allt du kunde säga till dig själv: "Wow! Jag visste inte att det kunde göras så lätt."

I den här artikeln kommer jag att visa dig några professionella Linux-kommandoradsknep som kommer att spara mycket tid och i vissa fall bli av med dåligt humör. Inte bara det, dina vänner eller kollegor kommer att säga: "Wow, wow!", tittar på dig. Dessa knep hjälper dig också att öka din personliga produktivitet, eftersom du kommer att behöva skriva färre kommandon och till och med göra färre musklick.

Därmed inte sagt att dessa Linux-tips bara är för nybörjare. Det är fullt möjligt att till och med avancerade användare hitta något användbart här som de inte visste om trots att de använt Linux i många år. Linux lärs av erfarenhet. Det är här din egen erfarenhet och andras erfarenheter kommer in i bilden.

Innan vi börjar vill jag notera att några av metoderna som presenteras här beror på konfigurationen av skalet.

0. Automatisk kompletteringskommandon med hjälp av Tab-tangenten

Jag börjar med något väldigt uppenbart, men mycket viktigt: autoslutför kommandon med hjälp av Tab-tangenten.

När du börjar skriva i Linux-terminalen kan du trycka på Tab-tangenten, vilket kommer att få upp en prompt som innehåller en uppsättning alternativ för att fortsätta skriva, med början med tecknen du precis skrev.

Om du till exempel ska kopiera en fil med namnet my_best_file_1.txt , kan du helt enkelt skriva cp m och trycka på Tabb för att se möjliga alternativ kommandofortsättning.


Använda Tab-tangenten för att automatiskt slutföra inmatning

Tabbtangenten kan också användas för att autoslutföra kommandon.

1. Byt till den senaste arbetskatalogen

Föreställ dig att du arbetade i en katalog som inte är så lätt att komma till, och sedan flyttade till en annan katalog på en helt annan plats. Sedan insåg du att du måste gå tillbaka till föregående katalog. I det här fallet använder du bara följande kommando:

CD-
Det gör att du kan vara i den sista arbetskatalogen. Nu, i sådana här situationer, behöver du inte längre ange långa vägar eller använda kopiera och klistra in.


Enkelt att växla mellan kataloger

2. Återgå till hemkatalogen

Detta tillvägagångssätt är också mycket uppenbart. Du kan använda följande kommando för att återgå till din hemkatalog var som helst:

CD~
Du kan dock återgå till din hemkatalog ännu snabbare med kommandot cd.

I de flesta moderna Linux-distributioner är skalet förkonfigurerat för att behandla cd-kommandot på detta sätt. Detta kommer att spara dig ett par tangenttryckningar på ditt tangentbord.


Mest snabb väg byta till hemkatalogen

3. Visar innehållet i en katalog

Du kanske undrar vad som är subtiliteten med att använda ett kommando för att lista innehållet i en katalog. Alla vet att kommandot ls -l tjänar detta syfte.

Men det är hela poängen. Nästan alla använder kommandot ls -l för att lista innehållet i kataloger, medan samma sak kan göras med följande kommando:

Ll
Funktionaliteten för detta kommando beror på Linux-distributionen och på din skalinställning, men det är mycket troligt att du kommer att kunna använda det på de flesta distributioner.


Använder kommandot ll istället för kommandot ls -l

4. Anropa flera kommandon på en rad

Föreställ dig att du behöver utföra flera kommandon i följd. Antagligen anger du ett kommando, väntar på att det ska slutföras och anger sedan nästa?

I en sådan situation kommer en kommandoavgränsare att vara användbar; (semikolon). Med detta tillvägagångssätt kan du ange flera kommandon på samma rad. I det här fallet, till skillnad från den vanliga inmatningen av kommandon, för att utföra nästa kommando, behöver du inte vänta på att det föregående är slutfört.

Kommando_1; kommando_2; kommando_3

5. Utförande av flera kommandon på en rad och ett villkor för framgångsrikt slutförande av föregående kommando

Vi tittade precis på ett sätt att anropa flera kommandon på samma rad. Detta sparar tid. Men vad händer om du vill, säg, när du anropar två kommandon, så att nästa kommando endast utförs om det föregående slutförs utan fel?

Föreställ dig att du vill bygga koden och sedan, om bygget lyckades, ring make ?

I en sådan situation kan du använda avgränsaren && . Denna avgränsare säkerställer att nästa kommando endast kommer att utföras om det föregående lyckas.

Kommando_1 && kommando_2
Här bra exempel använder sig av && :

sudo passande uppdatering&& sudo apt uppgradering

6. Enkel sökning och användning av tidigare inmatade kommandon

Föreställ dig att du för ett par minuter eller ett par timmar sedan skrev in ett långt kommando och du behöver det här kommandot igen. Dessutom är problemet att du inte kan komma ihåg exakt detta kommando.

I en sådan situation kommer en omvänd sökning att rädda dig. Denna teknik låter dig söka efter ett nyckelord i kommandohistoriken. Här räcker det med att använda tangentkombinationen Ctrl + R för att starta en omvänd sökning och ange något relaterat till kommandot. Systemet kommer att titta igenom historiken för kommandon och visa de kommandon som matchar den angivna frågan.

Ctrl+R sökterm
Som standard kommer endast ett resultat att visas. För att se fler resultat som matchar din fråga måste du använda kortkommandot Ctrl + R om och om igen. För att gå ur omvänd sökningsläge, tryck på Ctrl + C .


Omvänd kommandohistoriksökning

Observera att i vissa bash skal Du kan använda knapparna Page Up och Page Down för att bläddra igenom sökresultaten.

7. Låsa upp terminalen efter att av misstag tryckt på Ctrl + S

Du kanske är van vid att använda kortkommandot Ctrl + S för att spara filer. Men om du trycker på dessa tangenter i Linux-terminalen kommer du att låsa den.

Om du tidigare, för att rätta till situationen, var tvungen att stänga och starta om terminalen - nu kan du andas lugnt, du behöver inte göra detta längre. För att få terminalen till ett fungerande läge, använd helt enkelt tangentkombinationen Ctrl + Q .

8. Flytta till början eller slutet av en rad

Föreställ dig att du anger ett långt kommando och någonstans i mitten inser du att du måste ändra något i början av det. Du använder förmodligen piltangenterna för att först flytta till början av raden och sedan tillbaka till slutet.

Naturligtvis, i en sådan situation, kan du använda tangenterna Home och End, men alternativt, med hjälp av tangentkombinationen Ctrl + A, kan du gå till början av raden och använda kombinationen Ctrl + E - till slutet.


Flytta till början eller slutet av en rad

Jag tycker att det här sättet är bekvämare än att använda Home- och End-knapparna, särskilt när jag arbetar på en bärbar dator.

9. Läs loggfiler i realtid

När du behöver analysera loggfiler som ett program som körs skriver till under analysen, kan du använda kommandot tail med alternativet -f.

Tail -f path_to_Log
Alternativt kan du använda kommandot grep i sin normala form för att endast visa de rader du är intresserad av:

Tail -f path_to_log | grep sökterm
Du kan också använda alternativet F här. Detta gör att svansverktyget fortsätter att köras även om loggfilen som visas raderas. Med detta tillvägagångssätt, om den här filen skapas igen, fortsätter tail att skriva ut data från den till skärmen.

10. Läsa komprimerade loggfiler utan att dekomprimera dem

Serverloggar komprimeras vanligtvis med gzip för att spara diskutrymme. Detta kan leda till en del besvär när man analyserar loggar av utvecklare eller systemadministratörer. Du kan behöva använda kommandot scp för att kopiera filen till din lokala katalog och sedan extrahera filen från arkivet för att kunna se den, eftersom du kanske inte har skrivbehörighet till var filen du är intresserad av finns lagrad.

Här kommer vi till hjälp av en grupp kommandon vars namn börjar med bokstaven "z". Dessa kommandon är ett alternativ till de vanliga kommandona som används för att arbeta med loggfiler. Bland dem finns mindre , cat , grep och andra.

Så, med hjälp av kommandona zless , zcat , zgrep och liknande, behöver du inte explicit packa upp komprimerade filer. Detaljer om dessa kommandon kan ses.

Förresten, när jag berättade för en kollega om dessa "hemliga" kommandon fick jag en kopp kaffe.

11. Använd kommandot mindre för att läsa filer

Om du behöver visa en fil, särskilt en stor, kan du prova cat , men det är mycket bättre att leta någon annanstans. Faktum är att katten kommer att visa hela filen på skärmen, vilket inte är så bekvämt.

Du kan använda en redigerare som Vi eller Vim i en terminal för att visa filer, men om du bara behöver läsa en fil kommer det mindre kommandot väl till pass.

Mindre sökväg_till_fil
Under en session med mindre kan du söka efter önskade textfragment genom att nyckelord, navigera genom sidor, mata ut data med radnummer och så vidare.

12. Återanvändning av det sista elementet från föregående kommando med !$

I många situationer är det mycket användbart att kunna använda argumentet från föregående kommando.

Anta att du behöver skapa en katalog och sedan gå till den. Här kan du använda alternativet !$ genom att ange hoppkommandot efter kommandot för att skapa kataloger.


Använd!$ för att använda sista kommandot argument

Ännu bättre, detsamma görs med kortkommandot Alt +. (punkt). Punkten kan användas flera gånger för att iterera över alternativen för det senaste kommandot.

13. Använda det föregående kommandot i det aktuella kommandot med!!

Genom att använda!! du kan anropa hela föregående kommando. Det här tricket är särskilt användbart när du behöver köra ett kommando och det visar sig att du behöver superanvändarprivilegier för att köra det. Till exempel visar bilden nedan en situation där sudo !! gör att du kan spara mycket tid.


Utnyttja!!! för att ersätta det sista kommandot som ett argument

14. Använda alias för att fixa skrivfel

Du kanske redan är bekant med aliaskommandot. Den kan användas för att korrigera fel i inmatade kommandon.

Det kan till exempel hända att du ofta skriver gerp istället för grep . Om du inte kan stoppa den dåliga vanan, lägg till ett alias till din bashrc-fil så här:

Alias ​​​​gerp=grep
Nu behöver du inte skriva om det här kommandot om du anger dess namn felaktigt.

15. Kopiera och klistra in i Linux-terminalen

Detta råd är något tvetydigt eftersom det beror på Linux-distributionen och på terminalen.

Men vanligtvis kan kommandona kopiera och klistra in så här:

  • Markera texten du vill kopiera och klicka Högerklicka mus för att klistra in den (fungerar i Putty och andra SSH-klienter för Windows).
  • Markera texten du vill kopiera och klicka sedan mittknappen mus (rullhjul) för att klistra in den.
  • Använd kortkommandon Ctrl + Skift + C för att kopiera och Ctrl + Skift + V för att klistra in.

16. Avsluta ett team eller en process

Det jag vill tipsa om är kanske ganska självklart, men jag ska berätta om det ändå. Om ett kommando körs i förgrunden och du vill avsluta det, kan du trycka på Ctrl + C för att stoppa det.

17. Använda kommandot yes för att automatisera interaktiva kommandon eller skript

Om du måste arbeta med vissa kommandon eller skript som involverar användarinteraktion, och du vet att du kommer att skriva Y för varje fråga i programmet, kan du automatisera denna process med kommandot yes. Det görs så här:

Ja | kommando_eller_skript

18. Rensa innehållet i en fil utan att ta bort själva filen

Om du vill rensa innehållet textfil utan att ta bort själva filen kan du använda följande kommando:

> filnamn

19. Ta reda på om en katalog innehåller filer som innehåller viss text

Linux-kommandoraden stöder många sätt att hitta information. Men om du bara vill veta om det finns filer i en katalog som innehåller viss text, kan du använda detta kommando:

Grep -Pri Search_Term sökväg_till_katalog
Jag råder dock alla som behöver söka i Linux att förstå ordentligt med hitta kommando.

20. Ringa hjälp för alla kommandon

Jag vill avsluta det här materialet med ett mycket uppenbart, men ändå väldigt viktigt "trick", som är att ringa hjälp för ett kommando eller verktyg kommandorad.

Nästan alla kommandoradsverktyg innehåller bakgrundsinformation, avslöjar funktionerna i deras användning. Vanligtvis hjälper läshjälp dig att förstå grunderna för ett kommando. Du kan ringa hjälp så här:

Command_tool --hjälp

Jag har medvetet inte inkluderat kommandon som fuck i det här materialet, eftersom de inte är sådana standardmedel som finns bokstavligen överallt. Det jag har sagt här kan vara användbart när man arbetar med nästan alla Linux-distributioner och kommandoradsskal utan att behöva installera nya program.
Fri översättning: Alexey Dmitriev
Överlåtelsedatum 19 november 2007

Vi pratar om GNU/Linux-textkonsolen här - inte det som visas i terminalfönstret, eller X-fönsterhanterare, eller skrivbord. Det finns så mycket förvirring om detta att jag måste säga: - "Om du trycker på "Alt-Ctrl-F1" (eller "F2" etc.) i grafikläge, kommer du in i textkonsolen" .

0. Vad handlar det om?

Datorn laddas. Du befinner dig i en textkonsol och ser hur texten rullar ner snabbt. Du vill se en del av denna text som redan har blinkat förbi. Du trycker på "Shift-PgUp" eller "Shift-PgDn", och om du redan har ändrat standardgenvägarna (nej, nej, inte X-tangentbordslayouten), så några andra tangenter. Med dessa tangenter får du texten att flytta upp och ner på skärmen. I det här ögonblicket du använder en rullningsbuffert (låt oss kalla det rullningsbuffert för kort).

När du börjar använda den här bufferten med might och main blir två saker klara mycket snart:
Endast en del av texten som medföljer nedladdningen får returneras.
Filen "/var/log/messages" fångar mycket mindre än vad du ville se.

Du börjar leta runt på webben och snart dyker preliminära resultat upp: inläggen på scrollback i Linux är väldigt gamla och kan spåras tillbaka till tidigt 90-tal. Allt före 2.6.x-kärnan bör dock glömmas bort.

Du bör verkligen vara selektiv i vad du läser: de flesta råd som gäller versioner före 2.6.x kommer sannolikt att förvirra dig och leda dig vilse. Tro mig, jag har slösat bort mycket tid på det här. Scrollback-beteendet definieras i filen "vc.c", en annars liten fil i kärnkällorna, där "vc" står för "virtuell konsol".

Observera att när du byter konsol förloras rullningsbufferten - så hela mängden av denna buffert är tillgänglig i den aktuella konsolen. (Det finns särskilt mycket informationsskräp här från tiden före 2.6.x-kärnan).

Som standard är buffertstorleken 32K. Detta räcker för 4 omvända rullningsknapptryckningar - varje tryck rullar halva skärmen, 25 rader per skärm. Det kommer ut på cirka 50 rader. Och du får inte mer, även om du har 30 eller 50 rader per skärm. Jag måste säga att 50 linjer är en liten bråkdel av vad som flyger över skärmen under lastning. I samband med ovanstående uppstår två frågor:

Hur ökar man rullningsbufferten?

Varför fångar inte loggarna några av meddelandena du såg under nedladdningen?

1. Hur ökar man rullningsbufferten?

Den första lösningen är att öka standardbuffertstorleken (standard) i kärnkällorna och kompilera om den. Låt mig anta att du är lika ovillig att göra detta som jag och letar efter ett mer flexibelt medium.

Och det finns ett sådant verktyg, men det kallas "framebuffer console", för kort "fbcon". Den här enheten har en dokumentationsfil "fbcon.txt"; om du installerade dokumentationen för kärnan, då har du den. Leta efter det någonstans i "/usr/share"-grenen (jag kan inte ge den exakta sökvägen på grund av distributionsskillnader). Du kan alltid ladda ner den som en enda fil.

Vid det här laget ber jag om ursäkt: vi måste avvika lite och prata lite om framebuffern.

Videobufferten är en buffert mellan bildskärmen och videoadaptern. Dess skönhet är att den kan manipuleras: den tillåter knep som inte skulle fungera om adaptern var ansluten direkt till skärmen.

Ett sådant knep är relaterat till rullningsbufferten; visar sig att du kan "be" videobufferten att allokera mer minne till rullningsbufferten. Detta uppnås genom kärnans startparametrar. Först behöver du en framebuffer (videobuffert); Då begär du en större rullningsbuffert.

Följande exempel är för GRUB men kan enkelt anpassas till LILO. I fil GRUB-inställningar- "menu.lst" - hitta raden som motsvarar kärnan, och sedan:
Ta bort alternativet "vga=xxx" om det finns.
Lägg till alternativet "video=vesabf" eller vad som passar din hårdvara.
Lägg till alternativet "fbcon=scrollback:128".
Efter denna procedur bör kärnparameterraden se ut ungefär så här:
"kärna /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128".

Frågan är varför ta bort alternativet "vga=xxx"? På grund av möjliga konflikter med videoalternativet. På min ATI-adapter kan jag inte ändra rullningsbufferten om "vga=xxx" finns i listan. Kanske är det inte så i ditt fall. Om ovanstående alternativ fungerar - bra; men vad händer om du vill öka antalet rader, eller ställa in ett mindre teckensnitt på skärmen? Du gjorde det alltid med alternativet "vga=xxx" - och det var det som försvann. Oroa dig inte - samma sak kan uppnås genom att ändra fbcon-parametrarna enligt beskrivningen i filen "fbcon.txt" (men som inte beskrivs i den här artikeln). Ubuntu och Debian har fler bekväm väg: "dpkg-reconfigure console-setup". Detta kommando är också värt att använda eftersom det också uppdaterar "initrd" till dina nya inställningar.

2. Att tänja på gränser

Alternativet "fbcon=scrollback:128" ger dig möjligheten att navigera på 12-13 skärmar i rullningsbufferten. Det är ungefär 150 rader - inte illa, men förmodligen inte tillräckligt för att se alla startmeddelanden. Är det möjligt att satsa mer än 128, säg 256? Gränsen på 128 finns i "vc.c". Om du vill ha mer, redigera och kompilera. För min egen del bestämde jag mig för att spelet inte är värt ljuset.

Precis när jag bestämde mig för att jag hade nått den högsta gränsen - citerar jag från "fbcon.txt":
fbcon=scrollback: [k]
...
Suffixet "k" är valfritt och kommer att multiplicera "värdet" med 1024.
(Suffixet "k" är valfritt och kommer att multiplicera "värde" med 1024 gånger).
Jag skyndade mig för att kolla ... och oavsett vad författaren tyckte om detta så var han övertygad om att 128 och 128k ger exakt samma resultat. Standardgränsen är 128KB minne, det är hela historien.

Slutligen, notera att användningen av den utökade rullningsbufferten använder både grafikkortets minne och bufferten i random access minne. Om du nöjer dig med standardvärdet 32KB använder du bara videoadapterns minne. I praktiken märkte jag dock inte den minsta avmattning.

3. Vad saknas i loggarna?

På Ubuntu och Debian och andra distributioner lagras alla systemmeddelanden i filen "/var/log/messages". Detta gäller även om loggningsdemonen inte är den gamla "syslog" utan "syslog-ng" ("ng": "ny generation").

I båda fallen kan du se meddelandena genom att skriva "dmesg" på kommandoraden. Det hjälper inte: du såg tydligt meddelanden när du laddade som inte finns i utgången av kommandot "dmesg". Hur så?

Detta är en funktion, inte en bugg! Meddelanden som loggas till filen kommer från olika OS-undersystem. De delsystem som skickar meddelanden till loggfilen kallas i syslog-terminologin som "faciliteter" ("medel" eller "tjänster"), det finns bara 8 av dem. Under nedladdningsprocessen fungerar program och skript som kanske inte tillhör något av de 8 "verktygen". Vi ser deras meddelanden rulla över skärmen, men ingenting kommer att registreras i loggfilen!

Till exempel kommer du inte att se meddelanden från "loadkeys" (openSUSE) eller "consolechars" (Ubuntu och Debian) program när du laddar en tangentbordslayout under systemstart. Ett annat exempel: när du använder konsolen textredigerare, kan du rulla displayen bakåt (inklusive färger) medan du använder rullningsbufferten. Men det som redaktören producerar kommer aldrig in i något systemprotokoll. Anledningen är förstås att varken "loadkeys", eller "consolechars", eller editorn tillhör något av de 8 "tools".

Är det möjligt att förändra situationen? Naturligtvis - "bara" göra om och kompilera om de applikationer som du vill logga. Lägg till eller skriv om startskript. Eller låt systemet fånga meddelanden utanför de 8 systemets "verktyg".

Jag slår vad om att du inte kommer att göra det. Och jag vet till och med ditt troliga svar:
"Ingenting saknas i mina loggar." Ja självklart...

Om du gillade den här artikeln, vänligen dela den med dina vänner:

Skärm - mycket behändigt program, om du ofta arbetar i konsolen genom att ansluta till servern via SSH. I detta fall skärm låter dig ha flera olika skärmar i en konsol och enkelt växla mellan dem.

Screen låter dig koppla från SSH medan du sparar uppgifter som körs på en fjärrserver.

För att installera på Ubuntu måste du köra kommandot

$ sudo apt-get installscreen

Efter det måste du köra skärmen:

$ skärm

Efter start kommer du att se antingen en kommandoradsprompt eller en "välkomstskärm" genom att trycka på MELLANSLAG eller RETUR där du också kommer till skalet. I det här fallet kommer alla kommandon att startas redan "inuti" skärmen.

För att lämna skärmen (avsluta, inte koppla ur), räcker det att avsluta alla skal öppna i den, eller, alternativt, tryck på tangentkombinationen Ctl-a \ och svara "y" på frågan "vill du verkligen att gå ur".

Du kan koppla från den aktuella skärmen utan att stänga eller avsluta sessionen genom att trycka på Ctrl-a d.

Ansluter till skärmen

Om det redan körs en skärmsession på maskinen och du vill ansluta till den, då

  1. om det bara finns en session räcker ett enkelt kommando: $ screen –x
  2. om det finns flera sessioner, då: du kan se listan över skärmar som körs med kommandot screen -ls: $ screen -ls Det finns skärmar på: 2762.pts-0.debian (Detached) 2743.pts-0.debian ( Fristående) 2 Uttag i /var/run/screen/S-diesel.

    Vi väljer den skärm vi behöver och går med i den:

    Skärm -x 2762.pts-0.debian

    Namnen på sessionerna är som standard inte särskilt informativa - bara processnummer, om du vill köra och använda flera skärmsessioner för olika uppgifter kan du komma på mer vettiga namn. Vi kommer på ett namn, sedan startar vi en ny skärm så här:

    $ skärm -S "jobb1"

    där jobb1 är namnet på vår "namngivna" session. Nu i -ls kommer vi att se mycket tydligare:

    $ screen -ls Det finns skärmar på: 2762.pts-0.debian (fristående) 2795.job1 (fristående) 2743.pts-0.debian (fristående) 3 uttag i /var/run/screen/S-diesel.

    och vi kan ansluta till job1-sessionen genom att helt enkelt ange dess namn:

    $ skärm -x jobb1

Växla mellan skärmar

Som du redan förstått sparas sessioner även när du kopplas bort från servern, och allt som körs i dem fortsätter att köras. Skärmens möjligheter är dock inte begränsade till detta. Ibland, när jag arbetar via ssh, vill jag verkligen ha flera terminaler öppna samtidigt, medan att ansluta flera gånger är en bummer - speciellt om du behöver ansluta via flera servrar. Skärm kan också hjälpa till med detta. Tryck bara på Ctrl - a c så öppnas ett annat skal. Du kan flytta mellan öppna skal antingen genom Ctrl - a<Цифра>, Var<Цифра>- öppet skalnummer, med början från noll, eller Ctrl - a n / Ctrl - a p - framåt bakåt. Du kan få en lista över öppna "fönster" - konsoler (och växla till önskad), med hjälp av tangentkombinationen Ctrl - a "; för att ge ett vanligt namn (och inte bara tråkigt "bash") för en tråd i fönstret, gå till den och tryck på Ctrl - en A (skiftlägeskänslig), skriv sedan in ett namn vid prompten som visas.

Övervakning av kommandoexekveringen

Om du har flera fönster öppna kan det vara användbart att övervaka aktiviteten i ett av dem. Till exempel, om du kör ett "långvarigt" kommando och du är intresserad av att veta när det kommer att slutföras. Vi går till fönstret med detta kommando, trycker på Ctrl - a m, vi ser en inskription så här: "Fönster 0 (bash) övervakas nu för all aktivitet". När något ändras i ett fönster piper skärmen och fönsterlistan visar ett "@" efter numret.

Skärmrullning i skärm

För att se resultatet av ett kommando som har gått över fönsterkanterna, måste du trycka Ctrl-a [

Detta växlar skärmen till kopieringsläge. För att lämna detta läge, tryck helt enkelt på Esc.

skärmkonfiguration

Skärmen konfigureras med ~/.screenrc-filen i din hemkatalog. Du kan till exempel skriva där:

Bildtext alltid "%(= 45)%(+b w)Skärm: %n | %h %=%t %c" hardstatus alwayslastline "%-Lw%(= BW)%50>%n%f* %t%( -)%+Lw%<"

Detta kommer att ge dig en all time synlig lista öppna fönster, och annan användbar information längst ned på skärmen.

Dessutom, när Screen startas, som standard, körs kommandon från filen /etc/screenrc och .screenrc-filen från användarens hemkatalog. Många av kommandona som kan användas i konfigurationsfiler har diskuterats i tabellerna ovan i fältet "Textkommando". Nedan är ett exempel på skärmkonfiguration från en .screenrc-fil:

# Inaktivera visning av licensinformation vid start Screen startup_message off # Öppna ett skal för att köra chdir-skärmen -t Arbeta # Öppna ett skal för att hantera konfigurationen chdir /etc-skärmen -t Konfiguration # Öppna ett skal för att visa loggar chdir /var/log-skärmen -t Loggar # Välj första fönstret efter start välj 0

Denna ganska enkla konfigurationsfil öppnar tre fönster som heter Work, Configuration, Logs, respektive i användarens hemkatalog, i /etc-katalogen och i /var/log-katalogen. Efter start kommer det första fönstret med namnet Work att visas på skärmen. Figur 1 visar ett exempel på hur Screen fungerar med den här konfigurationsfilen.

Slutförande skärm

Om skärmsessionen av någon anledning slutar svara kan du avsluta den. För att göra detta måste du ansluta till önskad session, tryck sedan på Ctrl - a och ange kommandot ":quit".

Skärmen avslutar den här sessionen och tvångsstänger alla fönster.

Arbeta med skärm

En av Screens huvudfunktioner är att skapa och hantera flera konsolfönster, eller textbaserade applikationer, i ett enda terminalfönster. På en gång kan bara ett av fönstren finnas på terminalskärmen (det kan finnas flera av dem bara om de delar upp terminalskärmen i delar). Screen låter dig snabbt växla mellan fönster, spara och senare återgå till en textsession och dela den med andra användare. Dessutom låter Screen dig ge Windows-titlar, hålla reda på aktiviteten i varje fönster och dela innehållet i Windows genom att kopiera och klistra in. Och dessutom låter Screen dig mappa om nycklar, hantera terminalemuleringsinställningar och göra många andra små textruteuppgifter som kanske inte är ett konstant behov, men som kan hjälpa till att utföra administrativt arbete vid vissa tidpunkter.

Bilden visar en skärm med tre namngivna fönster (Arbete, Konfiguration, Loggar) och textredigeraren Vim öppnad i den, med ett exempel på konfigurationsfilen Skärm.

Första starten

Skärm kan startas med skärmkommandot, men kontrollera först om Skärm är installerat på ditt system med följande kommando:

$ vilken skärm /usr/bin/skärm

Om kommandot returnerar sökvägen som i exemplet ovan kan du börja använda det direkt, annars kan Screen installeras med hjälp av standardpaketstödsverktygen för ditt operativsystem, eller laddas ner från den officiella webbplatsen http://www.gnu. org/software/screen/ .

Nu kan vi köra Screen genom att helt enkelt skriva:

$ skärm

Efter lansering kan information om version och licens visas på skärmen (när vi överväger konfigurationen kommer vi att överväga hur du kan avbryta visningen av detta meddelande) och i det här fallet måste du trycka på "Mellanslag" eller "Enter"-tangenten , varefter vi kommer in på, vid första anblicken, det vanliga , ett textomslag. Det bör noteras att på kommandoraden kan du omedelbart ange ett kommando för att starta en specifik applikation, till exempel för att starta toppen, måste du skriva:

$ skärm topp

Okej, nu körs Screen, men vid första anblicken finns det inga externa förändringar - vi kan arbeta i ett löpande skal, eller använda top. Tricket är att under körningen skickar Screen alla tangenttryckningar direkt till applikationen, men (av default) lämnar åt sig kontrollkommandon som börjar med tangentkombinationen Ctrl + a .

Denna kontrollknappskombination kan ändras genom konfigurationsfilerna (som vi kommer att diskutera nedan), men i alla exempel kommer endast standardkonfigurationen att beaktas. Således består alla tangentbordskommandon på skärmen av två tangentkombinationer - kontrolltangenten Ctrl + a och själva tangenten, eller en tangentkombination som representerar kommandot. Nästan varje kommando har också sin textmotsvarighet, som kan köras antingen genom en konfigurationsfil eller genom att köra följande kommando:

I det här fallet måste vi köra två kortkommandon genom att först trycka på Ctrl + a och sedan kolontangenten. I det här fallet kommer Screen att visa en kommandotolk i form av ett kolon längst ner på skärmen. Samma kommando som vi precis körde med en kortkommando kan köras genom konfigurationsfilen med hjälp av kommandot kolon text, vilket till exempel kan behövas för att visa en kommandotolk vid start, eller mappa om tangentkombinationen som orsakar denna prompt. Nedan, som i exemplet ovan, kommer jag för varje tangentkombination att skriva nyckelorden som motsvarar dem, som kan användas i konfigurationsfiler, eller matas in med Ctrl + a och:.

En berättigad fråga kan uppstå här - vad händer om applikationen direkt behöver passera tangentkombinationen Ctrl + a , som redan används i Screen som en tjänstnyckel? Till exempel används samma kombination av redigeringsbiblioteket för readline kommandorad för att hoppa till början av en rad. I det här fallet tillhandahåller Screen följande kommando:

Fönsterhantering

I föregående avsnitt lärde vi oss hur man kör Screen och lärde oss den grundläggande mallen för alla tangentbordskommandon. Det är dags att ta itu med kommandona för att hantera fönster. När Screen startar skapar den ett enda fönster (om inte konfigurationen anger att flera fönster ska skapas samtidigt) och tilldelar det numret 0. Ett nytt kommandoskalsfönster kan skapas med kommandot nedan:

TANGENTBORD TEXTKOMMANDO BESKRIVNING
ctrl+a c skärm Skapa ett nytt fönster

I det här fallet kommer Screen att skapa ett nytt fönster och tilldela det nästa nummer i ordning. I vårt fall kommer det nya fönstret att vara fönster nummer 1.

Nu har vi redan två textfönster, varav det nyskapade fönster nummer 1 är det nuvarande, och fönster nummer 0 är i bakgrunden. Men det bör noteras att även om fönstret är i bakgrunden, kan det uppfatta utdata från programmet som körs i det, som om det vore det nuvarande. Till exempel kan vi starta en process i fönster 0 som matar ut ytterligare information med jämna mellanrum (det här kan till exempel vara kommandot tail -f) och sedan byta till fönster 1 för att arbeta i en textredigerare. Efter ett tag, om vi vill se vad som händer i fönster 0, kan vi byta till detta fönster och se all utdata från processen som körs där. Du kan sedan växla tillbaka till redigeringsfönstret.

I föregående stycke beskrev jag ett exempel med växling mellan fönster, men sa ännu inte vilka kommandon som används för detta. Låt oss ta en närmare titt på de vanligaste kommandona för att hantera fönster:

TANGENTBORD TEXTKOMMANDO BESKRIVNING
ctrl+a w fönster Listar siffrorna och titlarna för alla fönster på den nedre raden på skärmen
ctrl+a « fönsterlista Visar en interaktiv lista med nummer och titlar för alla fönster från vilka du kan välja ett fönster att byta
ctrl+a fönsternummer Välj Välj fönster efter nummer. Till exempel, kommandot Ctrl + a och 0 gör det aktuella fönstret nummer 0
Ctrl+a n Nästa Växla till nästa fönster i ordning, eller till det första fönstret om vi var i det sista fönstret
ctrl+a sid föregående Växla till föregående fönster i ordning, eller till det sista fönstret om vi var i det första fönstret
ctrl+a Välj Visa en uppmaning om att ange fönsternumret för att byta
ctrl+a ctrl+a Övrig Växla till senast använda fönster
ctrl+a N siffra Visa aktuellt fönsternummer och titel
ctrl+a A titel Ställ in titeln på det aktuella fönstret
ctrl+a k döda Tvinga stängning av fönstret, till exempel om applikationen inte kan stängas på vanligt sätt

När ett av fönstren stängs ändras inte antalet andra fönster, och "hål" dyker upp i numreringen, som senare kan fyllas med nya fönster. Även om Screen har ett kommando för att ändra fönsternumret, anses det inte här och lämnas för oberoende studier. Om alla fönster är stängda stängs skärmen och ett meddelande visas:

Arbeta med text

Ovan har vi lärt oss hur man startar Screen och hanterar fönster - skapa dem, växla från fönster till fönster, tilldela namn och stänga dem. Låt oss nu titta på att arbeta med innehållet i fönster - kopiera och klistra in textinnehållet i ett fönster i ett annat, övervaka fönster, spara en textkopia av skärmen och andra liknande uppgifter:

TANGENTBORD TEXTKOMMANDO BESKRIVNING
ctrl+a M övervaka Aktivera/inaktivera aktivitetsövervakning för det aktuella fönstret. När övervakning är aktiverad och text visas i ett fönster i bakgrunden, visas information om aktivitet i serviceraden.
tystnad Aktivera/inaktivera inaktivitetsövervakning för det aktuella fönstret. När övervakning är aktiverad och ingen text visas i ett fönster som är i bakgrunden under en viss tid, visas information om utebliven aktivitet i serviceraden.
ctrl+a h papperskopia Skriv en textbild av det aktuella fönstret till filen hardcopy.window_number i katalogen Screen som standard.
ctrl+a H logga Aktivera/inaktivera spårning av texten i det aktuella fönstret till filen screenlog.window_number i Sccreen-katalogen som standard.
ctrl+a [ kopiera Gå in i kopieringsläge. Ytterligare kommandon för detta läge beskrivs nedan.
ctrl+a ] klistra Klistra in text i fönstret från standardregistret (där den tidigare kopierades med kommandot ovan).

I kopieringsläge startar Screen en textredigerare som liknar Vi-redigeraren. De vanligaste redigeringskommandona är:

  • Markörtangenterna flyttar markören över skärmbufferten;
  • Mellanslagstangenten markerar början och slutet av kopieringsområdet. Om du trycker på blanksteg en andra gång kopieras den markerade texten till standard skiftläge och skärmen avslutar kopieringsläget;

Flera fönster på skärmen

Som standard lämnar Screen endast ett logiskt fönster synligt på skärmen, men om så önskas finns det ytterligare ett alternativ att dela upp terminalskärmen i horisontella områden. Således är det möjligt att visa flera fönster samtidigt på en terminalskärm. Låt oss ta en närmare titt på kommandona för att arbeta med skärmregioner:

Figur 2 visar en skärm med tre namngivna fönster (Arbete, Konfiguration, Loggar) och en skärm uppdelad i två regioner. I det övre området är Work-fönstret öppet med Vim-textredigeraren och ett exempel på en skärmkonfigurationsfil. I den nedre regionen, konfigurationsfönstret med en del av den allmänna konfigurationsfilen /etc/screenrc.

Konsolsessioner

Slutligen ska vi titta på en av de mest populära funktionerna i Screen. Låt oss föreställa oss följande situation: när en systemadministratör är hemma loggar han in på en fjärrserver, öppnar flera fönster, startar nödvändiga uppgifter, stänger sedan anslutningen och går till jobbet. På jobbet går han igen till samma server och återställer fönstren öppna hemma med resultatet av de utförda uppgifterna. Låter det lite fantastiskt? Inte i något fall! Skärmkonsolsessionerna är designade för att göra just det. De låter dig koppla bort den aktuella skärmsessionen med alla fönster och applikationer som körs från terminalen och sedan återansluta den när som helst. Samtidigt kommer alla applikationer som körs under Skärm att fortsätta att fungera och använda sina fönster för att visa information. Dessutom kan det finnas flera konsolsessioner, men i den här artikeln kommer vi inte att uppehålla oss i detalj.

Tänk på kommandona för att koppla bort en konsolsession från en terminal:

TANGENTBORD TEXTKOMMANDO BESKRIVNING
ctrl+a d lösgöra Koppla loss konsolsessionen och låt den köras i bakgrunden. Samtidigt skriver Screen:
ctrl+a D D pow_detach Koppla loss konsolsessionen, låt den köras i bakgrunden och skicka en HANGUP-signal till den överordnade skärmen. När du kör Screen från en fjärrterminal betyder det att du kopplar bort Screen och sedan stänger anslutningen. Samtidigt skriver Screen:
ctrl+a z uppskjuta Koppla bort konsolsessionen och låt den köras som en bakgrundsprocess för det överordnade skalet. I det här fallet, förutom kommandona som beskrivs nedan, kan standardkommandon för att hantera bakgrundsprocesser för skalet användas för att återställa sessionen.
ctrl+a ctrl + sluta Stäng alla sessionsfönster och avsluta skärmen. Det bör noteras att många distributioner omdefinierar tangentkombinationen för detta kommando, men textkommandot kan användas ändå

För att återkoppla till en frånkopplad session, eller för att se en lista över tillgängliga sessioner, måste du starta Screen med en av följande växlar:

Vad kommer härnäst?

Screen har ett stort antal olika funktioner och det är nästan omöjligt att beskriva dem alla i en artikel, så en del av funktionaliteten lämnades bakom kulisserna. Här är några skärmfunktioner/inställningar som inte täcktes ovan och som lämnas för oberoende studie:

  • Kommandon för att ställa in terminalemulering;
  • Fleranvändarkonsolsessioner;
  • Tilldelning eller omtilldelning av kortkommandon till kommandon;
  • Hjälpalternativ för textkommandon. Till exempel, alternativet -t för skärmkommandot, som används i exempelkonfigurationsfilen;
  • Sällan använda kommandon, till exempel kommandon som kan användas när du ställer in lanseringen av Screen - eko och vila;
  • Miljövariabler som kan vara användbara när du konfigurerar Screen;
  • Ytterligare startknappar Skärm;

skärmalternativ

Screen är ett program med en lång historia, det bör noteras att den första versionen dök upp 1987. För tillfället läggs nästan inga nya funktioner till på Screen (en av anledningarna kan vara närvaron av ett stort antal av dem för tillfället) och i princip görs bara buggfixar. Om någon inte gillar den relativa "åldern" på Screen, eller inte behöver ett så stort antal funktioner, kan du vända dig till ett av följande program:

  • dtach () - huvudvikten i utvecklingen av detta program ligger på kompakthet. I likhet med Screen stöder den möjligheten att arbeta med konsolsessioner, men har inte andra skärmfunktioner.
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) - låter dig dela upp terminalskärmen i två halvor och arbeta med två mjukvaruskal samtidigt.
  • Tmux() - Tmux använder en klient-servermodell för att arbeta med konsolsessioner.
  • Twin (http://linuz.sns.it/~max/twin/) - ett försök att skapa ett textbaserat fönstergränssnitt som liknar grafiska motsvarigheter.

Om du upptäcker ett fel, välj en textbit och tryck på Ctrl + Retur
DELA MED SIG: