Omgekeerd scrollen van tekst in de Linux-console. Scherm — meerdere schermen in één SSH-sessie Een opdracht of proces beëindigen

Screen is een erg handig programma als je vaak in de console werkt terwijl je via SSH met de server bent verbonden. In dat geval scherm Hiermee kunt u meerdere verschillende schermen op één console bewaren en er gemakkelijk tussen schakelen.

Met Scherm kunt u de verbinding met SSH verbreken, waardoor taken worden opgeslagen die op een externe server worden uitgevoerd.

Om op Ubuntu te installeren, moet u de opdracht uitvoeren

$ sudo apt-get installatiescherm

Hierna moet je het scherm uitvoeren:

$ scherm

Na het opstarten ziet u een opdrachtregelprompt of een “welkomstscherm”, waarbij u op SPACE of ENTER drukt, waarin u ook naar de shell wordt geleid. In dit geval worden alle opdrachten “binnen” het scherm gestart.

Om het scherm te verlaten (afsluiten, niet verbreken) volstaat het om alle open shells erin af te sluiten, of op de toetsencombinatie Ctl-a \ te drukken, en "y" te antwoorden op de vraag "wil je echt afsluiten" .

Met de combinatie Ctrl-a d kunt u de verbinding met het huidige scherm verbreken zonder de sessie te sluiten of te beëindigen.

Verbinding maken met scherm

Als er al een actieve schermsessie op de machine plaatsvindt en u hiermee verbinding wilt maken, dan

  1. als er maar één sessie is, gebruik dan gewoon het commando: $ screen –x
  2. als er meerdere sessies zijn, dan: kunt u de lijst met actieve schermen bekijken met het opdrachtscherm -ls: $ screen -ls Er zijn schermen op: 2762.pts-0.debian (vrijstaand) 2743.pts-0.debian ( Vrijstaand) 2 stopcontacten in /var/run/screen/S-diesel.

    Selecteer het scherm dat we nodig hebben en doe mee:

    Scherm -x 2762.pts-0.debian

    De standaardsessienamen zijn niet-informatief - u hoeft alleen maar getallen te verwerken en meerdere schermsessies voor verschillende taken te gebruiken; u kunt verstandigere namen bedenken; We bedenken een naam en lanceren vervolgens een nieuw scherm zoals dit:

    $ scherm -S "job1"

    waarbij job1 de naam is van onze “benoemde” sessie. Nu zullen we in -ls iets veel duidelijkers zien:

    $ screen -ls Er zijn schermen op: 2762.pts-0.debian (Vrijstaand) 2795.job1 (Vrijstaand) 2743.pts-0.debian (Vrijstaand) 3 Sockets in /var/run/screen/S-diesel.

    en we kunnen verbinding maken met de job1-sessie door simpelweg de naam op te geven:

    $ scherm -x taak1

Schakelen tussen schermvensters

Zoals je al hebt begrepen, worden sessies opgeslagen, zelfs als je geen verbinding hebt met de server, en alles wat erin draait, blijft draaien. Dit is echter niet het einde van de mogelijkheden van het scherm. Soms wil je, als je via ssh werkt, echt dat meerdere terminals tegelijk open zijn, maar meerdere keren verbinden is lastig - vooral als je verbinding moet maken via meerdere servers. scherm kan hierbij ook helpen. Druk gewoon op Ctrl - a c en een andere shell wordt geopend. U kunt tussen geopende shells schakelen via Ctrl - a<Цифра>, Waar<Цифра>— nummer van de open schaal, beginnend bij nul, of Ctrl — a n/Ctrl — a p — vooruit achteruit. U kunt een lijst met geopende “vensters” – consoles krijgen (en naar de gewenste overschakelen) met behulp van de toetsencombinatie Ctrl - a “; Om een ​​normale naam (niet alleen het saaie “bash”) voor een venster in te stellen, ga je ernaar toe en druk je op Ctrl - een A (hoofdlettergebruik is belangrijk), en voer je de naam in bij de prompt die verschijnt.

Bewaken van de uitvoering van opdrachten

Als u meerdere vensters geopend heeft, kan het handig zijn om de activiteit in één ervan te kunnen volgen. Als u bijvoorbeeld een langlopende opdracht hebt gestart en wilt weten wanneer deze zal worden voltooid. We gaan met dit commando naar het venster, drukken op Ctrl - a m, we zien een bericht als dit: "Venster 0 (bash) wordt nu gecontroleerd op alle activiteiten." Wanneer er iets in het venster verandert, piept het scherm en verschijnt er een “@”-symbool achter het nummer in de lijst met vensters.

Door het scherm scrollen in scherm

Om de opdrachtuitvoer te bekijken die de venstergrenzen heeft overschreden, moet u op Ctrl-a [

Hierdoor wordt het scherm naar de kopieermodus geschakeld. Om deze modus te verlaten, drukt u eenvoudig op Esc.

schermconfiguratie

Scherm wordt geconfigureerd met behulp van het bestand ~/.screenrc in uw thuismap. U kunt daar bijvoorbeeld schrijven:

Bijschrift altijd "%(= 45)%(+b w)Scherm: %n | %h %=%t %c" harde status altijdlaatste regel "%-Lw%(= BW)%50>%n%f* %t%( -)%+Lw%<"

Hierdoor krijgt u een altijd zichtbare lijst met geopende vensters en andere nuttige informatie onderaan het scherm.

Wanneer Screen wordt gestart, worden bovendien standaard de opdrachten uit het bestand /etc/screenrc en het bestand .screenrc uit de thuismap van de gebruiker uitgevoerd. Veel opdrachten die in configuratiebestanden kunnen worden gebruikt, zijn besproken in de tabellen hierboven in het veld “Tekstopdracht”. Hieronder ziet u een voorbeeld van een schermconfiguratie uit het .screenrc-bestand:

# Schakel de weergave van licentie-informatie uit bij het opstarten Scherm startup_message off # Open een shell voor werk chdir screen -t Work # Open een shell voor het beheren van de configuratie chdir /etc screen -t Configuratie # Open een shell voor het bekijken van logs chdir /var/log screen -t Logs # Selecteer eerste venster na start, selecteer 0

Dit vrij eenvoudige configuratiebestand opent drie vensters met de namen Werk, Configuratie en Logboeken, respectievelijk in de persoonlijke map van de gebruiker, de map /etc en de map /var/log. Na het opstarten verschijnt het eerste venster met de naam Werk op het scherm. Figuur 1 toont een voorbeeld van Screen dat met dit configuratiebestand werkt.

Scherm voltooien

Als de schermsessie om wat voor reden dan ook niet meer reageert, kunt u deze beëindigen. Om dit te doen, moet u verbinding maken met de gewenste sessie, vervolgens op Ctrl - a drukken en de opdracht “:quit” invoeren.

Het scherm beëindigt deze sessie, waardoor alle vensters worden gesloten.

Werken met scherm

Een van de belangrijkste kenmerken van Screen is het maken en beheren van meerdere consolevensters of teksttoepassingen in één enkel terminalvenster. Op een bepaald moment kan slechts één van de vensters zich op het terminalscherm bevinden (meerdere ervan kunnen alleen aanwezig zijn als ze het terminalscherm in delen verdelen). Met Scherm kunt u snel tussen vensters schakelen, opslaan en later terugkeren naar een tekstsessie en deze delen met andere gebruikers. Bovendien kunt u met Screen venstertitels geven, de activiteit in elk venster volgen en de vensterinhoud delen met kopiëren en plakken. En bovendien kunt u met Screen sleutels opnieuw toewijzen, terminalemulatie-instellingen beheren en vele andere kleine taken uitvoeren die verband houden met tekstvensters die misschien niet constant nodig zijn, maar op bepaalde momenten wel kunnen helpen met administratief werk.

De afbeelding toont een scherm met drie benoemde vensters (Werk, Configuratie, Logboeken) en de Vim-teksteditor daarin geopend, met een voorbeeld van een schermconfiguratiebestand.

Eerste lancering

Screen kan worden gestart met de opdracht screen console, maar laten we eerst controleren of Screen op uw systeem is geïnstalleerd met behulp van de volgende opdracht:

$ welk scherm /usr/bin/screen

Als de opdracht het pad retourneert zoals in het bovenstaande voorbeeld, kunt u het onmiddellijk gaan gebruiken. Anders kan Screen worden geïnstalleerd met standaard pakketondersteuningstools voor uw besturingssysteem, of worden gedownload van de officiële website http://www.gnu.org/ software/scherm/.

Nu kunnen we Screen starten, waarvoor we eenvoudigweg typen:

$ scherm

Na de lancering kan informatie over de versie en licentie op het scherm verschijnen (bij het overwegen van de configuratie zullen we bekijken hoe u de weergave van dit bericht kunt annuleren) en in dit geval moet u op de “Spatie” of “Enter” drukken. toets, waarna we ons in een schijnbaar normale tekstshell bevinden. Opgemerkt moet worden dat u op de opdrachtregel onmiddellijk een opdracht kunt opgeven om een ​​specifieke toepassing te starten. Om bijvoorbeeld top te starten, moet u typen:

$scherm bovenaan

Oké, nu is Screen actief, maar op het eerste gezicht zijn er geen externe wijzigingen - we kunnen in de running shell werken, of top gebruiken standaard) laat u zelf de besturingsopdrachten over, beginnend met de toetsencombinatie Ctrl + a.

Deze combinatie van bedieningstoetsen kan worden gewijzigd via configuratiebestanden (die we hieronder zullen bekijken), maar alle voorbeelden houden alleen rekening met de standaardconfiguratie. Alle schermtoetsenbordopdrachten bestaan ​​dus uit twee toetscombinaties: de besturing Ctrl + a en de daadwerkelijke toets of toetscombinatie die de opdracht vertegenwoordigt. Bijna elke opdracht heeft ook zijn eigen tekst-tegenhanger, die kan worden uitgevoerd via een configuratiebestand of door de volgende opdracht uit te voeren:

In dit geval moeten we twee sneltoetsen uitvoeren door eerst op Ctrl + a en vervolgens op de dubbele punt te drukken. In dit geval geeft Screen een opdrachtprompt weer in de vorm van een dubbele punt onder aan het scherm. Dezelfde opdracht die we zojuist hebben uitgevoerd met behulp van een sneltoets kan worden uitgevoerd via het configuratiebestand met behulp van de tekstopdracht colon , die bijvoorbeeld nodig kan zijn om bij het opstarten een prompt weer te geven om opdrachten in te voeren, of om de toetsencombinatie die ervoor zorgt opnieuw toe te wijzen deze prompt. Hieronder zal ik, net als in het bovenstaande voorbeeld, voor elke toetscombinatie de bijbehorende trefwoorden schrijven, die kunnen worden gebruikt in configuratiebestanden, of kunnen worden ingevoerd met Ctrl + a en:.

Hier kan een logische vraag rijzen: wat als de applicatie direct de toetsencombinatie Ctrl + a moet doorgeven, die al in Screen als servicesleutel wordt gebruikt? Dezelfde combinatie wordt bijvoorbeeld gebruikt door de leesregelbewerkingsbibliotheek voor opdrachtregels om een ​​sprong naar het begin van een regel uit te voeren. Voor dit geval biedt Screen de volgende opdracht:

Vensterbeheer

In de vorige sectie hebben we geleerd hoe we Screen kunnen starten en hebben we het basispatroon voor alle toetsenbordopdrachten geleerd. Het is tijd om de commando's voor het beheren van vensters te begrijpen. Wanneer Screen wordt gestart, wordt er één venster gemaakt (tenzij de configuratie het maken van meerdere vensters tegelijk specificeert) en wordt hieraan het nummer 0 toegewezen. Een nieuw venster met een opdrachtshell kan worden gemaakt met behulp van de onderstaande opdracht:

SLEUTELCOMBINATIE TEKST OPDRACHT BESCHRIJVING
Ctrl+een C scherm Maak een nieuw venster

In dit geval zal Screen een nieuw venster maken en hieraan het volgende volgnummer toewijzen. In ons geval zal het nieuwe venster vensternummer 1 zijn.

Nu hebben we al twee tekstvensters, waarvan het nieuw gemaakte venster met nummer 1 het huidige is, en het venster met nummer 0 op de achtergrond. Maar er moet worden opgemerkt dat zelfs als het venster zich op de achtergrond bevindt, het de uitvoer van de applicatie die erin draait, kan waarnemen alsof het de huidige is. We zouden bijvoorbeeld in venster 0 een proces kunnen uitvoeren dat met regelmatige tussenpozen aanvullende informatie afdrukt (dit kan bijvoorbeeld de opdracht tail -f zijn) en vervolgens overschakelen naar venster 1 om in een teksteditor te werken. Als we na enige tijd willen zien wat er in venster 0 gebeurt, kunnen we naar dat venster overschakelen en de volledige uitvoer van het proces daar zien draaien. U kunt vervolgens teruggaan naar het bewerkingsvenster.

In de vorige paragraaf heb ik een voorbeeld beschreven van het schakelen tussen vensters, maar ik heb nog niet gezegd welke commando's daarvoor worden gebruikt. Laten we de meest gebruikte opdrachten voor het beheren van vensters eens nader bekijken:

SLEUTELCOMBINATIE TEKST OPDRACHT BESCHRIJVING
Ctrl+een w ramen Toont een lijst met nummers en titels van alle vensters op de onderste regel van het scherm
Ctrl+een « vensterlijst Toont een interactieve lijst met nummers en titels van alle vensters waaruit u een venster kunt selecteren om te schakelen
Ctrl+een Raamnummer selecteren Een venster selecteren op nummer. Met de opdracht Ctrl + a en 0 wordt het huidige vensternummer bijvoorbeeld 0
Ctrl+een N volgende Schakel op volgorde naar het volgende venster, of naar het eerste venster als we ons in het laatste venster bevonden
Ctrl+een P vorige Schakel op volgorde naar het vorige venster, of naar het laatste venster als we ons in het eerste venster bevonden
Ctrl+een selecteren Geef een prompt weer om het vensternummer in te voeren waarnaar u wilt overschakelen
Ctrl+een Ctrl+een ander Ga naar het laatst gebruikte venster
Ctrl+een N nummer Toon huidig ​​vensternummer en titel
Ctrl+een A titel Stel de titel van het huidige venster in
Ctrl+een k doden Forceer het sluiten van het venster, bijvoorbeeld als de toepassing niet op de gebruikelijke manier kan worden gesloten

Wanneer u een van de vensters sluit, veranderen de nummers van de andere vensters niet en verschijnen er “gaten” in de nummering, die later kunnen worden opgevuld met nieuwe vensters. Hoewel Screen een commando heeft om het vensternummer te wijzigen, wordt dit niet besproken hier en wordt achtergelaten voor onafhankelijke studie. Als alle vensters gesloten zijn, wordt het scherm afgesloten en wordt het volgende bericht weergegeven:

Werken met tekst

Hierboven hebben we geleerd hoe u Screen kunt starten en vensters kunt beheren - ze kunt maken, van venster naar venster kunt schakelen, namen kunt toewijzen en ze kunt sluiten. Laten we nu eens kijken naar het werken met de inhoud van vensters: het kopiëren en plakken van de tekstinhoud van het ene venster in het andere, het bewaken van vensters, het opslaan van een tekstkopie van het scherm en andere soortgelijke taken:

SLEUTELCOMBINATIE TEKST OPDRACHT BESCHRIJVING
Ctrl+een M monitor Activiteitsmonitoring voor het huidige venster in-/uitschakelen. Wanneer monitoring is ingeschakeld en tekst wordt weergegeven in een venster op de achtergrond, wordt informatie over de activiteit weergegeven op de serviceregel.
stilte Inactiviteitsmonitoring voor het huidige venster in-/uitschakelen. Wanneer monitoring is ingeschakeld en er gedurende een bepaalde periode geen tekst wordt weergegeven in een venster dat zich op de achtergrond bevindt, wordt informatie over het gebrek aan activiteit weergegeven op de servicelijn.
Ctrl+een H hardcopy Schrijf een tekstafbeelding van het huidige venster naar het bestand hardcopy.window_number in de standaard Screen-map.
Ctrl+een H loggen Schakel het traceren van de tekst van het huidige venster naar het bestand screenlog.window_number in de standaard Sccreen-map in/uit.
Ctrl+een [ kopiëren Ga naar de kopieermodus. Aanvullende opdrachten voor deze modus worden hieronder beschreven.
Ctrl+een ] plakken Plak tekst uit het standaardregister in het venster (waar deze eerder werd gekopieerd met de bovenstaande opdracht).

In de kopieermodus start Screen een teksteditor die lijkt op de Vi-editor. De meest gebruikte editoropdrachten:

  • De cursortoetsen verplaatsen de cursor door de schermbuffer;
  • De spatiebalk markeert het begin en einde van het gebied dat moet worden gekopieerd. Wanneer u een tweede keer op de spatiebalk drukt, wordt de gemarkeerde tekst naar het standaardregister gekopieerd en verlaat Screen de kopieermodus;

Meerdere vensters op het scherm

Standaard laat Screen slechts één logisch venster zichtbaar op het scherm, maar indien gewenst is er een extra optie om het terminalscherm in horizontale gebieden te verdelen. Zo kunt u meerdere vensters tegelijk op één terminalscherm weergeven. Laten we de opdrachten voor het werken met schermgebieden eens nader bekijken:

Figuur 2 toont een scherm met drie benoemde vensters (Werk, Configuratie, Logboeken) en een scherm verdeeld in twee gebieden. In het bovenste gedeelte is het werkvenster geopend met de Vim-teksteditor en een voorbeeld van een schermconfiguratiebestand. In het onderste gebied bevindt zich het configuratievenster met een deel van het algemene configuratiebestand /etc/screenrc.

Consolesessies

En tot slot zullen we kijken naar een van de meest populaire functies van Screen. Stel je de volgende situatie voor: een systeembeheerder logt thuis in op een externe server, opent verschillende vensters, voert de nodige taken uit, sluit vervolgens de verbinding en gaat weg. werken. Op het werk logt hij opnieuw in op dezelfde server en herstelt de geopende vensters thuis met de resultaten van voltooide taken. Klinkt een beetje fantastisch? Echt niet! Schermconsolesessies zijn precies ontworpen om deze taak te volbrengen. Hiermee kunt u de huidige Screen-sessie met alle vensters en actieve applicaties vanaf de terminal verbreken en er op elk gewenst moment weer aan deelnemen. In dit geval blijven alle applicaties die onder Screen draaien, werken en gebruiken ze hun vensters om informatie weer te geven. Bovendien kunnen er meerdere consolesessies zijn, maar in dit artikel zullen we hier niet in detail op ingaan.

Laten we eens kijken naar de opdrachten voor het verbreken van een consolesessie vanaf een terminal:

SLEUTELCOMBINATIE TEKST OPDRACHT BESCHRIJVING
Ctrl+een D losmaken Ontkoppel de consolesessie en laat deze op de achtergrond draaien. Tegelijkertijd schrijft Screen:
Ctrl+een D D pow_detach Ontkoppel de consolesessie, laat deze op de achtergrond draaien en stuur een HANGUP-signaal naar het bovenliggende schermproces. Wanneer u Screen vanaf een externe terminal uitvoert, betekent dit dat u Screen moet verbreken en vervolgens de verbinding moet sluiten. Tegelijkertijd schrijft Screen:
Ctrl+een z opschorten Ontkoppel de consolesessie en laat deze draaien als achtergrondproces van de bovenliggende shell. In dit geval kunnen, om de sessie te herstellen, naast de hieronder beschreven opdrachten, standaardopdrachten voor het besturen van achtergrondprocessen van de opdrachtshell worden gebruikt
Ctrl+een Ctrl+ ontslag nemen Sluit alle sessievensters en sluit Screen af. Veel distributies overschrijven de sneltoets voor dit commando, maar het tekstcommando kan in ieder geval worden gebruikt

Om opnieuw deel te nemen aan een verbroken sessie of een lijst met beschikbare sessies te bekijken, moet u Screen uitvoeren met een van de volgende toetsen:

Wat is het volgende?

Scherm heeft een groot aantal verschillende functies en het is praktisch onmogelijk om ze allemaal in één artikel te beschrijven, dus een deel van de functionaliteit blijft ‘achter de schermen’. Hier zijn enkele schermfuncties/instellingen die hierboven niet zijn besproken en die aan onafhankelijk onderzoek worden overgelaten:

  • Commando's voor het instellen van terminalemulatie;
  • Consolesessies voor meerdere gebruikers;
  • Sneltoetsen aan opdrachten toewijzen of opnieuw toewijzen;
  • Hulpopties voor tekstopdrachten. Bijvoorbeeld de optie -t voor de schermopdracht, die wordt gebruikt in het voorbeeldconfiguratiebestand;
  • Minder vaak gebruikte opdrachten, bijvoorbeeld opdrachten die kunnen worden gebruikt bij het instellen van Schermopstarten, zijn echo en slaap;
  • Omgevingsvariabelen die nuttig kunnen zijn bij het configureren van Screen;
  • Extra schermstarttoetsen;

Alternatieven voor scherm

Screen is een programma met een lange geschiedenis; er moet worden opgemerkt dat de eerste versie in 1987 verscheen. Op dit moment worden er vrijwel geen nieuwe functies aan Screen toegevoegd (een van de redenen kan zijn dat er op dit moment al een groot aantal is) en worden er in principe alleen bugfixes gemaakt. Als iemand de relatieve ‘oudheid’ van Screen niet leuk vindt, of niet zo’n groot aantal functies nodig heeft, dan kun je een van de volgende programma’s gebruiken:

  • dtach () - de nadruk bij de ontwikkeling van dit programma ligt op compactheid. Net als Screen ondersteunt het de mogelijkheid om met consolesessies te werken, maar beschikt het niet over de andere functies van Screen.
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) - hiermee kunt u het terminalscherm in twee helften splitsen en met twee softwareshells tegelijk werken.
  • Tmux() - Tmux gebruikt een client-servermodel om met consolesessies te werken.
  • Twin (http://linuz.sns.it/~max/twin/) - een poging om een ​​tekstvensterinterface te maken die lijkt op zijn grafische tegenhangers.

161 Jane Doh

Ik begrijp dat Up/Down je de opdrachtgeschiedenis geeft. Maar hoe kijk je naar resultaten uit het verleden terwijl je omhoog en omlaag scrollt?

Ik heb Shift + Page Up / Page Down, Alt + Shift + Up / Down en Page Up / Page Down gebruikt, maar geen van deze lijkt te werken.

Dit is een Redhat Linux-box.

Linux-terminal rhel

14 antwoorden

SHIFT + Pagina omhoog en SHIFT + Pagina omlaag. Als dat niet werkt, probeer dan dit en dan zou het moeten:

Ga naar uw terminalprogramma en zorg ervoor dat Bewerken/Profielvoorkeuren/Scrollen/Scrollback/Onbeperkt is
wordt gecontroleerd.

De exacte locatie van deze optie kan ergens anders zijn, maar ik zie dat u Redhat gebruikt.

SHIFT + Page Up en SHIFT + Page Down zijn de juiste toetsen om op de virtuele console te werken, maar de VMware-console beschikt niet over deze terminalinstellingen. De virtuele console heeft een vaste scroll-back-grootte, deze lijkt beperkt te worden door de videogeheugengrootte volgens deze Linux Virtual Console Scroll Back-documentatie.

ALTERNATIEF VOOR LIJN-LIJNVERWERKING

Ctrl + Shift + Pijl-omhoog of Pijl-omlaag

In tegenstelling tot Shift + Page Up of Page Down waarmee de hele pagina wordt gescrolld, helpt dit bij soepel lineair scrollen, en dat is precies wat ik zocht.

Een ander alternatief, dat mogelijk al op uw systeem is geïnstalleerd, is het gebruik van het GNU-scherm:

# Dit startscherm dat basisvensterbeheer toevoegt in het terminalscherm. # Dit start de kopieermodus die u kunt gebruiken om te scrollen [ # Gebruik nu de pijlen om te bladeren # Om de kopieermodus te verlaten, doet u dat

Kijk naar het manscherm voor meer handige opties (meerdere vensters,...)...

Dit lijkt niet gemakkelijk mogelijk te zijn: de Arch Linux Wiki vermeldt geen manieren om dit op de console te doen (hoewel het gemakkelijk mogelijk is op een virtuele terminal).

Ctrl - b en vervolgens [, waarna u gewone navigatietoetsen kunt gebruiken om te scrollen (zoals Pijl-omhoog of PgDn). Druk op q om de scrollmodus te verlaten.

Het onderwerp nuttige technieken voor het werken in de Linux-terminal is onuitputtelijk. Het lijkt erop dat alles heel eenvoudig is geregeld: een shell-prompt en opdrachten die vanaf het toetsenbord worden ingevoerd. In deze eenvoud schuilt echter een afgrond van niet voor de hand liggende maar nuttige mogelijkheden. Daarom publiceren we regelmatig materiaal over de bijzonderheden van het werken op de Linux-opdrachtregel. In het bijzonder zal het vandaag een vertaling zijn van een artikel waarvan de auteur een passie heeft voor het besparen van tijd door het verhogen van de productiviteit.

Als je geïnteresseerd bent om aan de Linux-opdrachtregel te werken, vind je hier enkele van onze materialen over dit onderwerp:

  • [ +114 ] De handigste Linux-opdrachtregeltrucs
  • [ +70 ] 10 trucs voor het werken in de Linux-terminal waar maar weinig mensen van weten
  • [+65 ] Verrassend handig hulpmiddel: lsof
  • [ +32 ] Linux: omleiding
  • [ +29 ] PDF-versie van artikelen over Bash-scripts

Linux-opdrachtregeltrucs om tijd te besparen

Heb je ooit een collega enkele eenvoudige Linux-commando's zien gebruiken om problemen op te lossen waarvoor je een paar regels nodig had? Als zoiets als dit gebeurde, kon je alleen maar tegen jezelf zeggen: 'Wauw! Ik wist niet dat het zo gemakkelijk kon.”

In dit artikel laat ik je enkele professionele technieken zien voor het werken op de Linux-opdrachtregel, die je veel tijd zullen besparen en, in sommige gevallen, een slecht humeur zullen wegnemen. Niet alleen zullen je vrienden of collega's zeggen: "Wauw!" Deze technieken zullen u ook helpen uw persoonlijke productiviteit te verhogen, omdat u minder opdrachten hoeft in te voeren en zelfs minder muisklikken hoeft te maken.

Dit wil niet zeggen dat deze Linux-tips alleen voor beginners zijn. Het is heel goed mogelijk dat zelfs ervaren gebruikers hier iets nuttigs zullen vinden waarvan ze niet op de hoogte waren, ondanks dat ze al vele jaren Linux gebruiken. Linux leer je door ervaring. Zowel uw eigen ervaring als de ervaring van anderen komen hierbij goed van pas.

Voordat we beginnen, willen we erop wijzen dat sommige van de hier gegeven methoden afhankelijk zijn van uw shell-opstelling.

0. Automatische aanvulling van opdrachten met de Tab-toets

Ik zal beginnen met iets heel voor de hand liggend, maar heel belangrijk: het automatisch aanvullen van opdrachten met de Tab-toets.

Wanneer u iets begint te typen in de Linux-terminal, kunt u op de Tab-toets drukken, waarna u een reeks opties krijgt om door te gaan met typen, te beginnen met de tekens die u zojuist hebt getypt.

Als u bijvoorbeeld op het punt staat een bestand met de naam my_best_file_1.txt te kopiëren, typt u eenvoudigweg cp m en drukt u op Tab om de opties van de opdracht te zien om door te gaan.


Gebruik de Tab-toets om de invoer automatisch aan te vullen

De Tab-toets kan ook worden gebruikt om opdrachten automatisch aan te vullen.

1. Ga naar de laatste werkmap

Stel je voor dat je in een map werkte die niet gemakkelijk te bereiken was, en dat je vervolgens naar een andere map verhuisde die zich op een heel andere locatie bevond. Toen besefte je dat je terug moest naar de vorige map. In dit geval is het voldoende om de volgende opdracht te gebruiken:

CD-
Het plaatst u in de laatste werkmap. In dergelijke situaties hoeft u nu geen lange paden meer in te voeren of kopiëren en plakken te gebruiken.


Gemakkelijk schakelen tussen mappen

2. Keer terug naar de thuismap

Deze techniek ligt ook heel voor de hand. U kunt de onderstaande opdracht gebruiken om overal naar uw thuismap terug te keren:

CD-~
U kunt echter nog sneller terugkeren naar uw thuismap - met behulp van het cd-commando.

Op de meeste moderne Linux-distributies is de shell vooraf geconfigureerd om de cd-opdracht op deze manier te accepteren. Dit bespaart u een paar toetsaanslagen op uw toetsenbord.


De snelste manier om naar uw thuismap te gaan

3. Weergave van de inhoud van de directory

U vraagt ​​zich misschien af ​​wat de complexiteit is van het gebruik van de opdracht om de inhoud van een map af te drukken. Iedereen weet dat hiervoor het commando ls -l wordt gebruikt.

Maar dat is het hele punt. Bijna iedereen gebruikt ls -l om de inhoud van mappen weer te geven, terwijl hetzelfde kan worden gedaan met de volgende opdracht:

Ll
De functionaliteit van dit commando hangt af van je Linux-distributie en shell-setup, maar het is waarschijnlijk dat je het op de meeste distributies kunt gebruiken.


Gebruik de opdracht ll in plaats van de opdracht ls -l

4. Roep meerdere opdrachten op één lijn

Stel je voor dat je verschillende opdrachten achter elkaar moet uitvoeren. Misschien voert u één opdracht in, wacht u tot deze is voltooid en voert u vervolgens de volgende in?

In een dergelijke situatie zal een opdrachtscheidingsteken nuttig zijn; (puntkomma). Met deze aanpak kunt u meerdere opdrachten op één regel invoeren. In dit geval hoeft u, anders dan bij normale commando-invoer, om het volgende commando uit te voeren niet te wachten op de voltooiing van het vorige.

Commando_1; commando_2; commando_3

5. Meerdere opdrachten op één regel uitvoeren en de vorige opdracht zodanig conditioneren dat deze succesvol wordt voltooid

We hebben zojuist gekeken naar een manier om meerdere opdrachten op één regel aan te roepen. Dit bespaart tijd. Maar wat als u bijvoorbeeld bij het aanroepen van twee opdrachten wilt dat de volgende opdracht alleen wordt uitgevoerd als de vorige zonder fouten wordt voltooid?

Stel je voor dat je code wilt bouwen en vervolgens, als de build succesvol is, make ?

In deze situatie kunt u het &&-scheidingsteken gebruiken. Dit scheidingsteken zorgt ervoor dat het volgende commando alleen wordt uitgevoerd als het vorige slaagt.

Commando_1 && commando_2
Hier is een goed voorbeeld van het gebruik van &&:

Sudo apt-update && sudo apt-upgrade

6. Zoek en gebruik eenvoudig eerder ingevoerde opdrachten

Stel je voor dat je een paar minuten of een paar uur geleden een lange opdracht hebt ingevoerd en dat je deze opdracht opnieuw nodig hebt. Bovendien is het probleem dat je deze opdracht niet precies kunt onthouden.

In een dergelijke situatie zal een omgekeerde zoekopdracht u redden. Met deze techniek kunt u de opdrachtgeschiedenis op trefwoord doorzoeken. Het enige wat u hoeft te doen is de toetsencombinatie Ctrl + R gebruiken om een ​​omgekeerde zoekopdracht te starten en iets in te voeren dat verband houdt met de opdracht. Het systeem bekijkt de opdrachtgeschiedenis en toont opdrachten die overeenkomen met het ingevoerde verzoek.

Ctrl + R zoekterm
Standaard wordt er slechts één resultaat getoond. Om meer resultaten te zien die overeenkomen met uw zoekopdracht, moet u de toetsencombinatie Ctrl + R steeds opnieuw gebruiken. Om de omgekeerde zoekmodus te verlaten, drukt u op Ctrl + C.


Zoekopdracht omgekeerde opdrachtgeschiedenis

Houd er rekening mee dat u in sommige Bash-shells de toetsen Page Up en Page Down kunt gebruiken om door de zoekresultaten te bladeren.

7. De terminal ontgrendelen nadat je per ongeluk op Ctrl + S hebt gedrukt

Mogelijk bent u gewend om de sneltoets Ctrl + S te gebruiken om bestanden op te slaan. Maar als je op deze toetsen drukt in een Linux-terminal, blokkeer je deze.

Als u eerder, om de situatie te corrigeren, de terminal moest sluiten en opnieuw moest starten, hoeft u dit nu niet meer te doen. Om de terminal in werkende staat te brengen, gebruikt u eenvoudig de toetsencombinatie Ctrl + Q.

8. Ga naar het begin of einde van een regel

Stel je voor dat je een lange opdracht typt en ergens in het midden beseft dat je aan het begin iets moet veranderen. Waarschijnlijk gebruikt u de pijltjestoetsen om eerst naar het begin van een regel te gaan en vervolgens terug te keren naar het einde.

Natuurlijk kunt u in een dergelijke situatie de Home- en End-toetsen gebruiken, maar als alternatief kunt u de toetsencombinatie Ctrl + A gebruiken om naar het begin van de regel te gaan, en de toetsencombinatie Ctrl + E gebruiken om ga naar het einde.


Naar het begin of einde van een regel gaan

Ik vind deze methode handiger dan het gebruik van de Home- en End-toetsen, vooral als ik op een laptop werk.

9. Lees logbestanden in realtime

Wanneer u logbestanden moet analyseren waarnaar een actieve toepassing tijdens de analyse schrijft, kunt u de opdracht tail gebruiken met de optie -f.

Staart -f pad_naar_Log
Als alternatief kunt u het grep-commando in zijn normale vorm gebruiken om alleen de regels weer te geven waarin u geïnteresseerd bent:

Staart -f pad_naar_log | grep zoekterm
Je kunt hier ook de F-optie gebruiken. Hierdoor blijft het staarthulpprogramma actief, zelfs als het bekeken logbestand wordt verwijderd. Met deze aanpak zal tail, als dit bestand opnieuw wordt gemaakt, gegevens ervan naar het scherm blijven uitvoeren.

10. Gecomprimeerde logbestanden lezen zonder ze te decomprimeren

Serverlogboeken zijn doorgaans met gzip gecomprimeerd om schijfruimte te besparen. Dit kan tot enig ongemak leiden bij het analyseren van logs door ontwikkelaars of systeembeheerders. Mogelijk moet u de opdracht scp gebruiken om het bestand naar uw lokale map te kopiëren en vervolgens het bestand uit het archief te extraheren om het te kunnen bekijken, aangezien u mogelijk geen schrijfrechten heeft voor de locatie waarin het bestand waarin u geïnteresseerd bent, is opgeslagen.

Hier komt een groep commando's waarvan de naam begint met de letter "z" ons te hulp. Deze commando's zijn een alternatief voor de reguliere commando's die gebruikt worden om met logbestanden te werken. Onder hen zijn minder, kat, grep en anderen.

Met behulp van de opdrachten zless, zcat, zgrep en soortgelijke opdrachten hoeft u de gecomprimeerde bestanden dus niet expliciet te decomprimeren. Details over deze opdrachten vindt u.

Toen ik mijn collega over deze ‘geheime’ commando’s vertelde, kreeg ik trouwens een kop koffie.

11. Gebruik de opdracht less om bestanden te lezen

Als u een bestand wilt bekijken, vooral een groot bestand, kunt u het cat-commando proberen, maar het is veel beter om naar iets anders te zoeken. Het punt is dat de kat het hele bestand op het scherm zal weergeven, wat niet zo handig is.

Je kunt editors zoals Vi of Vim in de terminal gebruiken om de bestanden te bekijken, maar als je alleen het bestand hoeft te lezen, is de opdracht less handig.

Minder pad_naar_bestand
Tijdens een sessie met minder kunt u met trefwoorden naar gewenste tekstfragmenten zoeken, door pagina's navigeren, gegevens met regelnummers weergeven, enzovoort.

12. Hergebruik het laatste element uit het vorige commando met !$

In veel situaties is de mogelijkheid om een ​​argument uit een eerder commando te gebruiken erg handig.

Stel dat u een map moet maken en er vervolgens naartoe moet navigeren. Hier kunt u de!$-optie gebruiken door de sprongopdracht in te voeren na de opdracht voor het maken van de map.


Gebruik !$ om het argument van het laatste commando te gebruiken

Sterker nog, hetzelfde wordt gedaan met de sneltoets Alt +. (punt). De punt kan meerdere keren worden gebruikt om door de opties van het laatste commando te bladeren.

13. Het vorige commando gebruiken in het huidige commando met!!

Door gebruik te maken van!! je kunt het volledige vorige commando oproepen. Deze techniek is vooral handig wanneer u een opdracht moet uitvoeren en blijkt dat u superuser-rechten nodig heeft om deze uit te voeren. Onderstaande figuur toont bijvoorbeeld een situatie waarin het commando sudo !! kunt u veel tijd besparen.


Profiteer!!! om het laatste commando als argument te vervangen

14. Aliassen gebruiken om typefouten te corrigeren

Mogelijk bent u al bekend met het aliascommando. Het kan worden gebruikt om fouten in ingevoerde opdrachten te corrigeren.

Het kan bijvoorbeeld voorkomen dat je vaak gerp typt in plaats van grep. Als je je slechte gewoonte niet kunt doorbreken, schrijf de alias dan als volgt in je bashrc-bestand:

Alias ​​gerp=grep
U hoeft deze opdracht nu niet opnieuw te typen als u de naam verkeerd invoert.

15. Kopieer en plak in de Linux-terminal

Dit advies is enigszins dubbelzinnig, omdat het afhankelijk is van de Linux-distributie en de terminal.

Maar meestal kunnen de kopieer- en plakopdrachten als volgt worden aangeroepen:

  • Selecteer de tekst die u wilt kopiëren en klik met de rechtermuisknop om deze te plakken (werkt in Putty en andere SSH-clients voor Windows).
  • Selecteer de tekst die u wilt kopiëren en klik vervolgens op de middelste muisknop (scrollwiel) om deze te plakken.
  • Gebruik de sneltoetsen Ctrl + Shift + C om te kopiëren en Ctrl + Shift + V om te plakken.

16. Beëindigen van een opdracht of proces

Misschien is wat ik hier wil adviseren volkomen duidelijk, maar ik zal je er toch over vertellen. Als een opdracht op de voorgrond wordt uitgevoerd en u deze wilt afsluiten, kunt u op Ctrl + C drukken om deze te stoppen.

17. Het ja-commando gebruiken om interactieve commando's of scripts te automatiseren

Als u met opdrachten of scripts werkt waarbij gebruikersinteractie nodig is, en u weet dat u Y zult typen als antwoord op elke vraag in het programma, kunt u dit proces automatiseren door de opdracht yes te gebruiken. Dit wordt als volgt gedaan:

Ja | commando_of_script

18. De inhoud van een bestand wissen zonder het bestand zelf te verwijderen

Als u de inhoud van een tekstbestand wilt wissen zonder het bestand zelf te verwijderen, kunt u de volgende opdracht gebruiken:

>bestandsnaam

19. Het achterhalen van de aanwezigheid van bestanden in een map die bepaalde tekst bevat

De Linux-opdrachtregel ondersteunt vele manieren om naar informatie te zoeken. Als u echter alleen wilt weten of er bestanden in een bepaalde map staan ​​die bepaalde tekst bevatten, kunt u deze opdracht gebruiken:

Grep -Pri Zoek_Term pad_naar_map
Ik raad echter iedereen die in Linux moet zoeken aan om vertrouwd te raken met het find-commando.

20. Bel hulp voor elke opdracht

Ik wil dit artikel afsluiten met een heel voor de hand liggende, maar toch heel belangrijke “truc”, namelijk het oproepen van hulp voor een opdracht- of opdrachtregelprogramma.

Bijna alle opdrachtregelprogramma's bevatten Help-informatie waarin wordt uitgelegd hoe u ze kunt gebruiken. Meestal zal het lezen van de Help u helpen de basisprincipes van de opdracht te begrijpen. U kunt als volgt hulp krijgen:

Command_tool --help

Ik heb bewust geen commando's als fuck in dit materiaal opgenomen, omdat ze niet tot de standaardtools behoren die letterlijk overal te vinden zijn. Waar ik het hier over heb gehad, kan van pas komen als je met bijna alle Linux-distributies en opdrachtregelshells werkt zonder dat je nieuwe programma's hoeft te installeren.