Internet Windows Android

Ecran - mai multe ecrane într-o singură sesiune SSH. Ecran - mai multe ecrane într-o sesiune SSH Ecranul nu derulează emulatorul de terminal în ubuntu


Traducere gratuită: Alexey Dmitriev
Data traducerii 19 noiembrie 2007

Vorbim aici despre consola text GNU / Linux - nu despre ceea ce apare în fereastra terminalului, sau managerul X-window sau desktop. Există atât de multă confuzie în această privință încât trebuie să spun trivial: - „Dacă, în modul grafic, apăsați „Alt-Ctrl-F1” (sau „F2”, etc.), atunci veți fi dus la text. consola"...

0. Despre ce vorbim?

Computerul pornește. Sunteți în consola de text și urmăriți textul care curge rapid în jos. Doriți să vizualizați fragmentul deja afișat din acest text. Apăsați „Shift-PgUp” sau „Shift-PgDn”, iar dacă ați schimbat deja comenzile rapide implicite de la tastatură (nu, nu, nu aspectul tastaturii în X), atunci alte taste. Cu aceste taste, faceți textul să se miște în sus și în jos pe ecran. În prezent utilizați un tampon de derulare înapoi (să-l numim tampon de derulare înapoi pentru concizie).

Când începeți să utilizați acest buffer cu putere și principal, două lucruri devin foarte curând clare:
Doar o parte din textul care însoțește descărcarea poate fi returnată.
Fișierul „/ var / log / mesaje” captează mult mai puțin decât ați vrut să vedeți.

Începi să cercetezi Internetul și în curând apar rezultate preliminare: publicațiile Linux care derulează înapoi sunt foarte vechi și pot fi urmărite încă de la începutul anilor 90. Cu toate acestea, tot ce a venit înainte de nucleul 2.6.x ar trebui uitat.

Într-adevăr, ar trebui să fii selectiv în ceea ce citești: majoritatea sfaturilor referitoare la versiunile anterioare 2.6.x este probabil să te încurce și să te conducă pe calea greșită. Crede-mă - am ucis mult timp pe acest caz. Comportamentul derulării înapoi este definit în fișierul „vc.c”, altfel un fișier mic în sursele kernelului, cu „vc” însemnând „consola virtuală”.

Rețineți că atunci când comutați între console, tamponul de defilare este pierdut - astfel încât dimensiunea completă a acestui buffer este disponibilă pe consola curentă. (Există o cantitate deosebit de mare de informații nedorite aici de la pre-2.6.x).

În mod implicit, dimensiunea tamponului este de 32K. Este suficient pentru 4 apăsări ale tastelor de defilare înapoi - fiecare apăsare derulează jumătate din ecran, 25 de linii pe ecran. Sunt aproximativ 50 de linii. Și nu veți mai primi, chiar dacă aveți 30 sau 50 de linii pe ecran. Trebuie să spun că 50 de linii reprezintă o mică parte din ceea ce zboară pe ecran în timpul încărcării. În legătură cu cele de mai sus, se ridică două întrebări:

Cum cresc tamponul de defilare?

De ce jurnalele nu captează unele dintre mesajele pe care le-ați văzut în timpul încărcării?

1. Cum se mărește tamponul de derulare înapoi?

Prima soluție este de a crește dimensiunea implicită (implicit) a bufferului în sursele kernelului și de a o recompila. Permiteți-mi să presupun că sunteți la fel de disclinat să faceți asta ca și mine și să căutați un remediu mai flexibil.

Și există un astfel de instrument și se numește „framebuffer console”, pe scurt „fbcon”. Acest dispozitiv are un fișier de documentație „fbcon.txt”; dacă ați instalat documentația kernel-ului, o aveți. Căutați-l undeva în ramura „/ usr / share” a ramurii (nu pot specifica calea exactă din cauza diferenței de distribuții). Îl puteți descărca oricând ca un singur fișier.

În acest moment, îmi cer scuze: trebuie să ne abatem puțin și să vorbim puțin despre framebuffer.

Un buffer video este un buffer între afișaj și adaptorul video. Frumusețea sa este că poate fi manipulat: permite trucuri care nu ar funcționa dacă adaptorul ar fi conectat direct la display.

Un astfel de truc are de-a face cu tamponul de defilare; se dovedește că puteți „cere” videobuffer-ului să aloce mai multă memorie scrollbuffer-ului. Acest lucru se realizează prin parametrii de boot kernel. Mai întâi aveți nevoie de un framebuffer; Apoi cereți un tampon de defilare mai mare.

Următorul exemplu este pentru GRUB, dar poate fi ușor adaptat la LILO. În fișierul de configurare GRUB - "menu.lst" - găsiți linia corespunzătoare nucleului, apoi:
Eliminați opțiunea „vga = xxx” dacă este prezentă.
Adaugă opțiunea „video = vesabf” sau orice se potrivește cu hardware-ul tău.
Adăugați opțiunea „fbcon = scrollback: 128”.
După această procedură, linia parametrilor nucleului ar trebui să arate cam așa:
"kernel / vmlinuz root = / dev / sdb5 video = radeonfb fbcon = scrollback: 128".

De ce să eliminați opțiunea „vga = xxx”? Din cauza posibilelor conflicte cu opțiunea video. Pe adaptorul meu ATI, nu pot schimba tamponul de defilare dacă este afișat „vga = xxx”. Poate că nu este cazul dumneavoastră. Dacă opțiunile de mai sus funcționează bine; dar ce se întâmplă dacă doriți să creșteți numărul de linii sau să setați un font mai mic pe ecran? Întotdeauna ai făcut-o cu opțiunea „vga = xxx” - și a dispărut. Nu vă faceți griji - același lucru se poate realiza prin modificarea parametrilor fbcon așa cum este descris în fișierul „fbcon.txt” (dar nu este tratat în acest articol). Ubuntu și Debian au o modalitate mai convenabilă: „dpkg-reconfigure console-setup”. Merită să utilizați această comandă și pentru că înlocuiește, de asemenea, „initrd” la noile setări.

2. Extinderea limitelor

Opțiunea „fbcon = scrollback: 128” vă oferă posibilitatea de a naviga în tamponul de defilare 12-13 ecrane. Adică aproximativ 150 de linii - destul de bine, dar poate nu suficient pentru a vedea încă toate mesajele de boot. Pot să pun mai mult de 128, să zicem 256? Limita este 128 în „vc.c”. Dacă doriți mai multe, editați și compilați. Pentru mine, am decis că jocul nu merită lumânarea.

Când am decis complet că am atins limita cea mai înaltă - citez din „fbcon.txt”:
fbcon = scrollback: [k]
...
Sufixul „k” este opțional și va înmulți „valoarea” cu 1024.
(Sufixul „k” este opțional și va înmulți „valoarea” cu 1024 de ori).
M-am repezit sa verific .. si orice ar fi crezut autorul despre asta, eram convinsa ca 128 si 128k dau exact acelasi rezultat. Limita implicită este de 128 KB de memorie, asta este toată povestea.

În cele din urmă, rețineți că utilizarea tamponului de defilare extins folosește atât memoria grafică, cât și memoria tampon din RAM. Dacă sunteți mulțumit cu 32KB implicit, utilizați doar memoria adaptorului video. În practică, însă, nu am observat nici cea mai mică încetinire.

3. Ce lipsește din jurnalele?

Pe Ubuntu și Debian și alte distribuții, toate mesajele de sistem sunt stocate în fișierul „/ var / log / mesaje”. Acest lucru se aplică chiar dacă serviciul de înregistrare (daemon) nu este vechiul „syslog”, ci „syslog-ng” („ng”: „nouă generație”/nouă generație/).

În ambele cazuri, puteți vizualiza mesajele tastând „dmesg” la linia de comandă. Acest lucru nu ajută: ați văzut clar în timpul încărcării mesajele care nu sunt în ieșirea comenzii „dmesg”. Cum așa?

Aceasta este o proprietate, nu un bug! Mesajele înregistrate în fișier provin din diferite subsisteme ale sistemului de operare. Subsistemele care scot mesaje în fișierul jurnal sunt denumite „facilități” în terminologia syslog, există doar 8 dintre ele. În timpul procesului de pornire, rulează programe și scripturi, care este posibil să nu aparțină niciunuia dintre cele 8 „instrumente”. Vedem mesajele lor derulând pe ecran, dar nimic nu va fi înregistrat în fișierul jurnal!

De exemplu, nu veți vedea mesaje de la „loadkeys” (openSUSE) sau „consolechars” (Ubuntu și Debian) atunci când aspectul tastaturii este încărcat în momentul pornirii. Un alt exemplu: atunci când utilizați un editor de text consolă, puteți derula înapoi pe afișaj (inclusiv culorile) folosind tamponul de defilare. Dar ceea ce produce editorul nu va intra niciodată în niciun protocol de sistem. Motivul, desigur, este că nici „loadkeys”, nici „consolechars”, nici editorul nu aparțin niciunuia dintre cele 8 „tools”.

Se poate schimba situatia? Desigur - „doar” refaceți și recompilați aplicațiile pe care doriți să le conectați. Adăugați sau rescrieți scripturi de pornire. Sau forțați sistemul să capteze mesaje din afara celor 8 „instrumente” ale sistemului.

Pun pariu că nu vei face asta. Și chiar știu răspunsul tău probabil:
- "Nimic nu dispare din jurnalele mele." Da, desigur...

Dacă ți-a plăcut articolul, distribuie-l prietenilor tăi:

Screen este un program foarte util dacă lucrați des în consolă conectându-vă la server prin SSH. În acest caz ecran vă permite să păstrați mai multe ecrane diferite într-o singură consolă, comutând convenabil între ele.

Ecranul vă permite să vă deconectați de la SSH în timp ce salvați joburile care rulează pe serverul de la distanță.

Pentru a instala pe Ubuntu, trebuie să rulați comanda

$ sudo apt-get install screen

După aceea, trebuie să rulați ecranul:

ecran $

După pornire, veți vedea fie un prompt de linie de comandă, fie un „ecran de bun venit” apăsând SPACE sau ENTER în care veți fi, de asemenea, dus la shell. În acest caz, toate comenzile vor fi lansate deja „în interiorul” ecranului.

Pentru a ieși din ecran (ieșire, nu detașare) este suficient să ieșiți din toate shell-urile deschise din acesta sau să apăsați combinația de taste Ctl-a \ și să răspundeți „y” la întrebarea „chiar doriți să ieșiți” . ..

Vă puteți deconecta de la ecranul curent fără a închide sau a încheia sesiunea apăsând Ctrl-a d.

Conexiune la ecran

Dacă aparatul are deja o sesiune de ecran care rulează și doriți să vă conectați la ea, atunci

  1. dacă există o singură sesiune, este suficientă doar comanda: $ screen –x
  2. dacă există mai multe sesiuni, atunci: puteți vizualiza lista de ecrane care rulează folosind comanda screen -ls: $ screen -ls Există ecrane pe: 2762.pts-0.debian (Detașat) 2743.pts-0.debian ( Detasat) 2 prize in / var / run / screen / S-diesel.

    Selectați ecranul de care avem nevoie și atașați-l:

    Ecran -x 2762.pts-0.debian

    Numele sesiunilor nu sunt foarte informative în mod implicit - doar procesați numere, dacă doriți să începeți și să utilizați mai multe sesiuni de ecran pentru diferite sarcini, puteți veni cu nume mai sănătoase. Venim cu un nume, apoi începem un nou ecran ca acesta:

    $ ecran -S „job1”

    unde job1 este numele sesiunii noastre numite. Acum în -ls vom vedea mult mai clar:

    $ screen -ls Există ecrane pe: 2762.pts-0.debian (Detașat) 2795.job1 (Detașat) 2743.pts-0.debian (Detașat) 3 Sockets in / var / run / screen / S-diesel.

    și ne putem conecta la sesiunea job1 pur și simplu specificând numele acesteia:

    $ ecran -x job1

Comutarea între ecrane

După cum ați înțeles deja, sesiunile sunt salvate chiar și atunci când sunteți deconectat de la server și tot ce rulează în ele continuă să ruleze. Cu toate acestea, posibilitățile ecranului nu se limitează la asta. Uneori, când lucrez prin ssh, îmi doresc foarte mult ca mai multe terminale să fie deschise simultan, în timp ce conectarea de mai multe ori este o dezamăgire - mai ales dacă trebuie să vă conectați prin mai multe servere. Ecranul poate ajuta și cu asta. Doar apăsați Ctrl - a c și se va deschide un alt shell. Vă puteți deplasa între shell-uri deschise fie prin Ctrl - a<Цифра>, Unde<Цифра>- numărul shell-ului deschis, începând de la zero, sau Ctrl - a n / Ctrl - a p - înainte înapoi. Puteți obține o listă de „ferestre” deschise - console (și comutați la cea de care aveți nevoie) apăsând Ctrl - a „; pentru a da un nume normal (nu doar „bash”) plictisitor pentru un fir de fereastră, accesați el și apăsați Ctrl - a A (cazul contează), apoi introduceți numele la promptul care apare.

Monitorizarea executiei comenzii

Dacă sunt deschise mai multe ferestre, poate fi util să poți monitoriza activitatea într-una dintre ele. De exemplu, dacă rulați o comandă „de lungă durată” și sunteți curios să știți când se va termina. Mergeți la fereastra cu această comandă, apăsați Ctrl - a m, vedem o inscripție ca aceasta: „Fereastra 0 (bash) este acum monitorizată pentru toată activitatea”. Când ceva în fereastră se schimbă, ecranul va emite un bip și un simbol „@” apare după numărul din lista de ferestre.

Derularea ecranului în ecran

Pentru a vizualiza ieșirea comenzii care a depășit marginile ferestrei, apăsați Ctrl-a [

Aceasta va comuta ecranul în modul Copiere. Pentru a ieși din acest mod, trebuie doar să apăsați Esc.

Configurarea ecranului

Ecranul este configurat cu fișierul ~ / .screenrc din directorul dvs. de pornire. De exemplu, puteți scrie acolo:

Subtitrare întotdeauna „% (= 45)% (+ bw) Ecran:% n |% h% =% t% c" hardstatus întotdeauna ultima linie "% -Lw% (= BW)% 50>% n% f *% t% ( -)% + Lw%<"

Acest lucru vă va oferi o listă vizibilă permanentă de ferestre deschise și alte informații utile în partea de jos a ecranului.

De asemenea, când pornește Screen, în mod implicit, sunt executate comenzile din fișierul / etc / screenrc și fișierul .screenrc din directorul de acasă al utilizatorului. Multe comenzi care pot fi folosite în fișierele de configurare au fost discutate în tabelele de mai sus în câmpul „Comandă text”. Mai jos este un exemplu de configurare a ecranului dintr-un fișier .screenrc:

# Dezactivează ieșirea informațiilor de licență la pornire Screen startup_message off # Deschide un shell pentru a funcționa ecranul chdir -t Work # Deschide un shell pentru gestionarea configurației chdir / etc ecran -t Configurație # Deschide un shell pentru vizualizarea jurnalelor chdir / var / ecranul de jurnal -t Jurnalele # Selectați prima fereastră după pornire, selectați 0

Acest fișier de configurare destul de simplu deschide trei ferestre numite Work, Configuration, Logs, respectiv, în directorul personal al utilizatorului, în directorul / etc și în directorul / var / log. După lansare, ecranul va afișa prima fereastră numită Work. Figura 1 arată un exemplu despre cum funcționează Screen cu acest fișier de configurare.

Finalizarea ecranului

Dacă dintr-un motiv oarecare sesiunea de ecran nu răspunde, o puteți încheia. Pentru a face acest lucru, trebuie să vă conectați la sesiunea dorită, apoi apăsați Ctrl - a și introduceți comanda „: ieșiți”.

Ecranul va încheia această sesiune prin închiderea forțată a tuturor ferestrelor.

Lucrul cu ecranul

Una dintre caracteristicile principale ale Screen este crearea și gestionarea mai multor ferestre de consolă sau aplicații bazate pe text într-o singură fereastră de terminal. Doar una dintre ferestre poate fi pe ecranul terminalului la un moment dat (pot fi mai multe doar dacă împart ecranul terminalului în părți). Ecranul vă permite să comutați rapid între ferestre, să salvați și să reveniți ulterior la o sesiune de text și să deschideți accesul la aceasta pentru alți utilizatori. În plus, Screen vă permite să oferiți titluri Windows, să urmăriți activitatea în fiecare fereastră și să partajați conținutul ferestrei folosind copierea și inserarea. În plus, Screen vă permite să remapați cheile, să controlați setările de emulare a terminalului și multe alte sarcini mici din fereastră de text care ar putea să nu fie necesare permanent, dar care vă pot ajuta să efectuați lucrări administrative în anumite momente.

Figura prezintă un Ecran cu trei ferestre numite (Work, Configuration, Logs) și deschis în el cu un editor de text Vim, cu un exemplu de fișier de configurare Screen.

Primul start

Ecranul poate fi pornit cu linia de comandă a ecranului, dar mai întâi de toate, verificați dacă Screen este instalat pe sistemul dvs. cu următoarea comandă:

$ care ecran / usr / bin / ecran

Dacă comanda a returnat calea ca în exemplul de mai sus, puteți începe să o utilizați imediat, altfel Screen poate fi instalat de instrumentele standard de suport pentru pachete ale sistemului dvs. de operare sau descărcat de pe site-ul oficial http://www.gnu. org/software/ecran/.

Acum putem porni Screen prin simpla tastare:

ecran $

După lansare, pe ecran pot apărea informații despre versiune și licență (când avem în vedere configurația, vom lua în considerare modul în care puteți anula afișarea acestui mesaj) și în acest caz trebuie să apăsați tasta „Spațiu” sau „Enter” , după care intrăm în aparent obișnuit , un text wrapper. Trebuie remarcat faptul că în linia de comandă puteți specifica imediat o comandă pentru a porni o anumită aplicație, de exemplu, pentru a porni de sus, trebuie să tastați:

$ partea de sus a ecranului

Ok, acum Screen rulează, dar la prima vedere, nu există modificări externe - putem lucra într-un shell care rulează sau putem folosi top. Trucul este că, în timp ce Screen rulează, trece toate tastele direct către aplicație, dar ( implicit) lasă comenzile de control pentru dvs., începând cu combinația de taste Ctrl + a.

Această combinație de taste de control poate fi modificată prin fișierele de configurare (pe care le vom analiza mai jos), dar în toate exemplele, va fi luată în considerare doar configurația implicită. Astfel, toate comenzile de la tastatură pe ecran constau din două comenzi rapide de la tastatură - controlul Ctrl + a și tasta în sine, sau o comandă rapidă de la tastatură reprezentând comanda. Aproape fiecare comandă are, de asemenea, propriul său omolog textual, care poate fi executat fie printr-un fișier de configurare, fie rulând următoarea comandă:

În acest caz, trebuie să executăm două comenzi rapide de la tastatură, mai întâi apăsând Ctrl + a și apoi tasta două puncte. În același timp, ecranul va afișa un prompt de două puncte în partea de jos a ecranului. Aceeași comandă pe care tocmai am rulat-o cu o comandă rapidă de la tastatură poate fi executată prin fișierul de configurare folosind comanda text cu două puncte, care poate fi, de exemplu, necesară pentru a afișa un prompt de comandă la pornire sau pentru a reatribui comanda rapidă de la tastatură care invocă această solicitare. . Mai jos, ca în exemplul de mai sus, pentru fiecare combinație de taste, voi scrie cuvintele cheie corespunzătoare care pot fi folosite în fișierele de configurare, sau introduse cu Ctrl + a și :.

O întrebare firească poate apărea aici - ce se întâmplă dacă aplicația trebuie să treacă direct Ctrl + o combinație de taste, care este deja folosită în Screen ca serviciu? De exemplu, aceeași combinație este folosită de biblioteca de editare a liniei de comandă readline pentru a sări la începutul unei linii. În acest caz, Screen oferă următoarea comandă:

Gestionarea ferestrelor

În secțiunea anterioară, am învățat cum să lansăm Screen și am învățat șablonul de bază pentru toate comenzile de la tastatură. Este timpul să descoperiți comenzile pentru gestionarea ferestrelor. Când pornește Screen, acesta creează o fereastră (cu excepția cazului în care configurația specifică crearea mai multor ferestre simultan) și îi atribuie numărul 0. O nouă fereastră cu un shell de comandă poate fi creată folosind comanda de mai jos:

COMBINAȚIE DE CHEI COMANDA TEXT DESCRIERE
Ctrl + a c ecran Creați o nouă fereastră

Ecranul va crea o nouă fereastră și îi va atribui următorul număr consecutiv, în cazul nostru noua fereastră va fi fereastra numărul 1.

Avem acum două ferestre de text, dintre care fereastra nou creată cu numărul 1 este cea actuală, iar fereastra cu numărul 0 este în fundal. Dar, trebuie remarcat faptul că, chiar dacă fereastra este în fundal, poate percepe ieșirea aplicației care rulează în ea ca și cum ar fi curentă. De exemplu, am putea începe un proces în fereastra 0 care scoate informații suplimentare la intervale regulate (de exemplu, aceasta ar putea fi comanda tail -f) și apoi trece la fereastra 1 pentru a lucra într-un editor de text. După un timp, dacă vrem să vedem ce se întâmplă în fereastra 0, putem trece la această fereastră și putem vedea toate rezultatele procesului care rulează acolo. Apoi puteți reveni la fereastra de editare.

În paragraful anterior, am descris un exemplu de comutare între ferestre, dar încă nu am spus ce comenzi sunt folosite pentru aceasta. Să aruncăm o privire mai atentă la comenzile cele mai frecvent utilizate pentru gestionarea ferestrelor:

COMBINAȚIE DE CHEI COMANDA TEXT DESCRIERE
Ctrl + a w ferestre Afișează o listă de numere și titluri ale tuturor ferestrelor în linia de jos a ecranului
Ctrl + a « listă ferestre Afișează o listă interactivă de numere și titluri ale tuturor ferestrelor din care puteți selecta o fereastră pentru a comuta
Ctrl + a Numărul ferestrei Selectați Selectarea ferestrei după număr. De exemplu, comanda Ctrl + a și 0 face fereastra curentă cu numărul 0
Ctlr + a n Următorul Treceți la următoarea fereastră în ordine, sau la prima fereastră dacă am fost în ultima fereastră
Ctrl + a p prev Treceți la fereastra anterioară în ordine, sau la ultima fereastră dacă eram în prima fereastră
Ctrl + a Selectați Afișați o solicitare pentru a introduce numărul ferestrei pentru a comuta
Ctrl + a Ctrl + a alte Comutați la ultima fereastră folosită
Ctrl + a N număr Afișați numărul și titlul ferestrei curente
Ctrl + a A titlu Setați titlul ferestrei curente
Ctrl + a k ucide Închiderea forțată a unei ferestre, de exemplu, dacă aplicația nu poate fi închisă în mod obișnuit

Când una dintre ferestre este închisă, numerele altor ferestre nu se schimbă și în numerotare apar „găuri”, care ulterior pot fi umplute cu ferestre noi. Deși Screen are o comandă pentru schimbarea numărului ferestrei, aceasta nu este luată în considerare aici și este lăsat pentru studiu independent. Dacă toate ferestrele sunt închise, ecranul iese și afișează un mesaj:

Lucrați cu text

Mai sus, am învățat cum să lansăm Screen și să gestionăm ferestrele - creați-le, comutați de la fereastră la fereastră, atribuiți nume și închideți-le. Acum să ne uităm la lucrul cu conținutul ferestrelor - copierea și lipirea conținutului text al unei ferestre în alta, monitorizarea ferestrelor, salvarea unei copii text a ecranului și alte sarcini similare:

COMBINAȚIE DE CHEI COMANDA TEXT DESCRIERE
Ctrl + a M monitor Activați/dezactivați monitorizarea activității pentru fereastra curentă. Când monitorizarea este activată și textul este scos într-o fereastră în modul de fundal, informațiile despre activitate sunt afișate în linia de servicii.
tăcere Activați/dezactivați monitorizarea inactivității pentru fereastra curentă. Când monitorizarea este activată și nu este afișat niciun text într-o fereastră în modul de fundal pentru o anumită perioadă de timp, informațiile despre inactivitate sunt afișate în linia de serviciu.
Ctrl + a h pe suport de carton Scrieți imaginea text a ferestrei curente în hardcopy.window_number în directorul implicit Screen.
Ctrl + a H Buturuga Activați / dezactivați urmărirea textului ferestrei curente în fișierul screenlog.window_number din directorul Sccreen în mod implicit.
Ctrl + a [ copie Intrați în modul copiere. Comenzi suplimentare pentru acest mod sunt descrise mai jos.
Ctrl + a ] pastă Lipiți textul din registrul implicit în fereastră (unde a fost copiat anterior folosind comanda de mai sus).

În modul copiere, Screen lansează un editor de text similar cu editorul Vi. Cele mai frecvent utilizate comenzi ale editorului sunt:

  • Tastele cursor mută cursorul peste buffer-ul ecranului;
  • Bara de spațiu marchează începutul și sfârșitul regiunii de copiat. La a doua apăsare a „Spațiu”, textul marcat este copiat implicit în carcasă, iar ecranul iese din modul de copiere;

Mai multe ferestre pe ecran

În mod implicit, Ecranul lasă o singură fereastră logică vizibilă pe ecran, dar dacă se dorește, există o opțiune suplimentară pentru a împărți ecranul terminalului în regiuni orizontale. Astfel, este posibil să afișați mai multe ferestre simultan pe un ecran de terminal. Să aruncăm o privire mai atentă la comenzile pentru lucrul cu regiunile ecranului:

Figura 2 prezintă un ecran cu trei ferestre numite (Lucrare, Configurare, Jurnale) și un ecran împărțit în două regiuni. În regiunea superioară, fereastra de lucru este deschisă cu editorul de text Vim și un exemplu de fișier de configurare a ecranului. În regiunea inferioară, fereastra Configurare cu o parte din fișierul de configurare generală / etc / screenrc.

Sesiuni de consolă

În cele din urmă, vom arunca o privire la una dintre cele mai populare caracteristici ale Screen.Imaginați-vă următorul scenariu: un administrator de sistem de acasă se conectează la un server la distanță, deschide mai multe ferestre, pornește sarcinile necesare, apoi închide conexiunea și pornește la lucru . La serviciu, se conectează din nou la același server și restaurează ferestrele deschise acasă cu rezultatele sarcinilor finalizate. Sună puțin ciudat? În niciun caz! Sesiunile pe ecran console sunt concepute pentru a îndeplini această sarcină. Acestea vă permit să deconectați sesiunea curentă de ecran cu toate ferestrele și aplicațiile care rulează de pe terminal și apoi să vă reconectați în orice moment. În același timp, toate aplicațiile care rulează sub Screen vor continua să funcționeze și își vor folosi ferestrele pentru a afișa informații. În plus, pot exista mai multe sesiuni de consolă, dar în acest articol nu ne vom opri în detaliu asupra acestui lucru.

Luați în considerare comenzile pentru a deconecta sesiunea consolei de la terminal:

COMBINAȚIE DE CHEI COMANDA TEXT DESCRIERE
Ctrl + a d desprinde Detașați sesiunea de consolă și lăsați-o să ruleze în fundal. În același timp, Screen scrie:
Ctrl + a D D pow_detach Detașați sesiunea de consolă, lăsați-o să ruleze în fundal și trimiteți semnalul HANGUP procesului ecran părinte. Când lansați Screen de la un terminal la distanță, aceasta înseamnă deconectarea Screen și apoi închiderea conexiunii. În același timp, Screen scrie:
Ctrl + a z suspenda Detașați sesiunea consolei și lăsați-o să ruleze ca proces de fundal în shell-ul părinte. În acest caz, pentru a restabili sesiunea, pe lângă comenzile descrise mai jos, pot fi utilizate comenzile standard pentru gestionarea proceselor de fundal ale shell-ului de comandă
Ctrl + a Ctrl + părăsi Închideți toate ferestrele de sesiune și ieșiți din ecran. Trebuie remarcat faptul că multe distribuții suprascriu comanda rapidă de la tastatură pentru această comandă, dar comanda text poate fi folosită oricum

Pentru a vă alătura din nou la sesiunea deconectată sau pentru a vedea lista de sesiuni disponibile, trebuie să rulați Screen cu una dintre următoarele taste:

Ce urmeaza?

Ecranul are un număr mare de caracteristici diferite și este practic imposibil să le descriem pe toate într-un singur articol, așa că o parte din funcționalitate a fost lăsată în culise. Iată câteva funcții / setări ale ecranului care nu au fost discutate mai sus și rămân pentru studiu independent:

  • Comenzi de configurare a emulării terminalului;
  • Sesiuni de consolă multi-utilizator;
  • Atribuirea sau reatribuirea comenzilor rapide de la tastatură;
  • Opțiuni de ajutor pentru comandă text. De exemplu, opțiunea -t a comenzii ecran, care este utilizată în fișierul de configurare exemplu;
  • Comenzile care sunt utilizate rar, de exemplu, comenzile care pot fi folosite la configurarea Pornirii ecranului sunt echo și sleep;
  • Variabile de mediu care pot fi utile la configurarea ecranului;
  • Taste suplimentare de lansare a ecranului;

Alternative de ecran

Screen este un program cu o istorie lungă, trebuie remarcat faptul că prima versiune a apărut în 1987. Momentan, practic nu sunt adăugate funcții noi la Screen (unul dintre motive poate fi prezența unui număr mare de ele în acest moment) și, în general, sunt efectuate doar remedieri de erori. Dacă cuiva nu îi place „bătrânețea” relativă a ecranului sau nu are nevoie de un număr atât de mare de funcții, atunci puteți apela la unul dintre următoarele programe:

  • dtach () - accentul principal în dezvoltarea acestui program se pune pe compactitate. Prin analogie cu Screen, acceptă capacitatea de a lucra cu sesiuni de consolă, dar nu are celelalte capabilități Screen.
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) - vă permite să împărțiți ecranul terminalului în două jumătăți și să lucrați cu două shell-uri simultan.
  • Tmux () - Tmux folosește un model client-server pentru a lucra cu sesiunile de consolă.
  • Twin (http://linuz.sns.it/~max/twin/) - o încercare de a crea o interfață de fereastră text similară cu omologii săi grafici.

Subiectul trucurilor utile pentru lucrul în terminalul Linux este inepuizabil. S-ar părea că totul este aranjat foarte simplu: promptul shell-ului și comenzile introduse de la tastatură. Cu toate acestea, în această simplitate se află un abis de posibilități neevidente, dar utile. De aceea, publicăm în mod regulat materiale despre specificul lucrului în linia de comandă Linux. În special, astăzi va fi o traducere a unui articol, al cărui autor este dornic să economisească timp prin creșterea productivității muncii.

Dacă sunteți interesat să lucrați pe linia de comandă Linux, iată câteva dintre resursele noastre pe acest subiect:

  • [ +114 ] Cele mai utile trucuri pentru linia de comandă Linux
  • [ +70 ] 10 trucuri pentru terminalele Linux despre care puțini știu
  • [+65 ] Un instrument uimitor de util: lsof
  • [ +32 ] Linux: redirecționare
  • [ +29 ] Versiunea PDF a articolelor despre scripturile Bash

Tehnici de linie de comandă Linux și economie de timp

Ați văzut vreodată un coleg folosind niște comenzi simple Linux pentru a rezolva probleme care vă necesită câteva rânduri pentru a le rezolva? Trebuie să fie când s-a întâmplat asta, nu puteai decât să-ți spui: „Ei bine, nu contează! Nu știam că se poate face atât de ușor.”

În această postare, vă voi arăta câteva trucuri profesionale pentru linia de comandă Linux care vă vor economisi tone de timp și, în unele cazuri, vă vor scăpa de proasta dispoziție. Nu numai că, prietenii sau colegii tăi vor spune: „Păi trebuie să fie la fel!”, privindu-te. Aceste tehnici vă vor ajuta, de asemenea, să vă creșteți productivitatea personală, deoarece va trebui să introduceți mai puține comenzi și chiar să faceți mai puține clicuri de mouse.

Acest lucru nu înseamnă că aceste sfaturi Linux sunt doar pentru începători. Este posibil ca chiar și utilizatorii experimentați să găsească aici ceva util despre care nu știau, deși au folosit Linux de mulți ani. Linux se învață prin experiență. Atât propria ta experiență, cât și cea a altor oameni vor fi de folos.

Înainte de a începe, aș dori să subliniez că unele dintre metodele prezentate aici sunt specifice shell-ului.

0. Finalizarea comenzii folosind tasta Tab

Voi începe cu ceva destul de evident, dar foarte important: finalizarea comenzii folosind tasta Tab.

Când începeți să introduceți ceva în terminalul Linux, puteți apăsa tasta Tab, după care va fi afișat un prompt care conține un set de opțiuni de continuare care încep cu caracterele pe care tocmai le-ați introdus.

De exemplu, dacă intenționați să copiați un fișier numit my_best_file_1.txt, puteți pur și simplu să tastați cp m și să apăsați Tab pentru a vedea opțiunile pentru ca comanda să continue.


Folosind tasta Tab pentru completare automată

Tasta Tab poate fi folosită și pentru finalizarea comenzii.

1. Accesați ultimul director de lucru

Imaginați-vă că lucrați într-un director care nu este ușor de accesat și apoi ați schimbat într-un alt director situat într-un loc complet diferit. Apoi ați realizat că trebuie să vă întoarceți la directorul anterior. În acest caz, este suficient să utilizați următoarea comandă:

Cd -
Vă va duce la ultimul director de lucru. Acum, în astfel de situații, nu va mai fi nevoie să introduceți căi lungi sau să folosiți copy and paste.


Comutare ușoară între directoare

2. Reveniți la directorul principal

Această tehnică este, de asemenea, destul de evidentă. Puteți folosi comanda de mai jos pentru a reveni la directorul dvs. de acasă de oriunde:

Cd ~
Cu toate acestea, puteți reveni la directorul dvs. de acasă și mai repede cu comanda cd.

În majoritatea distribuțiilor Linux moderne, shell-ul este preconfigurat pentru a accepta comanda cd în acest fel. Acest lucru vă va economisi câteva apăsări de taste de pe tastatură.


Cel mai rapid mod de a accesa directorul dvs. de acasă

3. Afișarea conținutului directorului

S-ar putea să vă întrebați care este subtilitatea utilizării comenzii pentru a afișa conținutul unui director. Toată lumea știe că comanda ls -l servește acestui scop.

Dar asta este ideea. Aproape toată lumea folosește comanda ls -l pentru a lista conținutul directoarelor, în timp ce același lucru se poate face cu următoarea comandă:

Ll
Această comandă depinde de distribuția dvs. Linux și de configurația shell-ului, dar este foarte probabil să o puteți utiliza pe majoritatea distribuțiilor.


Folosind comanda ll în loc de comanda ls -l

4. Apelarea mai multor comenzi pe o linie

Imaginați-vă că trebuie să executați mai multe comenzi în secvență. Probabil, introduceți o comandă, apoi așteptați să se finalizeze, apoi introduceți următoarea?

Un separator de comenzi este util în această situație; (punct şi virgulă). Cu această abordare, puteți introduce mai multe comenzi pe o singură linie. În acest caz, spre deosebire de introducerea obișnuită a comenzilor, pentru a executa următoarea comandă, nu trebuie să așteptați finalizarea celei anterioare.

Comanda_1; comanda_2; comanda_3

5. Executarea mai multor comenzi pe o linie și condiția pentru finalizarea cu succes a comenzii anterioare

Am căutat doar o modalitate de a apela mai multe comenzi pe o singură linie. Acest lucru economisește timp. Dar dacă aveți nevoie, să zicem, când apelați două comenzi, astfel încât următoarea comandă să fie executată numai dacă cea anterioară se finalizează fără erori?

Imaginați-vă că doriți să construiți codul și apoi, dacă construirea are succes, să sunați la make?

În această situație, puteți utiliza separatorul &&. Acest separator asigură că următoarea comandă va fi executată numai dacă cea anterioară reușește.

Comanda_1 && comanda_2
Iată un exemplu bun de utilizare a &&:

Sudo apt update && sudo apt upgrade

6. Căutarea simplă și utilizarea comenzilor introduse anterior

Imaginează-ți că tu, acum câteva minute sau câteva ore, ai introdus o comandă lungă și ai nevoie din nou de acea comandă. Mai mult, problema este că nu vă amintiți exact această comandă.

Într-o astfel de situație, o căutare inversă te va salva. Această tehnică vă permite să căutați istoricul comenzilor după cuvinte cheie. Aici este suficient să folosiți combinația de taste Ctrl + R pentru a începe o căutare inversă și a introduce ceva legat de comandă. Sistemul va revizui istoricul comenzilor și va afișa comenzile corespunzătoare cererii introduse.

Ctrl + R termen_căutare
În mod implicit, va fi afișat un singur rezultat. Pentru a vedea mai multe rezultate care se potrivesc interogării dvs., va trebui să utilizați comanda rapidă de la tastatură Ctrl + R din nou și din nou. Pentru a ieși din modul de căutare inversă, apăsați Ctrl + C.


Căutare inversă în istoricul comenzilor

Rețineți că, în unele shell-uri Bash, puteți utiliza tastele Page Up și Page Down pentru a itera rezultatele căutării.

7. Deblocarea terminalului după ce ați apăsat accidental Ctrl + S

Este posibil să fiți obișnuit să utilizați comanda rapidă de la tastatură Ctrl + S pentru a salva fișiere. Dar dacă apăsați aceste taste în terminalul Linux, îl veți bloca.

Dacă mai devreme, pentru a corecta situația, trebuia să închideți și să reporniți terminalul - acum puteți respira ușor, nu va trebui să faceți acest lucru din nou. Pentru a aduce terminalul în stare de funcționare, trebuie doar să utilizați combinația de taste Ctrl + Q.

8. Deplasați-vă la începutul sau la sfârșitul unei linii

Imaginați-vă că introduceți o comandă lungă și undeva la mijloc vă dați seama că trebuie să schimbați ceva la început. Probabil că utilizați tastele săgeți pentru a vă deplasa mai întâi la începutul liniei și apoi înapoi la sfârșit.

Desigur, într-o astfel de situație, puteți folosi tastele Acasă și Sfârșit, dar, alternativ, folosind combinația de taste Ctrl + A puteți merge la începutul liniei, iar cu combinația de taste Ctrl + E - până la sfârșit .


Deplasați-vă la începutul sau la sfârșitul unei linii

Găsesc această metodă mai convenabilă decât utilizarea tastelor Acasă și Sfârșit, mai ales când lucrez pe un laptop.

9. Citirea fișierelor jurnal în timp real

Când trebuie să analizați fișierele jurnal în care o aplicație care rulează scrie date în timpul analizei, puteți utiliza comanda tail cu opțiunea -f.

Tail -f calea_la_log
Alternativ, puteți utiliza comanda grep în forma sa obișnuită pentru a afișa numai liniile care vă interesează:

Coada -f calea_la_log | grep search_term
Puteți folosi și opțiunea F aici. Acest lucru va face ca utilitarul tail să continue să ruleze chiar dacă fișierul jurnal care este vizualizat este șters. Cu această abordare, dacă acest fișier este creat din nou, tail va continua să afișeze datele din acesta pe ecran.

10. Citirea fișierelor jurnal comprimate fără a le despacheta

Jurnalele de server sunt de obicei comprimate cu gzip pentru a economisi spațiu pe disc. Acest lucru poate duce la unele neplăceri atunci când analizați jurnalele de către dezvoltatori sau administratorii de sistem. Este posibil să fie nevoie să utilizați comanda scp pentru a copia fișierul în directorul local și apoi extrageți fișierul din arhivă pentru a-l vizualiza, deoarece este posibil să nu aveți permisiunea de scriere unde este stocat fișierul care vă interesează.

Aici suntem ajutați de un grup de comenzi, al căror nume începe cu litera „z”. Aceste comenzi sunt o alternativă la comenzile obișnuite utilizate pentru lucrul cu fișierele jurnal. Printre ei se numără mai puțin, pisica, grep și altele.

Deci, folosind comenzile zless, zcat, zgrep și altele asemenea, nu trebuie să despachetați în mod explicit fișierele comprimate. Detalii despre aceste comenzi pot fi găsite.

Apropo, când i-am spus unui coleg despre aceste comenzi „secrete”, am luat o cafea.

11. Utilizarea comenzii less pentru a citi fișiere

Dacă trebuie să vizualizați un fișier, în special unul mare, puteți încerca cat, dar este mult mai bine să căutați în altă parte. Ideea este că pisica va afișa întregul fișier, ceea ce nu este atât de convenabil.

Puteți folosi editori precum Vi sau Vim în terminal pentru a vizualiza fișierele, dar dacă trebuie doar să citiți un fișier, less este o comandă grozavă.

Mai puțin path_to_file
În timpul unei sesiuni cu mai puțin, puteți căuta fragmentele de text dorite după cuvinte cheie, puteți naviga prin pagini, puteți afișa date cu numere de rând și așa mai departe.

12. Reutilizați ultimul element din comanda anterioară cu! $

În multe situații, este foarte util să poți folosi argumentul comenzii anterioare.

Să presupunem că trebuie să creați un director și apoi să navigați la el. Aici puteți folosi opțiunea! $ introducând comanda jump după comandă pentru a crea un director.


Folosind! $ Pentru a utiliza ultimul argument de comandă

Mai bine, faceți același lucru cu comanda rapidă de la tastatură Alt +. (punct). Perioada poate fi folosită de mai multe ori pentru a itera opțiunile ultimei comenzi.

13. Folosind comanda anterioară în comanda curentă cu !!

Prin utilizarea!! puteți apela întreaga comandă anterioară. Această tehnică este utilă mai ales atunci când trebuie să executați o comandă și se dovedește că aveți nevoie de privilegii de superutilizator pentru a o executa. De exemplu, figura de mai jos arată o situație în care sudo !! economisește mult timp.


Profită !!! pentru a înlocui ultima comandă ca argument

14. Utilizarea alias-urilor pentru a corecta erorile de tastare

Este posibil să fiți deja familiarizați cu comanda alias. Poate fi folosit pentru a remedia erorile din comenzile introduse.

De exemplu, se poate întâmpla să tastați adesea gerp în loc de grep. Dacă nu puteți face față unui obicei prost, scrieți aliasul în fișierul bashrc după cum urmează:

Alias ​​gerp = grep
Acum nu trebuie să tastați din nou această comandă dacă îi introduceți incorect numele.

15. Copiați și lipiți în terminalul Linux

Acest sfat este oarecum controversat, deoarece depinde de distribuția Linux și de terminal.

Dar, de obicei, comenzile de copiere și inserare pot fi numite astfel:

  • Selectați textul de copiat și faceți clic dreapta pentru a-l lipi (funcționează în Putty și alți clienți Windows SSH).
  • Selectați textul de copiat, apoi faceți clic cu butonul central al mouse-ului (rotița de derulare) pentru a-l lipi.
  • Utilizați comenzile rapide de la tastatură Ctrl + Shift + C pentru a copia și Ctrl + Shift + V pentru a lipi.

16. Încheierea unei comenzi sau a unui proces

Poate că ceea ce vreau să vă sfătuiesc aici este destul de evident, totuși, vă voi spune despre asta oricum. Dacă o comandă rulează în prim-plan și doriți să ieșiți, puteți apăsa Ctrl + C pentru a o opri.

17. Utilizarea comenzii yes pentru a automatiza comenzi sau scripturi interactive

Dacă trebuie să lucrați cu unele comenzi sau scripturi care implică interacțiunea utilizatorului și știți că veți introduce Y ca răspuns la fiecare întrebare de program, puteți automatiza acest proces cu comanda yes. Acest lucru se face astfel:

Da | comandă_sau_script

18. Ștergerea conținutului unui fișier fără a șterge fișierul în sine

Dacă doriți să ștergeți conținutul unui fișier text fără a șterge fișierul în sine, puteți utiliza următoarea comandă:

> nume de fișier

19. Aflarea dacă directorul conține fișiere care conțin un anumit text

Linia de comandă Linux acceptă multe moduri de a găsi informații. Cu toate acestea, dacă trebuie doar să aflați dacă există fișiere într-un anumit director care conțin un anumit text, puteți utiliza această comandă:

Grep -Pri Search_Term calea_la_director
Cu toate acestea, sfatul meu pentru oricine caută căutare Linux este să înțeleagă comanda find.

20. Apelarea ajutorului pentru orice comandă

Vreau să închei acest material cu un „truc” foarte evident, dar totuși foarte important, care este invocarea ajutorului pentru un instrument de comandă sau linie de comandă.

Aproape toate instrumentele din linia de comandă conțin informații de ajutor care explică modul în care pot fi utilizate. De obicei, citirea ajutorului vă va ajuta să înțelegeți elementele de bază ale comenzii. Puteți apela ajutorul astfel:

Command_tool --help

În mod intenționat, nu am inclus comenzi precum fuck în acest material, deoarece nu sunt instrumente standard care pot fi găsite literalmente peste tot. Ceea ce tocmai am vorbit aici poate fi util atunci când lucrați cu aproape toate distribuțiile Linux și shell-urile de linie de comandă fără a fi nevoie să instalați noi programe.

161 Jane doh

Înțeleg că Sus / Jos vă va oferi istoricul comenzilor. Dar cum te uiți la rezultatele trecute derulând în sus și în jos?

Am folosit Shift + Page Up / Page Down, Alt + Shift + Sus / Jos și Page Up / Page Down, dar niciuna dintre acestea nu pare să funcționeze.

Aceasta este cutia Redhat Linux.

terminal linux rhel

14 răspunsuri

SHIFT + Pagina în sus și SHIFT + Pagina în jos. Dacă nu funcționează, încercați asta și atunci ar trebui:

Accesați programul terminal și asigurați-vă că Editați / Preferințe profil / Defilare / Derulare înapoi / Nelimitat
verificat.

Locația exactă a acestei opțiuni poate fi diferită undeva, dar văd că utilizați Redhat.

SHIFT + Page Up și SHIFT + Page Down sunt tastele corecte pentru a funcționa în consola virtuală, dar consola vmware nu are aceste setări de terminal. Consola virtuală are o dimensiune fixă ​​de defilare înapoi, se pare că este limitată de dimensiunea memoriei video conform acestei documentații de defilare a consolei virtuale Linux.

ALTERNATIVĂ PENTRU PROCESAREA LINE-LINE

Ctrl + Shift + Săgeată sus sau săgeată în jos

Spre deosebire de Shift + Page Up sau Page Down, care derulează întreaga pagină, acest lucru va ajuta la o defilare lină, care este exact ceea ce căutam.

O altă alternativă care poate fi deja instalată pe sistemul dumneavoastră este să utilizați ecranul GNU:

# Acesta pornește ecranul care adaugă gestionarea de bază a ferestrelor în ecranul terminalelor # Acesta pornește modul de copiere pe care îl puteți folosi pentru a derula [# Acum folosiți săgețile pentru a derula # Pentru a ieși din modul de copiere, faceți

Aruncă o privire la ecranul de manual pentru mai multe opțiuni utile (ferestre multiple, ...) ...

Se pare că acest lucru nu este ușor posibil: Arch Linux Wiki nu listează modalități de a face acest lucru pe consolă (deși este ușor posibil pe un terminal virtual).

Ctrl - b, apoi [, apoi puteți utiliza tastele de navigare normale pentru a derula (cum ar fi săgeata sus sau PgDn). Apăsați q pentru a părăsi modul de derulare.