Pipila ka mga pulong gikan sa among translation bureau: kasagaran ang tanan naningkamot sa paghubad sa pinakabag-o nga mga materyales ug publikasyon, ug kami dili eksepsiyon. Apan ang mga terminal dili usa ka butang nga gi-update kausa sa usa ka semana. Busa, gihubad namo alang kanimo ang usa ka artikulo ni Antoine Beaupré, nga gipatik sa tingpamulak sa 2018: bisan pa sa igo nga "edad" niini sa modernong mga sumbanan, sa among opinyon, ang materyal wala gayud mawala ang kalabutan niini. Dugang pa, kini sa sinugdan usa ka serye sa duha ka mga artikulo, apan nakahukom kami sa paghiusa kanila ngadto sa usa ka dako nga post.
Ang mga terminal adunay usa ka espesyal nga lugar sa kasaysayan sa kompyuter, apan sa bag-ohay nga mga dekada napugos sila nga mabuhi kauban ang linya sa mando samtang ang mga graphical nga interface nahimong ubiquitous.
Ang ubang mga terminal adunay mga katingad-an nga mga lungag sa seguridad, ug ang kadaghanan adunay usa ka hingpit nga lahi nga hugpong sa mga gimbuhaton, gikan sa suporta alang sa usa ka tab nga interface hangtod sa scripting. Bisan pa kami
Ania ang mga terminal nga akong gisusi:
Mahimong dili kini ang pinakabag-o nga mga bersyon, tungod kay limitado ako sa mga lig-on nga pagtukod sa panahon sa pagsulat, nga akong nahimo sa Debian 9 o Fedora 27. Ang bugtong eksepsiyon mao ang Alacritty. Kini usa ka kaliwat sa GPU-accelerated nga mga terminal ug gisulat sa usa ka talagsaon ug bag-ong pinulongan alang niini nga buluhaton - Rust. Wala nako giapil ang mga terminal sa web gikan sa akong pagrepaso (lakip ang sa
Suporta sa Unicode
Gisugdan nako ang akong mga pagsulay gamit ang suporta sa Unicode. Ang unang pagsulay sa mga terminal mao ang pagpakita sa Unicode string gikan sa
Sa kasagaran, ang xterm naggamit sa klasiko nga "fixed" nga font, nga, sumala sa
Kini nga mga screenshot gikuha sa Fedora 27, tungod kay naghatag kini og mas maayo nga mga resulta kay sa Debian 9, diin ang pipila ka mga daan nga bersyon sa mga terminal (ilabi na ang mlterm) dili makadumala sa mga font sa hustong paagi. Sa swerte kini naayo sa ulahi nga mga bersyon.
Karon matikdi kung giunsa ang linya gipakita sa xterm. Kini turns nga ang simbolo Mem ug ang mosunod nga Semitic
"Daghang mga programa sa kompyuter ang dili makapakita sa bidirectional nga teksto sa husto. Pananglitan, ang Hebreohanong ngalan nga "Sarah" naglangkob sa mga karakter nga sin (ש) (nga makita sa tuo), unya resh (ר) ug sa kataposan siya (ה) (nga makita sa wala)."
Daghang mga terminal ang napakyas niini nga pagsulay: Alacritty, VTE-derived Gnome ug XFCE terminals, urxvt, st ug xterm display "Sara" sa reverse order, nga daw gisulat namo ang ngalan nga "Aras".
Ang laing problema sa mga bidirectional nga mga teksto mao nga sila kinahanglan nga ipahiangay sa bisan unsang paagi, labi na kung bahin sa pagsagol sa mga teksto sa RTL ug LTR. Ang mga script sa RTL kinahanglan nga modagan gikan sa tuo nga bahin sa terminal window, apan unsa ang mahitabo sa mga terminal nga default sa LTR English? Kadaghanan kanila walay bisan unsang espesyal nga mekanismo ug gipahiangay ang tanan nga teksto sa wala (lakip ang Konsole). Ang mga eksepsiyon mao ang pterm ug mlterm, nga nagsunod sa mga sumbanan ug nag-right-align sa maong mga linya.
Proteksyon sa pagsulod
Ang sunod nga kritikal nga bahin nga akong nahibal-an mao ang proteksyon sa anti-insertion. Bisan kung nahibal-an sa kadaghanan nga ang mga spelling sama sa:
$ curl http://example.com/ | sh
mao ang code execution push commands, pipila ka mga tawo ang nahibal-an nga ang mga tinago nga mga sugo mahimong makalusot sa console kung magkopya ug mag-paste gikan sa usa ka web browser, bisan human sa maampingong pagsusi.
git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git
nahimong ingon nga kasamok kung i-paste gikan sa website ni Horn ngadto sa terminal:
git clone /dev/null;
clear;
echo -n "Hello ";
whoami|tr -d 'n';
echo -e '!nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!
Here'"'"'s the first line of your /etc/passwd: ';
head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git
Giunsa kini paglihok? Ang malisyoso nga code gilakip sa block , nga gibalhin gikan sa panglantaw sa user gamit ang CSS.
set enable-bracketed-paste on
Ikasubo, gipakita usab sa site sa pagsulay sa Horn kung giunsa ang paglaktaw sa kini nga proteksyon pinaagi sa pag-format mismo sa teksto ug sa wala pa matapos ang pag-apply sa Bracketed mode niini. Naglihok kini tungod kay ang pipila nga mga terminal dili husto nga nagsala sa mga han-ay sa pag-ikyas sa wala pa idugang ang ilang kaugalingon. Pananglitan, sa akoa wala gyud nako makompleto ang mga pagsulay sa Konsole bisan sa husto nga pag-configure .inputrc file. Nagpasabot kini nga dali nimo madaot ang configuration sa imong sistema tungod sa dili suportadong aplikasyon o sayop nga pagka-configure nga kabhang. Kini labi ka delikado kung mag-log in sa hilit nga mga server, diin ang mabinantayon nga pag-configure nga trabaho dili kaayo komon, labi na kung daghan ka sa mga hilit nga makina.
Ang usa ka maayong solusyon sa kini nga problema mao ang pag-paste sa pagkumpirma nga plugin alang sa terminal urxvt, nga yanong mangayo og pagtugot sa pagsal-ot sa bisan unsang teksto nga adunay mga bag-ong linya. Wala koy nakit-an nga mas luwas nga kapilian alang sa text attack nga gihulagway ni Horn.
Mga tab ug profile
Usa ka popular nga bahin karon mao ang suporta alang sa usa ka tabbed interface, nga atong ipasabut ingon nga usa ka terminal window nga adunay daghang uban pang mga terminal. Kini nga function lahi alang sa lain-laing mga terminal, ug bisan pa ang tradisyonal nga xterm terminal dili mosuporta sa mga tab, mas modernong terminal inkarnasyon sama sa Xfce Terminal, GNOME Terminal ug Konsole adunay niini nga function. Gisuportahan usab sa Urxvt ang mga tab, apan kung mogamit ka usa ka plugin. Apan sa mga termino sa suporta sa tab mismo, ang Terminator mao ang dili malalis nga lider: dili lamang kini nagsuporta sa mga tab, apan mahimo usab nga maghan-ay sa mga terminal sa bisan unsang han-ay (tan-awa ang hulagway sa ubos).
Ang laing bahin sa Terminator mao ang abilidad sa "pag-grupo" niini nga mga tab nga magkauban ug ipadala ang parehas nga mga keystroke sa daghang mga terminal sa parehas nga oras, nga naghatag usa ka krudo nga himan alang sa paghimo sa daghang mga operasyon sa daghang mga server nga dungan. Ang susama nga bahin gipatuman usab sa Konsole. Aron magamit kini nga bahin sa ubang mga terminal, kinahanglan nimong gamiton ang software sa ikatulo nga partido sama sa
Ang mga tab maayo kaayo kung gipares sa mga profile: pananglitan, mahimo kang adunay usa ka tab alang sa email, lain alang sa chat, ug uban pa. Gisuportahan kini pag-ayo sa Konsole Terminal ug GNOME Terminal. Gitugotan sa duha ang matag tab nga awtomatiko nga maglansad sa kaugalingon nga profile. Gisuportahan usab sa Terminator ang mga profile, apan wala ako makit-an nga paagi aron awtomatiko nga ilunsad ang pipila nga mga programa kung magbukas ka usa ka piho nga tab. Ang ubang mga terminal wala'y konsepto sa "profile" sa tanan.
Mga Ruffles
Ang kataposang butang nga akong hisgotan sa unang bahin niining artikuloha mao ang dagway sa mga terminal. Pananglitan ang GNOME, Xfce ug urxvt nagsuporta sa transparency, apan bag-o lang naghulog sa suporta alang sa mga hulagway sa background, nga nagpugos sa pipila ka tiggamit sa pagbalhin ngadto sa terminal
Ang ubang mga terminal nag-analisar usab sa teksto alang sa mga pattern sa URL aron mahimo nga ma-click ang mga link. Kini magamit sa tanang VTE-derived terminals, samtang ang urxvt nanginahanglan ug espesyal nga plugin nga magbag-o sa mga URL sa usa ka click o gamit ang keyboard shortcut. Ang ubang mga terminal nga akong gisulayan ang mga display URL sa ubang mga paagi.
Sa katapusan, usa ka bag-ong uso sa mga terminal mao ang opsyonalidad sa scroll buffer. Pananglitan, ang st walay scroll buffer; gituohan nga ang user mogamit ug terminal multiplexer sama sa tmux ug
Ang Alacritty kulang usab sa mga buffer sa backscroll, apan
Mga subtotal
Sa ikaduhang bahin sa materyal (sa orihinal kini mao ang duha ka lain-laing mga artikulo - gibanabana. lane) atong itandi ang performance, paggamit sa memorya ug latency. Apan makita na nato nga ang pipila sa mga terminal nga gikuwestiyon adunay grabeng kakulian. Pananglitan, ang mga tiggamit nga kanunay nga nagtrabaho sa mga script sa RTL mahimong gusto nga ikonsiderar ang mlterm ug pterm, tungod kay mas maayo sila sa pagdumala sa parehas nga mga buluhaton kaysa sa uban. Maayo sab ang performance sa Konsole. Ang mga tiggamit nga wala magtrabaho sa mga script sa RTL mahimong mopili og lain.
Sa mga termino sa pagpanalipod batok sa malisyosong pagsal-ot sa code, ang urxvt nagbarug tungod sa espesyal nga pagpatuman niini sa pagpanalipod batok niini nga matang sa pag-atake, nga morag sayon alang kanako. Alang niadtong nangita og pipila ka mga kampana ug whistles, ang Konsole angay tan-awon. Sa katapusan, angay nga hinumdoman nga ang VTE usa ka maayo kaayo nga sukaranan alang sa mga terminal, nga naggarantiya sa suporta sa kolor, pag-ila sa URL, ug uban pa. Sa una nga pagtan-aw, ang default nga terminal nga kauban sa imong paborito nga palibot mahimong makatagbo sa tanan nga mga kinahanglanon, apan biyaan naton kini nga pangutana hangtod nga masabtan naton ang pasundayag.
Ipadayon nato ang panag-istoryahanay
Sa kinatibuk-an, ang paghimo sa mga terminal sa iyang kaugalingon ingon og usa ka halayo nga problema, apan ingon nga kini nahimo, ang uban niini nagpakita sa katingad-an nga taas nga latency alang sa software sa ingon nga sukaranan nga tipo. Sunod usab atong tan-awon kung unsa ang tradisyonal nga gitawag nga "speed" (sa tinuud, kini ang katulin sa pag-scroll) ug pagkonsumo sa memorya sa terminal (uban ang caveat nga dili kini kritikal karon sama sa mga dekada na ang milabay).
Paglangay
Pagkahuman sa usa ka bug-os nga pagtuon sa pasundayag sa terminal, nakahinapos ako nga ang labing hinungdanon nga parameter niini nga bahin mao ang latency (ping). Sa iyang artikulo
Apan unsa ang latency, ug nganong importante kaayo kini? Sa iyang artikulo, gihubit kini ni Fatin nga "ang paglangan tali sa pagpindot sa usa ka yawe ug ang katugbang nga pag-update sa screen" ug gikutlo.
Gipatin-aw ni Fatin nga kini nga ping adunay mas lawom nga mga sangputanan kaysa sa katagbawan lamang: "ang pag-type mahimong mas hinay, daghang mga sayup ang mahitabo, ug ang tensiyon sa mata ug kaunoran nagdugang." Sa laing pagkasulti, ang usa ka dako nga paglangan mahimong mosangpot sa mga typo ug usab ubos nga kalidad sa code, tungod kay kini mosangpot sa dugang nga cognitive load sa utok. Apan ang labi ka daotan mao nga ang ping "nagpataas sa kakapoy sa mata ug kaunuran," nga ingon gipasabut
Ang pipila niini nga mga epekto nahibal-an na sa dugay nga panahon, ug ang mga resulta
Gipahigayon ni Fatin ang iyang mga pagsulay sa mga text editor; naghimo siya og madaladala nga instrumento nga gitawag
Ania ang mga resulta sa akong mga pagsukod, ingon man ang pipila sa mga resulta ni Fatin, aron ipakita nga ang akong eksperimento miuyon sa iyang mga pagsulay:
Ang una nga butang nga nakapahadlok kanako mao ang mas maayo nga oras sa pagtubag sa mga tigulang nga programa sama sa xterm ug mlterm. Uban sa pinakagrabe nga register latency (2,4 ms), mas maayo ang ilang performance kaysa sa pinakapaspas nga modernong terminal (10,6 ms para sa st). Walay modernong terminal nga ubos sa 10 millisecond threshold. Sa partikular, ang Alacritty napakyas sa pagtagbo sa "labing paspas nga terminal emulator nga magamit" nga pag-angkon, bisan kung ang mga marka niini milambo sukad sa una nga pagsusi niini sa 2017. Sa pagkatinuod, ang mga tagsulat sa proyekto
Bisan pa, ang mga kalainan mahimong dili mamatikdan sa mata. Sama sa gipatin-aw ni Fatin, "dili nimo kinahanglan nga mahibal-an ang paglangan aron kini adunay epekto kanimo." Si Fatin nagpasidaan usab mahitungod sa standard deviation: "bisan unsang mga kasamok sa latency (jitter) makamugna og dugang nga kapit-os tungod sa ilang dili matag-an."
Ang graph sa ibabaw gikuha sa lunsay nga Debian 9 (stretch) nga adunay
Katulin sa pag-scroll
Ang sunod nga pagsulay usa ka tradisyonal nga "speed" o "bandwidth" nga pagsulay, nga nagsukod kung unsa kadali ang terminal maka-scroll sa usa ka panid samtang nagpakita sa daghang mga teksto sa screen. Ang mga mekaniko sa pagsulay lainlain; ang orihinal nga pagsulay mao ang paghimo lamang sa parehas nga string sa teksto gamit ang seq command. Ang ubang mga pagsulay naglakip sa Thomas E. Dickey's (xterm maintainer) nga pagsulay, nga balik-balik
Dinhi atong makita ang rxvt ug st pull sa unahan sa kompetisyon, gisundan sa mas bag-o nga Alacritty, nga gidisenyo nga adunay pagtutok sa pasundayag. Sunod mao ang Xfce (pamilya sa VTE) ug Konsole, nga hapit doble nga paspas. Ang katapusan mao ang xterm, nga lima ka beses nga mas hinay kaysa rxvt. Atol sa pagsulay, ang xterm usab kusog kaayo, nga naghimo sa pagpasa sa teksto nga lisud makita bisan kung kini parehas nga linya. Ang Konsole paspas, apan kini lisud usahay: ang display mag-freeze matag karon ug unya, magpakita sa partial nga teksto o dili kini ipakita. Ang ubang mga terminal tin-aw nga nagpakita sa mga kuwerdas, lakip ang st, Alacritty, ug rxvt.
Gipasabut ni Dickey nga ang mga kalainan sa pasundayag tungod sa disenyo sa mga scroll buffer sa lainlaing mga terminal. Sa partikular, giakusahan niya ang rxvt ug uban pang mga terminal nga "dili pagsunod sa kinatibuk-ang mga lagda":
"Dili sama sa xterm, ang rxvt wala mosulay sa pagpakita sa tanan nga mga update. Kung kini mahulog sa luyo, kini magdumili sa pipila ka mga update aron maabut. Kini adunay mas dako nga epekto sa dayag nga scrolling speed kay sa internal memory organization. Ang usa ka disbentaha mao nga ang ASCII animation medyo dili tukma."
Aron ayohon kining gitan-aw nga xterm sluggishness, gisugyot ni Dickey ang paggamit sa kapanguhaan
Pagkonsumo sa kahinguhaan
Dili igsapayan kung makatarunganon nga ikonsiderar ang katulin sa pag-scroll ingon usa ka sukatan sa pasundayag, kini nga pagsulay nagtugot kanamo sa pag-simulate sa load sa mga terminal, nga sa baylo nagtugot kanamo sa pagsukod sa ubang mga parameter sama sa memorya o paggamit sa disk. Ang mga sukatan nakuha pinaagi sa pagpadagan sa espesipikong pagsulay seq ubos sa pagmonitor sa proseso sa Python. Gikolekta niya ang datos sa metro
Sa kini nga pagsulay, ang ST nag-una nga adunay labing ubos nga average nga konsumo sa panumduman nga 8 MB, nga dili ikatingala nga gikonsiderar nga ang panguna nga ideya sa disenyo kay kayano. Ang mlterm, xterm ug rxvt nagkonsumo og gamay pa - mga 12 MB. Ang laing talagsaong resulta mao ang Alacritty, nga nagkinahanglan og 30 MB sa pagdagan. Pagkahuman adunay mga terminal sa pamilyang VTE nga adunay mga numero gikan sa 40 hangtod 60 MB, nga daghan kaayo. Kini nga konsumo mahimong ipasabut sa kamatuoran nga kini nga mga terminal naggamit sa mas taas nga lebel nga mga librarya, pananglitan, GTK. Ang Konsole moabut sa katapusan nga adunay usa ka dako nga 65MB nga konsumo sa panumduman sa panahon sa mga pagsulay, bisan kung kini mahimong makatarunganon pinaagi sa labi ka halapad nga mga bahin niini.
Kung itandi sa miaging mga resulta nga nakuha napulo ka tuig na ang milabay, ang tanan nga mga programa nagsugod sa pagkonsumo sa labi pa nga memorya. Ang Xterm kaniadto nanginahanglan og 4 MB, apan karon nanginahanglan kini og 15 MB sa pagsugod pa lang. Adunay susama nga pagtaas sa konsumo alang sa rxvt, nga karon nanginahanglan 16 MB gikan sa kahon. Ang Xfce Terminal adunay 34 MB, nga tulo ka pilo nga mas dako kaysa kaniadto, apan ang GNOME Terminal nagkinahanglan lamang ug 20 MB. Siyempre, ang tanan nga nangaging mga pagsulay gihimo sa 32-bit nga arkitektura. Sa LCA 2012 Rusty Russell
Bisan pa, dili nako malikayan nga mobati nga ang paggahin ug dugang nga memorya sa usa ka butang nga sukaranan sama sa terminal usa ka pag-usik sa mga kapanguhaan. Kini nga mga programa kinahanglan nga ang pinakagamay sa pinakagamay, kinahanglan nga makadagan sa bisan unsang "kahon", bisan sa usa ka kahon sa sapatos, kung kita moabut sa punto diin sila kinahanglan nga masangkapan sa mga sistema sa Linux (ug nahibal-an nimo nga kini mahitabo. . Apan sa kini nga mga numero, ang paggamit sa memorya mahimong usa ka isyu sa umaabot sa bisan unsang palibot nga nagpadagan sa daghang mga terminal gawas sa pipila nga labing gaan ug labing limitado sa mga kapabilidad. Aron mabayran kini, ang GNOME Terminal, Konsole, urxvt, Terminator ug Xfce Terminal adunay Daemon mode nga nagtugot kanimo sa pagkontrolar sa daghang mga terminal pinaagi sa usa ka proseso, nga naglimite sa ilang konsumo sa memorya.
Atol sa akong mga pagsulay, nakaabot ko sa lain nga wala damha nga resulta bahin sa disk read-write: Nagdahum ako nga wala'y bisan unsa nga makita dinhi, apan nahimo nga pipila ka mga terminal ang nagsulat sa pinakadaghang data sa disk. Mao nga, ang VTE library sa tinuud nagtipig usa ka scroll buffer sa disk (kini nga bahin
konklusyon
Sa una nga bahin sa artikulo, nahibal-an namon nga ang mga terminal nga nakabase sa VTE adunay maayo nga hugpong sa mga bahin, apan karon nakita namon nga kini adunay pipila nga mga gasto sa pasundayag. Karon ang memorya dili usa ka isyu tungod kay ang tanan nga mga terminal sa VTE makontrol pinaagi sa usa ka proseso sa Daemon, nga naglimite sa ilang gana. Bisan pa, ang mga daan nga sistema nga adunay pisikal nga mga limitasyon sa kantidad sa RAM ug mga buffer sa kernel mahimo pa nga magkinahanglan sa nauna nga mga bersyon sa mga terminal, tungod kay gamay ra ang ilang gigamit nga mga kapanguhaan. Bisan tuod ang mga terminal sa VTE maayo ang nahimo sa throughput (scrolling) nga mga pagsulay, ang ilang display latency labaw sa threshold nga gitakda sa GNOME User Guide. Ang mga nag-develop sa VTE kinahanglan tingali nga tagdon kini. Kung atong tagdon nga bisan alang sa mga bag-ong tiggamit sa Linux nga nakasugat sa usa ka terminal dili kalikayan, mahimo nila kini nga mas mahigalaon sa user. Alang sa mga eksperyensiyado nga mga geeks, ang pagbalhin gikan sa default nga terminal mahimo’g nagpasabut nga dili kaayo pilay sa mata ug ang abilidad sa paglikay sa umaabot nga mga kadaot ug mga sakit nga may kalabotan sa trabaho tungod sa taas nga mga sesyon sa trabaho. Ikasubo, ang daan nga xterm ug mlterm lamang ang nagdala kanato sa magic ping threshold nga 10 milliseconds, nga dili madawat sa kadaghanan.
Gipakita usab sa mga pagsukod sa benchmark nga tungod sa pag-uswag sa mga graphical nga palibot sa Linux, ang mga developer kinahanglan nga maghimo daghang mga pagkompromiso. Ang ubang mga tiggamit tingali gusto nga motan-aw sa regular nga mga manedyer sa bintana samtang naghatag sila og mahinungdanong pagkunhod sa ping. Ikasubo, dili mahimo ang pagsukod sa latency alang sa Wayland: ang Typometer nga programa nga akong gigamit gihimo alang sa kung unsa ang gidesinyo sa Wayland aron mapugngan: pagpaniid sa ubang mga bintana. Nanghinaut ko nga ang pag-composite sa Wayland mas maayo kay sa X.org, ug nanghinaut usab ako nga sa umaabot adunay makakita og paagi sa pagsukod sa latency niini nga palibot.
Source: www.habr.com