Revizuind alte articole am dat peste această mică întrebare care mi-a provocat o mulțime de distracție, este adevărat că unul dintre primele lucruri pe care utilizatorii altor sisteme (cu excepția FreeBSD) le primesc în față este că nu folosim interfețele grafice. Ca să spun adevărul, mi s-a părut destul de curios și la începutul călătoriei mele GNU / Linux. Trebuie să recunosc că, de-a lungul timpului, folosesc linia de comandă mult mai mult decât orice alt program GUI și de multe ori prefer programele din linia de comandă decât programele mai elaborate cu interfețe GUI orbitoare.
Mitul
De fapt, acesta nu este altceva decât un mit urban, pentru că, spre deosebire de alte sisteme ale căror nume nu vor fi menționate aici, este în GNU / Linux unde aveți cu adevărat Libertad la alegere. Îmi doresc ca în alte sisteme să existe versatilitatea care există aici. Dar să aruncăm o privire mai aprofundată asupra acestei chestiuni, altfel multe lucruri nu sunt clare:
servere
Cu toții am auzit cuvântul Server, unii cred că sunt acele super-computere care alimentează Google sau Amazon sau cel din compania dvs. Dar realitatea este că a server de răspunde la o model de lucru. Folosim acest termen pentru a ne referi la faptul că avem un program disponibil utilizatorilor (clienții) și le dă ceva. Un exemplu de bază este Apache, care este folosit pentru servi pagini web pe internet. Acest program oferă html către clienții care o cer.
Server de imagini
Dar nu numai un server poate fi pe supercalculatoarele pe care Google și multe alte companii le fac posibile, chiar și „cel mai vechi” laptop poate fi un serverul, mai ales când vorbim despre imagini. Toți conducem un serverul de imagini din laptopurile noastre pentru a putea avea un ecran funcțional, în acest caz serverul și client sunt aceeași persoană. Cel mai frecvent exemplu este X
(cunoscut sub numele de xorg-server
în multe distribuții) și noul său înlocuitor Wayland
. Nu vom oferi o explicație detaliată a motivului pentru care organizația sau modul în care funcționează Wayland sau filosofiile care există în spatele acestor proiecte grozave, dar vom clarifica faptul că datorită lor putem avea un browser web precum Firefox sau Chrome sau multe alte programe.
Manager ferestre
Managerii de ferestre lucrează direct cu serverul de imagine, munca lor este de un nivel „mai scăzut”, deoarece gestionează (iertă redundanța) modul în care sunt create, modificate, închise ferestrele. Acestea sunt de obicei destul de simple și pe acestea se construiesc medii desktop. Lista este mare, dar voi lăsa aici doar ideea că sunt programe minimaliste, care permit un control destul de simplu al serverului de imagini.
Mediu desktop
Un set de software mai specializat, care nu numai că permite funcționarea serverului de imagini, dar oferă și capacități de personalizare. Dintre acestea, cele mai vechi și mai grele sunt KDE și GNOME, dar avem și medii mai ușoare precum LXDE sau Mate, Cinnamon etc.
CLI (Interfață de linie de comandă)
După o scurtă recenzie a lumii serverelor de imagini, ne întoarcem acum la subiectul nostru. CLI, implică tot acel program care este executat de linia de comandă git
, vim
, weechat
, sau bine, orice altceva îți vine în minte. Puteți vedea că vorbesc despre programe care, deși sunt executate în linia de comandă, arată un fel de „interfață grafică” precum weechat
o vim
. Pentru toți cei care nu le-au încercat, le recomand, sunt practic cele pe care le folosesc toată ziua.
De ce CLI este mai bun decât GUI
Să încercăm ceva destul de simplu 🙂 Zilele trecute am vrut să lucrez la un patch Portage (managerul de pachete Gentoo). Ca orice proiect bun de colaborare, numărul de linii de cod depășește 70k. Încercați să deschideți acest lucru într-un IDE cum ar fi NinjaIDE (Portage este scris în Python) și veți observa în curând că, pe măsură ce ecranul începe să se încarce, mașina dvs. devine extrem de lentă (cel puțin i7-ul meu a făcut-o) și asta încearcă doar să deschideți codul și treceți la culoarea implicită „ajutor”.
Acum încercați să faceți același lucru cu vim
, m-a încărcat într-o chestiune de miimi de secundă și, în același timp, a pus culorile „drăguțe” și orice altceva.
CLI a fost cu mult înainte
Unii aici vor spune că aceste programe sunt vechi, Îi numesc robust. Dacă ați putea vedea numărul de ore investite în construcție emacs
, vim
, gdb
, și sute de alte programe de consolă, pot observa că cantitatea de cod și funcționalitate este atât de mare încât practic au rezolvat deja tot ce aveau nevoie pentru a rezolva. Mulți GUI Pentru programele care sunt deja robuste în CLI, nu vor avea niciodată aceeași cantitate de funcționalitate, pur și simplu pentru că, dacă am crea o filă pentru fiecare subcomandă disponibilă, de exemplu git
, ne-am pierde între opțiuni și ar fi contraproductiv, deoarece ar îngreuna munca.
CLI este mai rapid
Magia începe cu cheia Tab
, acesta nu este doar cel mai bun prieten al tău atunci când răsfoiți desktop-urile din terminalul tău, dar atunci când este configurat corect, îți permite să scurtezi propozițiile lungi la 2 litere și o filă, 3 litere și o filă, sau chiar o literă și o Tab.
Dar acesta nu este singurul avantaj, cei dintre noi care ne-am luat timp să învățăm vim
o emacs
Putem spune că, deși curba de învățare este puțin mai mare decât cea a IDE-urilor din zilele noastre, în cele din urmă rezultatele productivității sunt uimitoare, nu ne putem imagina timpul care poate fi pierdut atunci când mutați un mouse. Având mâinile pe tastatură 90% din timp, nu numai că predă concentrarea, în plus, faptul de a tasta atât de mult pe tastatură te face destul de agil și productiv. Și acum ne întoarcem la punctul anterior, după ce ne-am alăturat atât de mult timp, astfel de programe au deja toate funcționalitățile la care cineva s-ar putea gândi, ne vine în minte o zicală destul de comună pentru cei dintre noi care folosim vim:
Dacă utilizați mai mult de 4 taste, este posibil să existe o modalitate mai bună.
Simplu, dar puternic, vim vă permite să faceți totul cu numărul mare de taste și combinații posibile, nu se oprește niciodată învățarea, dar este, de asemenea, adevărat că, pentru a-l utiliza, nu este necesar să le cunoașteți pe toate, aproximativ 10 sau 15 sunt suficiente pentru a începe fii mai productiv.
CLI vă oferă control complet
Când se execută operații cu mouse-ul sau programe de pe serverul de imagine, toate configurațiile suplimentare care sunt executate în momentul clicului nu sunt întotdeauna prezente, acest lucru nu se întâmplă cu terminalul, aici aveți puterea absolută a ceea ce este executat sau nu, cu ce opțiune sau în ce măsură. În timp îți dai seama că ai nevoie de mai puțin decât crezi și asta te ajută să faci lucrurile într-un mod mai concentrat.
GUI are și el propriul său lucru
Nu am de gând să spun că ar trebui să folosim CLI cu toții întotdeauna, nici acest lucru nu este ideal, eu însumi folosesc GUI aproape tot timpul, pentru a scrie această postare folosesc Chrome-ul meu și pentru a-mi vedea e-mailurile folosesc Evolution (deși folosesc și eu mutt
destul de recent). Și cred că acesta este cel mai mare mit dintre toate ... că oamenii cred că GNU / Linux doar le pune capăt, îmi place mediul meu desktop, este destul de minimalist, dar îmi place așa 🙂 Și de obicei am doar două sau trei programe care rulează, Chrome, Evolution și terminalul meu 🙂
Acestea sunt câteva dintre motivele pentru care îmi plac atât de mult CLI-urile și de ce vă invit să le încercați, mai târziu ar putea ajunge ca mine folosind mai multe CLI-uri decât GUI than Salutări
«Ca orice proiect de colaborare bun, numărul de linii de cod depășește 70k. Această parte m-a făcut prea zgomotos. Există o imposibilitate tehnică de ce codul trebuie compactat în același fișier? Nu ar fi mai bine să separați comportamentul în diferite entități (fișiere / clase / module)?
Nu pare a fi un motiv valabil pentru a impune o tehnologie peste alta, pentru a lăsa deoparte avantajele pe care le propune din cauza lipsei sub formă de dezvoltare. În orice caz, vorbesc fără să știu la ce proiect anume se referă, există o cauză mai mare care forțează acel mod de lucru
Buna,
Ei bine, poate că acest lucru necesită un pic de explicații, dar ceea ce eu numesc „proiect bun” implică faptul că numărul de linii exprimă faptul că este o comunitate sănătoasă care continuă să crească. Există proiecte cu un număr mult mai mic de linii, dar destul de sănătoase în dezvoltarea lor. Pentru a spune adevărul, da, portajul este împărțit în cât mai multe fișiere posibil, dar este întotdeauna necesar să păstrați porțiuni grupate împreună, cum ar fi biblioteci, sau comutatoare care duc la destul de multe alte funcții. Dar atunci când importați un proiect în multe IDE astăzi, asta implică faptul că acesta va citi toate fișierele din proiect și va încerca să pună formatul „vizual” corect.
Sper să o fac un pic mai clară 🙂 și mulțumesc pentru comentarii.
În ceea ce priveşte
Folosiți linia de comandă? Da, dar numai atunci când este cazul. Adică atunci când este mai confortabil și mai rapid. De exemplu, dacă vreau să instalez un anumit program, îmi este mai convenabil să introduc sudo apt install programname decât să deschid un manager de software, să-l căutez, să îl marcați pentru instalare și să apăsați „instalare”. Dar, în general, acest lucru nu este cazul. De exemplu: dacă vreau să copiez cele 20 de melodii care îmi plac cel mai mult dintr-un director în altul, este foarte confortabil să faceți Ctrl + Click în timp ce examinați cu calm o listă imensă dintr-un manager de fișiere și apoi trageți și fixați. Un alt exemplu: dacă vreau să partiționez un disc, este mult mai bine să îl fac prin gparted (un program care execută o multitudine de comenzi în timp ce vă arată grafic cum va fi discul) decât să îl faceți manual. Lista ar putea fi nesfârșită. GUI pot (de fapt, de obicei) să facă munca mult mai ușoară, pe lângă adăugarea de funcționalități care pentru o anumită aplicație cli ar putea fi imposibile
Ei bine, asta depinde de cât de confortabil ești cu linia de comandă ... de exemplu:
find dir/musica -name "archivo" -exec grep cp {} dir/nuevo \;
cu un pic de magie în bash puteți face chiar și o funcție care execută același lucru doar punând numele melodiei:
Ceva asemănător cu
mover(){
find dir/musica -name $1 -exec grep cp {} dir/nuevo \;
}
și gata! îți poți muta toate melodiile cu un simplu
mover cancion1.mp3
🙂 În ceea ce privește al doilea, deși parțial GUI-urile fac lucrarea „mai simplă” evitând amintirea și repetarea comenzilor, acest lucru este util numai în cadrul general, atunci când aveți nevoie de ceva specializat, gparted sau orice altă GUI poate fi scurtă 🙂 și GUI-urile nu adaugă funcționalități suplimentare, le iau doar pe cele care există în CLI (nu pe toate) și le grupează, dar nu le creează
În ceea ce priveşte
indiferent cât de mult este automat procesul cu:
move song1.mp3
atunci, neapărat, vor exista:
mutați melodia2.mp3
move song3.mp3
.
.
.
move song20.mp3
sunt multe melodii în mișcare ...
cu orice manager de fișiere .. durează doar 20 de clicuri și un gest drag & drop. Nu știu, dar cel puțin managerul meu (Dolphin) îmi permite să sortez simplu și foarte rapid (mai puțin de 5 secunde) o listă de 100 de melodii după nume, dată, dimensiune, etichete, clasament, album, artist, durată etc. pentru mine, aceasta este PRODUCTIVITATE și, de asemenea, adaugă funcționalitate liniei de comandă.
În ceea ce privește celălalt exemplu .. GParted: OK .. dacă aveți nevoie de ceva foarte specializat, cum ar fi modificarea valorii implicite a octeților per inod la formatare, ar trebui să mergeți la consolă .. dar prieten, asta nu este Este normal. 99% din timp GParted va satisface perfect nevoile noastre într-un mod foarte simplu și foarte rapid și, cel puțin pentru mine, că și productivitatea
În ceea ce priveşte
Ei bine, acesta este un exemplu de automatizare în forma sa cea mai simplă, așa cum ați spus „dacă vreau să-mi copiez cele 20 de melodii care îmi plac cel mai mult dintr-un director în altul”, toate acestea contează cu timpul necesar pentru „calm”. revizuiți lista după ce ați comandat-o și, de asemenea, faceți clic și etc, terminalul permite asta și multe altele într-o singură linie, poate aproximativ 0.1 secunde de execuție în procesorul dvs. (chiar dacă este vechi), dacă ochii și mouse-ul pot depăși acest lucru Ei bine, mă duc la GUI 🙂 și nu că am spus că nu le folosesc, au multe lucruri utile, nu o voi nega, dar cel puțin am găsit o versatilitate mult mai mare în terminal, pe lângă faptul că mă ajuta să practic câte o mică programare în fiecare zi când automatizez joburile. O vorbă foarte obișnuită printre SysAdmins este „dacă faci același lucru mai mult de o dată pe zi, automatizează-l, dacă o faci o dată pe zi timp de mai mult de două zile, automatizează-l, dacă o faci chiar și o dată pe lună, automatizează-l . "
Dar hei, în ceea ce privește gusturile și culorile, fiecare are propriile sale, mă limitez să împărtășesc lucrurile care îmi plac 🙂 și poate sunt mulți oameni care se „tem” de lucruri precum emacs, vim sau același terminal, Cu aceste postări, încerc doar să vă ofer un pic de încredere și curiozitate, astfel încât să puteți încerca să decideți 🙂
În ceea ce priveşte
PS: Cunosc mulți dezvoltatori pentru care GUI-urile nu rezolvă lucrurile din cauza complexității de care au nevoie în fiecare zi, pe care poate un utilizator „comun” nu o va vedea niciodată, dar asta nu înseamnă că mai mulți utilizatori „Commons” pot utilizați aceste instrumente și obțineți aceleași beneficii mai versatile.
Încă cred că pentru această sarcină (și multe altele) este nevoie de mult mai puțin timp folosind un manager de fișiere decât cu linia de comandă ... dar hei, după cum spuneți, există gusturi și culori pentru toată lumea.
Nu neg și nu mă tem de terminal, dar nu îl văd ca o propoziție aproape obligatorie, așa că am început spunând „Linia de comandă da, dar când este cazul”
În ceea ce privește dezvoltatorii, există de toate, dar scara este în mod clar îndreptată spre o parte: vă invit să aruncați o privire la:
https://pypl.github.io/IDE.html
Se pare că dezvoltatorii „obișnuiți” văd avantajele de a lucra într-un mediu grafic plin de facilități în comparație cu cei care pariază să lucreze cu editori „numai text”.
Există manageri de fișiere din linia de comandă care sunt la fel de practice sau mai mult decât grafica, cum ar fi Vifm sau Ranger. De asemenea, pentru partiționarea discurilor există aplicații pe linia de comandă, cum ar fi cgdisk cu o interfață e ncurses.
Ei bine, este adevărat 🙂 Nu prea știu de ce atât de mulți oameni se tem de terminal, este de fapt un instrument foarte robust și versatil, ceva pe care toată lumea ar trebui să-l încerce măcar o dată în profunzime.
Vă mulțumim pentru distribuire și salutări.
Da, administratorii de fișiere de terminal există înainte de grafică. În ceea ce privește practicitatea, depinde de ceea ce vrei. Orice manager de fișiere grafice este prevăzut cu file, favorite, moduri de vizualizare, previzualizare, posibilitatea de a-l comanda în 1000 de moduri diferite, de a conecta un terminal, de a instala pluginuri, etc, etc etc. ceea ce le face mult mai versatile decât orice manager de fișiere text.
Binele nu trebuie neapărat să fie urât
doar că înveți să faci ceea ce faci în cli și îți garantez că va fi mai ușor, ceea ce menționezi foarte ușor ai face cu rsync și îl poți face cu ușurință un script.
Vă recomand un manager de fișiere cli numit ranger care conține tot ce menționați.
Pentru a copia cele 20 de melodii fac o lista cu "ls * .ogg> top20". Apoi, merg la Vim și selectez (ștergând ceea ce nu vreau) melodiile pe care le doresc. La final fac „cp $ (cat top20) otrodir” și gata. Acest lucru este mai convenabil decât selectarea cu mouse-ul și că cele 19 melodii care au fost deja alese sunt deselectate din greșeală.
Minunat!!
Încă nu mă pot decide să instalez Gentoo 🙁 (sunt la BunsenLabs) În prezent folosesc openbox și folosesc nano pentru scripturile mele Bash
Dar mă face să vreau să mă aventurez în Vim sau Emacs!
În ceea ce priveşte
Îmi place să vă citesc postările
Mulțumesc foarte mult Alberto 🙂 Sunt foarte fericit că îți plac articolele mele, îmi place să scriu postările.
Sper să vă înveseliți și, bineînțeles, să faceți acest lucru, este să încercați întotdeauna ceva nou 🙂
Ei bine, cu asta termin să răspund la ultimele două comentarii și aș aprecia că moderatorii nu acceptă mai multe despre asta, acest lucru nu merge nicăieri și ideea este să nu umpleți lista de comentarii cu o serie de argumente în favoarea sau împotriva uneia sau alteia.
În ceea ce privește „versatilitatea”, poate cei care cred acest lucru consideră că numai interfețele grafice au plugin-uri, dar adevărul este că pluginurile terminale sunt la fel de variate și funcționale ca oamenii care le folosesc, cel mai clar exemplu este
https://vimawesome.com/
O listă aproape interminabilă de plugin-uri pentru vim care îl fac mai versatil decât multe IDE ... și vorbind despre asta, link-ul nu menționează că lista respectivă include persoanele care utilizează IDE-uri pe Windows și Mac, care de fapt vorbește mult mai bine despre Vim vorbește despre Eclipse, deoarece dacă comparăm numărul de oameni care folosesc Eclipse pe cele trei platforme, Vim nu are nimic de rușinat că are un meritat locul 4.
Dar mergând un pic mai departe ... că oamenii „obișnuiți” folosesc ceva nu spune că acest lucru este neapărat bun, dar probabil Windows ar fi mult mai bun decât alte sisteme 🙂 poate doar preferă să nu învețe să folosească ceva pentru că preferă opțiunea ușoară ... sau pentru că compania dvs. a decis astfel să implementeze standardul (Eclipse este standardul în multe companii, ceea ce ar explica numărul mare de utilizatori ... la fel ca Android și Visual Studio, care sunt singurele înseamnă să lucrezi cu limbile lor respective ... în timp ce Vim este o alegere GRATUITĂ a celor care îl folosesc)
. „Urât” este un termen foarte subiectiv, pot considera „urât” designul Qt, sau WebKit sau chiar al interfeței Mac OS ... dar asta nu înseamnă că altcineva o vede așa, este doar o chestiune de obicei 🙂
În ceea ce priveşte
Respect dorința de a nu dori să dau dreptul la replică.
doar pentru informatii:
https://vim.sourceforge.io/download.php
Sunt total de acord cu Anonymous, dar în cazul meu, sunt un simplu utilizator, fără cunoștințele profunde ale unui analist sau programator. Și, ca atare, am nevoie de o interfață grafică care să îmi dea greș multe comori din Linux, de exemplu astăzi și fiind anul 2017, nu există nicio aplicație GUI care să faciliteze partajarea folderelor într-o rețea Linux și spun Linux, nu le primesc Cu Samba și Windows, vorbesc despre o rețea pur Linux. Pentru a putea partaja într-o rețea Linux trebuie să configurați un anumit NFS și numai din linia de comandă, timpul este pierdut și, de asemenea, nu explic de ce este atât de dificil să aveți o interfață grafică care să o ușureze așa cum se întâmplă în Windows.
Potrivit lui ChrisADR „Sunt un tânăr dezvoltator de software” și vedeți că știți multe despre acest subiect, ar trebui să dezvoltați o aplicație GUI care să faciliteze ceea ce tocmai am explicat sau a dvs. este un titlu pur și laudă? Este la fel ca și cum un medic și-ar fi dat avizul despre cum este mai bine să efectuați o intervenție chirurgicală, fără să fi făcut vreodată vreuna. „Vedeți pingos-urile pe teren” ar trebui să dezvoltați o aplicație GUI înainte de a vă da opinia din locul dvs. de „dezvoltator de software” și dacă este mai bine sau nu să utilizați terminalul, trebuie să vă puneți în locul celui care folosește Linux și pentru cine îl folosește. Sperăm că puteți vedea un articol de ChrisADR, care prezintă și partajează aplicația sa GUI, pentru partajarea fișierelor pe o rețea Linux. Nu există niciunul în acest moment, cu excepția cazului în care utilizați Samba doar pentru partajarea Windows.
Crearea unui program nu este ușoară într-o după-amiază, necesită un efort de câteva săptămâni cel puțin și ceea ce este mai rău, atunci avem efortul de ani de zile să remediem erorile, actualizându-l împreună cu noile biblioteci de funcții care îi fac pe cele utilizate anterior să cadă. , ambalajul pentru diferite distribuții, ...
Dar, de asemenea, dacă aveți deja SAMBA pe care îl puteți utiliza și între două GNU / Linux fără a fi nevoie de niciun Windows, de ce doriți să utilizați soluția NFS?
Chiar dacă manualele pe care le vedeți online vorbesc despre Linux și Windows, pur și simplu urmați instrucțiunile pentru a partaja un folder desde linux și apoi pentru a vă conecta la un alt folder de rețea desde linux de asemenea.
Se pare că Ubuntu 16.04 are încă o implementare ușoară a acestei teme: http://www.hernanprograma.es/ubuntu/como-compartir-una-carpeta-desde-ubuntu-16-04-a-traves-de-samba/