Perché preferiamo la riga di comando alle GUI?

Rivedendo altri articoli mi sono imbattuto in questa piccola domanda che mi ha fatto molto divertire, è vero che una delle prime cose che gli utenti di altri sistemi (eccetto FreeBSD) si mettono in faccia è che non usiamo GUI. A dire il vero, l'ho trovato anche piuttosto curioso all'inizio del mio viaggio GNU / Linux. Devo ammettere che nel tempo, ora uso la riga di comando molto più di qualsiasi altro programma GUI e molte volte preferisco i programmi a riga di comando a programmi più elaborati con GUI abbaglianti.

Il mito

In realtà questo non è altro che un mito urbano, perché a differenza di altri sistemi i cui nomi non saranno menzionati qui, è in GNU / Linux che hai davvero libertad di scelta. Vorrei che in altri sistemi ci fosse la versatilità che esiste qui. Ma diamo un'occhiata più da vicino a questo argomento, altrimenti molte cose non sono chiare:

Servidores

Abbiamo tutti sentito la parola Server, alcuni credono che siano quei super computer che alimentano Google o Amazon, o quello della tua azienda. Ma la realtà è che a server rispondere a a modello di lavoro. Usiamo questo termine per riferirci al fatto che abbiamo un programma disponibile per gli utenti (clienti) e porge loro qualcosa. Un esempio di base è Apache, che viene utilizzato per servire pagine web su Internet. Questo programma fornisce html a clienti che lo richiedono.

Server di immagini

Ma non solo un server può essere nei super computer che Google e molte altre società rendono possibili, anche il laptop "più vecchio" può essere un server, soprattutto quando parliamo di immagini. Gestiamo tutti un file server di immagini nei nostri laptop per avere uno schermo funzionale, in questo caso il server e il cliente sono la stessa persona. L'esempio più comune è X (conosciuto come xorg-server in molte distribuzioni) e la sua nuova sostituzione Wayland. Non daremo una spiegazione dettagliata del perché l'org, o come funziona Wayland, o le filosofie che esistono dietro questi grandi progetti, ma metteremo in chiaro che è grazie a loro che possiamo avere un browser web come Firefox o Chrome o molti altri programmi.

Window manager

I window manager lavorano direttamente con il server delle immagini, il loro lavoro è di livello "inferiore", poiché gestiscono (perdonate la ridondanza) come le finestre vengono create, modificate, chiuse. Di solito sono abbastanza semplici e gli ambienti desktop sono costruiti su questi. L'elenco è ampio, ma lascio qui solo l'idea che lo siano software minimalisti, che ti consentono di avere un controllo abbastanza semplice del server di immagini.

Ambiente desktop

Un set di software più specializzato che consente non solo il funzionamento del server di immagini, ma fornisce anche funzionalità di personalizzazione. Tra questi, i più vecchi e pesanti sono KDE e GNOME, ma abbiamo anche ambienti più leggeri come LXDE o Mate, Cinnamon, ecc.

CLI (interfaccia della riga di comando)

Dopo una breve occhiata al mondo dei server di immagini, torniamo ora al nostro argomento. CLI, implica anche qualsiasi programma eseguito dalla riga di comando git, vim, weechat, o beh, qualunque altra cosa ti venga in mente. Puoi vedere che sto parlando di programmi che, sebbene siano eseguiti dalla riga di comando, mostrano una sorta di "interfaccia grafica" come weechat o vim. A tutti coloro che non li hanno provati, li consiglio, sono praticamente quelli che uso tutto il giorno.

Perché la CLI è migliore della GUI

Proviamo qualcosa di piuttosto semplice 🙂 L'altro giorno volevo lavorare a una patch Portage (il gestore di pacchetti di Gentoo). Come ogni buon progetto collaborativo, il numero di righe di codice supera i 70k. Prova ad aprirlo in un IDE come NinjaIDE (Portage è scritto in Python) e noterai presto che quando lo schermo inizia a caricarsi, la tua macchina diventa estremamente lenta (almeno il mio i7 lo ha fatto) e questo sta solo cercando di aprire il codice e cambia al colore predefinito di «aiuto».

Ora prova a fare lo stesso con vimMi ha caricato in pochi millisecondi, e allo stesso tempo ha messo i colori "belli" e tutto il resto.

CLI è stato molto prima

Alcuni qui diranno che quei programmi lo sono antiguos, Li chiamo robusto. Se potessi vedere il numero di ore investite nella costruzione emacs, vim, gdb, e centinaia di altri programmi per console, potrebbero notare che la quantità di codice e funzionalità è così grande che hanno praticamente già risolto tutto ciò di cui avevano bisogno per risolvere. Molti GUI per i programmi che sono già robusti nella loro CLI non avranno mai la stessa quantità di funzionalità, questo semplicemente perché se abbiamo creato una scheda per ogni sottocomando disponibile, ad esempio git, ci perderemmo tra le opzioni e sarebbe controproducente, perché renderebbe difficile il lavoro.

CLI è più veloce

La magia inizia con la chiave Tab, questo non è solo il tuo migliore amico quando navighi sui desktop nel tuo terminale, ma quando è configurato correttamente, ti consente di abbreviare frasi lunghe a 2 lettere e una Tab, 3 lettere e una Tab, o anche una lettera e una Tab .

Ma questo non è l'unico vantaggio, quelli di noi che hanno avuto il tempo di imparare vim o emacs Possiamo dire che sebbene la curva di apprendimento sia un po 'più alta di quella degli IDE di questi tempi, alla fine i risultati di produttività sono sorprendenti, non si può immaginare il tempo che si può perdere muovendo il mouse. Avere le mani sulla tastiera il 90% delle volte non solo insegna la concentrazione, inoltre, il fatto di digitare così tanto sulla tastiera ti rende abbastanza agile e produttivo. E ora torniamo al punto precedente, essendo stati con noi per così tanto tempo, programmi come questi hanno già tutte le funzionalità a cui qualcuno potrebbe pensare, viene in mente un detto abbastanza comune per quelli di noi che usano vim:

Se usi più di 4 chiavi, potrebbe esserci un modo migliore.

Semplice ma potente, vim ti permette di fare tutto con il gran numero di tasti e combinazioni possibili, non si smette mai di imparare, ma è anche vero che per usarlo non è necessario conoscerli tutti, circa 10 o 15 sono abbastanza per iniziare ad essere più produttivi.

CLI ti dà il controllo completo

Quando si eseguono operazioni con il mouse, o programmi da image server, tutte le configurazioni extra che vengono eseguite al momento del clic non sono sempre presenti, questo non avviene con il terminale, qui si ha il potere assoluto di quello che è eseguito o meno, con quale opzione o in che misura. Col tempo ti rendi conto che hai bisogno di meno di quanto pensi e questo ti aiuta a fare le cose in modo più concentrato.

Anche la GUI ha le sue cose

Non dirò che dovremmo tutti usare sempre la CLI, neanche questo è l'ideale, io stesso uso le GUI quasi sempre, per scrivere questo post sto usando il mio Chrome e per vedere le mie e-mail utilizzo Evolution (sebbene Uso anche mutt ultimamente). E immagino che questo sia il più grande mito di tutti ... che la gente pensi che GNU / Linux li stia semplicemente terminando, mi piace il mio ambiente desktop, è piuttosto minimalista, ma mi piace così 🙂 E di solito ne ho solo due o tre programmi in esecuzione, il mio Chrome, il mio Evolution e il mio terminale 🙂

Questi sono alcuni dei motivi per cui mi piacciono così tanto i CLI e perché ti invito a provarli, in seguito potrebbero finire come me usando più CLI che GUI 😉 Saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   anonimo suddetto

    «Come ogni buon progetto collaborativo, il numero di righe di codice supera i 70k. Questa parte mi ha reso troppo rumoroso. C'è un'impossibilità tecnica per cui il codice deve essere compattato nello stesso file? Non sarebbe meglio separare il comportamento in diverse entità (file / classi / moduli)?
    Non sembra essere un motivo valido per imporre una tecnologia all'altra, per tralasciare i vantaggi che si propone per mancanza di forma di sviluppo. In ogni caso, parlo senza sapere a quale particolare progetto si riferisca, c'è una causa maggiore che forza quel modo di lavorare

    1.    Chris ADR suddetto

      Ciao,

      Bene, forse questo richiede un po 'di spiegazione, ma quello che io chiamo un "buon progetto" implica che il numero di righe esprime che si tratta di una comunità sana che continua a crescere. Ci sono progetti con un numero di linee molto inferiore, ma abbastanza sano nel loro sviluppo. In effetti, sì, portage è diviso in quanti più file possibile, ma è sempre necessario mantenere le parti raggruppate insieme come le librerie o gli interruttori che portano a un bel po 'di altre funzioni. Ma quando si importa un progetto in molti IDE oggi, ciò implica che leggerà tutti i file nel progetto e proverà a mettere il formato "visivo" corretto.

      Spero di renderlo un po 'più chiaro 🙂 e grazie per il commento.
      saluti

  2.   anonimo suddetto

    Usando la riga di comando? Sì, ma solo quando applicabile. Cioè, quando è più comodo e veloce. Ad esempio, se voglio installare un determinato programma, è più conveniente per me digitare sudo apt install nome programma piuttosto che aprire un gestore software, cercarlo, contrassegnarlo per l'installazione e premere "installa". Ma generalmente non è così. Ad esempio: se voglio copiare le 20 canzoni che mi piacciono di più da una directory all'altra è super comodo fare Ctrl + clic mentre esamini con calma un enorme elenco da un file manager e poi trascina e rilascia. Un altro esempio: se voglio partizionare un disco è molto meglio farlo tramite gparted (un programma che esegue una moltitudine di comandi mostrandoti graficamente come sarà il disco) piuttosto che farlo manualmente. La lista potrebbe essere infinita. Le GUI possono (in effetti di solito) rendere il lavoro molto più semplice, oltre ad aggiungere funzionalità che per una data applicazione cli potrebbero essere impossibili

    1.    Chris ADR suddetto

      beh, dipende da quanto sei a tuo agio con la riga di comando ... per esempio:

      find dir/musica -name "archivo" -exec grep cp {} dir/nuevo \;

      con un po 'di magia in bash puoi persino creare una funzione che esegue lo stesso semplicemente inserendo il nome della canzone:

      Qualcosa di simile a

      mover(){
      find dir/musica -name $1 -exec grep cp {} dir/nuevo \;
      }

      e pronto! puoi spostare tutte le tue canzoni con un semplice

      mover cancion1.mp3

      🙂 Per quanto riguarda il secondo, sebbene in parte le GUI rendano il lavoro "più semplice" evitando di ricordare e ripetere comandi, questo è utile solo in framework generali, quando serve qualcosa di specializzato, gparted o qualsiasi altra GUI può essere breve 🙂 e le GUI non aggiungere funzionalità extra, prendono solo quelle che esistono nella CLI (non tutte) e le raggruppano, ma non le creano crean

      saluti

      1.    anonimo suddetto

        non importa quanto il processo sia automatizzato con:
        sposta song1.mp3

        quindi, necessariamente, ci saranno:
        sposta song2.mp3
        sposta song3.mp3
        .
        .
        .
        sposta song20.mp3
        ci sono molte canzoni commoventi ...
        con qualsiasi file manager .. bastano 20 clic e un gesto drag & drop. Non lo so, ma almeno il mio manager (Dolphin) mi permette di ordinare in modo semplice e super veloce (meno di 5 secondi) un elenco di 100 canzoni per nome, data, dimensione, tag, classifica, album, artista, durata , ecc. per me questa è PRODUTTIVITÀ e aggiunge funzionalità alla riga di comando.

        Come per l'altro esempio .. GParted: OK .. se hai bisogno di qualcosa di molto specializzato come variare il valore predefinito di byte per inode durante la formattazione, dovresti andare sulla console .. ma amico, non è normale. Il 99% delle volte GParted soddisferà perfettamente le nostre esigenze in modo molto semplice e molto veloce e, almeno per me, anche la produttività

        saluti

        1.    Chris ADR suddetto

          Bene, questo è un esempio di automazione nella sua forma più semplice, come hai detto "se voglio copiare le mie 20 canzoni che mi piacciono di più da una directory all'altra", tutto ciò conta con il tempo che ti ci vuole per "con calma" rivedi la tua lista dopo averla ordinata e anche cliccando e così via, il terminale permette questo e molto altro in una sola riga, forse circa 0.1 secondi di esecuzione nel tuo processore (anche se è vecchio), se i tuoi occhi e il mouse riescono a superarlo , beh, vado alle GUI 🙂 e non è che ho detto che non le uso, hanno molte cose utili, non lo nego, ma almeno ho trovato molta più versatilità nel terminale, in oltre ad aiutarmi a praticare un po 'di programmazione ogni giorno quando automatizzo i lavori. Un detto molto comune tra gli amministratori di sistema è "se fai la stessa cosa più di una volta al giorno, automatizzala, se la fai una volta al giorno per più di due giorni, automatizzala, se la fai anche una volta al mese, automatizzala . "

          Ma hey, in termini di gusti e colori, ognuno ha le sue cose, mi limito a condividere le cose che mi piacciono 🙂 e forse ci sono molte persone che hanno "paura" di cose come emacs, vim, o lo stesso terminale , con questi post sto solo cercando di darti un po 'di fiducia e curiosità in modo che tu possa provarli e decidere 🙂

          saluti

          PS: Conosco molti sviluppatori per i quali le GUI non risolvono le cose a causa della quantità di complessità che richiedono nella loro quotidianità, che forse un utente "comune" non vedrà mai, ma ciò non implica che più utenti "Commons" possano utilizzare questi strumenti e ottenere gli stessi vantaggi più versatili.

          1.    anonimo suddetto

            Continuo a pensare che per questo compito (e molti altri) ci vuole molto meno tempo usando un file manager che con la riga di comando ... ma ehi, come dici tu ci sono gusti e colori per tutti.

            Non nego né ho paura del terminale, ma non la vedo come una frase quasi obbligatoria, quindi ho iniziato dicendo "Riga di comando sì, ma quando appropriato"

            Per quanto riguarda gli sviluppatori, c'è tutto, ma la scala punta chiaramente da una parte: ti invito a dare un'occhiata a:

            https://pypl.github.io/IDE.html

            Sembra che gli sviluppatori "comuni" vedano i vantaggi di lavorare in un ambiente grafico pieno di servizi se lo confrontiamo con quelli che scommettono sul lavorare con editor di "solo testo".

    2.    bruci suddetto

      Ad esempio: se voglio copiare le 20 canzoni che mi piacciono di più da una directory all'altra è super comodo fare Ctrl + clic mentre esamini con calma un enorme elenco da un file manager e poi trascina e rilascia.

      Esistono gestori di file da riga di comando pratici o più che grafici, come Vifm o Ranger. Anche per il partizionamento dei dischi ci sono applicazioni a riga di comando come cgdisk con un'interfaccia e ncurses.

      1.    Chris ADR suddetto

        Beh, è ​​vero 🙂 Non so davvero perché così tante persone temono il terminale, in realtà è uno strumento molto robusto e versatile, qualcosa che tutti dovrebbero provare almeno una volta in profondità.

        Grazie per la condivisione e i saluti.

      2.    anonimo suddetto

        Sì, i file manager del terminale esistono prima della grafica. Per quanto riguarda la praticità, dipende da quello che vuoi. Qualsiasi file manager grafico è dotato di schede, preferiti, modalità di visualizzazione, anteprima, la possibilità di ordinarlo in 1000 modi diversi, di collegare un terminale, installare plugin, ecc. Ecc. il che li rende molto più versatili di qualsiasi file manager di testo.

        Il bene non deve necessariamente essere brutto

    3.    chupy35 suddetto

      è solo che impari a fare quello che fai in cli, e ti garantisco che sarà più facile, quello che dici molto facilmente lo faresti con rsync e puoi farlo facilmente uno script.

      Raccomando un file manager cli chiamato ranger che ha tutto ciò che dici.

      1.    godel suddetto

        Per copiare le 20 canzoni faccio una lista con "ls * .ogg> top20". Quindi, vado su Vim e seleziono (eliminando ciò che non voglio) le canzoni che voglio. Alla fine faccio "cp $ (cat top20) otrodir" e il gioco è fatto. Questo è più comodo che selezionare con il mouse e che le 19 canzoni che erano già state scelte vengono deselezionate per errore.

  3.   Alberto cardona suddetto

    Meraviglioso !!
    Non riesco ancora a decidere di installare Gentoo 🙁 (sono a BunsenLabs) Attualmente utilizzo openbox e utilizzo nano per i miei script Bash
    Ma mi viene voglia di avventurarmi in Vim o Emacs!
    saluti
    Mi piace leggere i tuoi post

    1.    Chris ADR suddetto

      Grazie mille Alberto 🙂 Sono molto felice che ti piacciano i miei articoli, mi piace scrivere i post.
      Spero che ti rallegri e ovviamente lo fai, l'importante è provare sempre qualcosa di nuovo 🙂

  4.   Chris ADR suddetto

    Bene, con questo finisco di rispondere agli ultimi due commenti e gradirei che i moderatori non accettassero di più al riguardo, questo non sta andando da nessuna parte e l'idea è di non riempire l'elenco dei commenti con una serie di argomenti a favore o contro uno o il altro.

    Per quanto riguarda la "versatilità", forse chi la pensa ritiene che solo le GUI abbiano plugin, ma la verità è che i plugin del terminale sono tanto vari e funzionali quanto le persone che li usano, l'esempio più chiaro è

    https://vimawesome.com/

    Un elenco quasi infinito di plug-in per vim che lo rendono più versatile di molti IDE ... e parlando di questo, quel link non menziona che quell'elenco include persone che usano IDE su Windows e Mac, che in realtà parla molto meglio di Vim parla di Eclipse poiché se confrontiamo il numero di persone che usano Eclipse sulle tre piattaforme, Vim non ha nulla di cui vergognarsi di avere un meritato 4 ° posto.

    Ma andando un po 'oltre ... che le persone "normali" usano qualcosa non dice che questo sia necessariamente buono, ma probabilmente Windows sarebbe molto meglio di altri sistemi 🙂 forse è solo che preferiscono non imparare a usare qualcosa perché preferisci l'opzione facile ... o perché la tua azienda ha deciso di implementare lo standard (Eclipse è standard in molte aziende, questo spiegherebbe il gran numero di utenti ... proprio come Android e Visual Studio, che sono gli unici mezzi per lavorare con le rispettive lingue ... mentre Vim è una libera scelta di chi lo usa)

    . "Brutto" è un termine molto soggettivo, posso considerare "brutto" il design di Qt, o WebKit, o anche dell'interfaccia di Mac OS ... ma questo non significa che qualcun altro la vede in quel modo, è solo questione di abitudine ombrelloni

    saluti

    1.    anonimo suddetto

      Rispetto il desiderio di non voler dare il diritto di replica.

      solo per informazione:
      https://vim.sourceforge.io/download.php

  5.   Claudio suddetto

    Sono pienamente d'accordo con Anonymous, ma nel mio caso sono un semplice utente, senza la profonda conoscenza di un analista o programmatore. e come tale, ho bisogno di una GUI per farmi mancare molti dei tesori di Linux, ad esempio oggi ed essendo l'anno 2017, non esiste un'applicazione GUI che faciliti la condivisione di cartelle su una rete Linux, e dico Linux, non lo faccio Con Samba e Windows, sto parlando di una rete puramente Linux. Per poter condividere in una rete Linux, devi configurare un certo NFS e solo da riga di comando, il tempo è sprecato e inoltre non spiego perché sia ​​così difficile avere una GUI che lo renda facile come accade in Finestre.
    Secondo ChrisADR "Sono un giovane sviluppatore di software" e vedi che sai molto sull'argomento, dovresti sviluppare un'applicazione GUI che faciliti ciò che ho appena spiegato o il tuo è un titolo puro e vanto? È come se un medico desse un parere su come è meglio eseguire un intervento chirurgico, senza averlo mai fatto. "Vedi i ping in campo" dovresti sviluppare un'applicazione GUI prima di dare la tua opinione dal tuo posto di "sviluppatore software" e se è meglio o meno usare il terminale, devi metterti al posto di chi lo usa Linux ea chi lo usa. Si spera che tu possa vedere un articolo di ChrisADR, che presenta e condivide la sua applicazione GUI, per la condivisione di file su una rete Linux. Al momento, non ce ne sono, a meno che tu non stia usando Samba solo per la condivisione di Windows.

    1.    fattura suddetto

      Creare un programma non è cosa facile in un pomeriggio, richiede uno sforzo di almeno diverse settimane e quel che è peggio, poi abbiamo lo sforzo di anni correggere gli errori, aggiornandolo insieme alle nuove librerie di funzioni che rendono obsolete quelle utilizzate in precedenza ., il packaging per le diverse distribuzioni, ...
      Ma è anche questo, se hai già SAMBA che puoi usare anche tra due GNU / Linux senza bisogno di Windows, perché vuoi usare la soluzione NFS?
      Anche se i manuali che vedi online parlano di Linux e Windows, segui semplicemente le istruzioni per condividere una cartella desde linux e quindi per connettersi ad un'altra cartella di rete desde linux anche.
      Sembra che Ubuntu 16.04 abbia ancora una facile implementazione di questo tema: http://www.hernanprograma.es/ubuntu/como-compartir-una-carpeta-desde-ubuntu-16-04-a-traves-de-samba/