Quindi, qual è il vantaggio di usare il terminale? [chiuso]

61

Ho appena installato Ubuntu un paio di giorni fa. Per quanto ne so, il terminale è una parte enorme di qualsiasi distribuzione Linux. La mia domanda a questo punto è perché? Quando cerco qualcosa su di esso, i comandi inseriti nel terminale sono facilmente eseguibili tramite la GUI. Quindi, quali sono i vantaggi dell'utilizzo del terminale?

Modifica: Grazie per le risposte a tutti. Dopo un po 'di curiosità, e con l'aiuto delle tue risposte, ora posso comprenderne l'uso. Posso dire con orgoglio che negli ultimi 3 giorni l'ho usato praticamente per tutto e spero di avere presto una conoscenza migliore degli script.

    
posta LurkDog 21.02.2012 - 01:49

16 risposte

79

Il terminale in Unix è uno strumento meraviglioso e potente. Durante la transizione dal mondo di Windows è difficile apprezzarlo perché la shell di Windows (cmd.exe) è piuttosto, come dire, carente. La maggior parte delle shell * nix predefinite ( bash , zsh , ecc.) Hanno diversi vantaggi:

  1. È standardizzato tramite POSIX e Single Unix Specification, quindi uno script scritto per un computer funzionerà probabilmente su tutte le macchine conformi a POSIX (supponendo che tu ti limiti ai comandi standard, di cui esistono lotti ). Microsoft ha l'abitudine di includere strumenti in alcune versioni e non in altre, rendendo la programmazione in batch molto incostante

  2. Poiché Unix è stato creato dal terminale, la maggior parte di tutto è configurabile dalla riga di comando. Windows era così fino a un certo punto, ma hanno deciso di abbandonare il sottosistema a 16 bit e DOS con esso. Ora la GUI è l'unico modo per cambiare alcune cose in Windows.

  3. Perché è così flessibile. I comandi possono essere collegati insieme ( ls | grep filename ), possono essere catturati ( gcc program.c > ./standard_out 2> ./standard_error ) e possono essere sostituiti ( ls /home/'whoami' o ls /home/$(whoami) )

  4. Perché le utilità UNIX sono progettate per fare una cosa, e farlo bene. Esamina solo awk , grep , sed , wget o un host di altri. Da soli ottengono un singolo compito, ma dato # 3 e # 2 possono essere integrati in espressioni potenti.

  5. A causa della capacità di automatizzare le attività. cron e gli script di bash consentono di eseguire attività lunghe, complicate e / o ripetitive in modo da semplificare o automatizzare completamente.

  6. Perché gli umani sono inclini all'errore. Gli script di shell relativamente brevi possono essere utilizzati per modificare le impostazioni in modo coerente. I controlli di sicurezza possono essere incorporati negli script, anziché affidarsi agli utenti per sapere quali comandi sono sicuri da eseguire in circostanze diverse.

risposta data Huckle 21.02.2012 - 02:02
36

Ci sono una moltitudine di vantaggi nell'utilizzo del terminale. Gli argomenti vanno dalla convenienza, dalla produttività alla nostalgia. Eccone alcuni:

  1. Ci sono alcune cose che tu (piuttosto io) semplicemente non puoi realizzare usando una GUI. Non è perché non è fattibile, è semplicemente perché nessuno si è preso la briga di scrivere una GUI per questi comandi. Ad esempio, se volessi utilizzare un comando, diciamo mdf2iso per convertire un intero gruppo di file in una cartella. Posso reindirizzare l'output utilizzando l'operatore | e farlo in un colpo solo.

  2. Per molti di noi, è proprio il modo in cui dovrebbero essere le cose. Tieni presente che questo ha poco a che fare con l'esperienza. Non sono un esperto di linux, sono solo un utente abituale, ma preferisco usare la riga di comando laddove possibile. Questo non è tanto un argomento sul perché dovrebbe essere usato, tanto quanto perché è usato.

  3. Gli script sono una cosa potente. Puoi usare condizioni if e cicli for ecc. E fare ogni sorta di cose combinando la potenza di cui sopra. Non c'è limite al potere dello scripting. È possibile automatizzare attività complesse su misura per le proprie esigenze. Per tali cose, è spesso difficile trovare un'app GUI che corrisponda ai tuoi requisiti.

  4. Puoi eseguire attività tramite login remoto, anche su impostazioni di larghezza di banda molto basse.

  5. Aiutare, scrivere tutorial ecc. è molto più semplice se puoi specificare i comandi all'altra persona. In questo modo, non devi fare screenshot. Questo ha un altro vantaggio per la persona che viene anche aiutata, il che ci porta al punto successivo.

  6. L'uso della riga di comando di solito ti dà una migliore comprensione di ciò che stai facendo e di cosa sta succedendo.

  7. E infine, è semplicemente più veloce. È molto più rapido digitare alcune lettere e premere TAB piuttosto che fare clic sulle opzioni di menu infinite. Puoi utilizzare !mo per richiamare l'ultimo comando che hai avviato iniziato con mo (ad es. Montare) e così via.

Sono sicuro che ci sono mille altri motivi per cui ho omesso di menzionare.

    
risposta data ste_kwr 21.02.2012 - 02:05
18

Alla fine? Perché inizi a scrivere script e la cosa meravigliosa dello scripting è questa:

Invece di cambiare il modo di fare le cose, puoi cambiare lo script che le fa.

È possibile scrivere script per il terminale e di solito non è possibile per programmi grafici, ecco perché la gente usa il terminale.

Ma sento l'accenno di "Perché dovrei usare il terminale?" nella tua domanda Non posso rispondere a questo per te, essendo te e me che non sei-tu, ma questa domanda correlata potrebbe offrirti qualche intuizione:

In che modo e perché le persone finiscono per utilizzare gli utenti della riga di comando?

Penso che potresti identificare tre fasi: (1) uso riluttante; (2) conoscere il minimo necessario per il comfort; (3) trovare uno gode di scripting. Si può uscire dal terminale in tutti e tre questi livelli; scoprire da solo dove si ferma la tua curiosità. Inoltre, si può passare molto velocemente attraverso queste fasi se si decide semplicemente di voler imparare lo scripting della shell.

  1. "Ho bisogno di questo programma, quindi suppongo che userò la riga di comando."

    Si inizia, di solito, perché le persone trovano che hanno bisogno di qualcosa di specialista o difficile, e il programma che Google / un forum / un amico raccomanda di risultare un programma da riga di comando. Quindi, aprono a terminale e digita ciò che le istruzioni dicono loro di digitare, e questo è il modo vengono ad usare il terminale. Esempi di tali programmi che ti fanno usare la riga di comando:

    • LaTeX / TeX / ConTeXt (diversi sapori dello stesso sistema) prende un testo file e lo trasforma in un bellissimo documento PDF. Vedi questo vetrina per esempi; Mi piace piuttosto "pp" e "LM-Volume-manoscritto".
    • rename è un delizioso programma che ti consente di rinominare tonnellate di file in base a a un modello. Un semplice esempio: rename s/myfile([0-9]+).txt/-myfile.txt/ trasforma tutti i file denominati come "bond007.txt" in "007-bond.txt", a prescindere da cosa il numero è Forse vuoi rinominare alcuni file di album musicali, vedi.
    • Forse vuoi eseguire un sito web dal tuo computer e tu scoprire che se vuoi dire al webserver di eseguire / halt / refresh la sua configurazione, è necessario emettere un comando di terminale.

    Si noti che ci sono front-end grafici per molti di questi sistemi, ma questo è il punto: l'invocazione della riga di comando è comune e tradizionale, molti HOWTO lo assumono, ed è così che inizia. Perché:

  2. "Ok, ora mi sento un po 'più a mio agio."

    Una volta dentro la riga di comando, le persone iniziano a pensare: Non sarebbe facile se potessi solo ..

    • ... cambia le directory per guardarne un'altra? ( cd mydir , per "cambia directory")
    • ... ricevi rapidamente un promemoria dei file di testo in questa directory? ( ls *.txt , per "elenco")
    • ... sposta / rinomina un file? copia un file? cancella un file? ( mv myfile newname , cp myfile mycopy e rm myfile , per "sposta", "copia" e "rimuovi")
    • ... apri questo file per la modifica / visualizzazione? ( gedit myfile o leafpad o nano o vim o qualsiasi altra cosa.)

    Una volta che le persone hanno imparato questi cinque comandi, sono essenzialmente comodi nella riga di comando: possono muoversi, guardare e interagire. È persino un po 'potente: puoi operare su interi gruppi di file in una volta con comandi come mv iceland-*.jpg My_Iceland_Pics/ , e non è fantastico?

    Ora molte persone si fermano felicemente qui. Sanno come usare il terminale, lo useranno quando ne avranno bisogno, e questo è tutto. Questo è il livello "il terminale è utile". Le persone che preferiscono il terminale, tuttavia, di solito lo fanno perché hanno bisogno / vogliono / sentono di non poter fare a meno del potere spettacolare offerto dallo scripting. E questo di solito inizia così:

  3. "Ehi, uno script è solo alcuni comandi in un file!"

    Questa realizzazione può portare a molti altri cambiamenti, a seconda della persona. Molti vanno semplicemente "meh", naturalmente; non ha senso imparare ciò che non ti serve. Ad ogni modo, cose come questa possono accadere:

    • Inizi a usare piccoli script per automatizzare cose noiose. Alcuni di voi scrivi te stesso; alcuni li ricevi da qualcun altro; ed eventualmente, inizi a modificare gli script di altre persone.
    • Scopri che una enorme categoria di cose che facevi a mano, perché richiedeva il modo di pensare nel mezzo, può essere automatizzato usando questi due costrutti:
      • if something_is_true; then step1a; step2; else step1b; fi e
      • for file in list_of_files; do process1 $file; process2 $file; step3; done
    • Di fronte a un'attività noiosa o complessa, scopri che preferiresti scrivere una sceneggiatura per esso piuttosto che farlo a mano. Questo non è nemmeno per il risparmio di tempo o riutilizzabilità, necessariamente, ma semplicemente perché è più divertente.
    • Si inizia a usare molto il flusso di lavoro 'usa script sul file sorgente', perché si adatta al modo in cui si pensa.

Potresti non provare tutto, o anche nessuno, di queste cose.Più si applica a te, tuttavia, meglio il terminale sarà per te . Scoprirai da solo quanto ne hai finito. Buon divertimento!

Post scriptum. Nella programmazione dei flussi di lavoro script -> run -> result e input -> process -> output sono estremamente comuni e il terminale è spettacolare adatto a questi flussi di lavoro. Aggiungete a ciò il fatto che la shell non è altro che un altro linguaggio di programmazione, e vedrete perché c'è una così grande sovrapposizione tra utenti della linea di comando e programmatori.

    
risposta data Esteis 21.02.2012 - 19:06
15

Un altro punto da aggiungere: È divertente usare la riga di comando! ;)

( link )

    
risposta data red_trumpet 21.02.2012 - 02:11
12

Stavo solo rispondendo a una domanda simile come questa l'altro giorno. Si è scoperto che questa persona non ha mai usato scorciatoie da tastiera per fare nulla, quindi si è rivelata una lunga discussione. Spero che tu abbia una certa familiarità con quelli ... renderebbe i miei punti più comprensibili.

Considera l'utilizzo di un word processor. Se si salva un file, è possibile utilizzare una scorciatoia da tastiera come ctrl-s. Qualcuno potrebbe dire: "Preferisco usare il menu, non mi risparmia molto tempo per usare il collegamento, e se devi salvare un nuovo file devi navigare nel file system nella directory, quindi digitare il nome comunque. " Quindi questo obiettore è corretto sul fatto che ogni scorciatoia da tastiera non risparmia una quantità significativa di tempo. Il vero risparmio consiste nel concatenare insieme scorciatoie, ad es. seleziona tutto, taglia, incolla. Anche i produttori di elaboratori di testi hanno capito questo e hanno reso più comodo accedere alla struttura del file utilizzando la tastiera, ad es. essere in grado di accedere alle cartelle / posizioni recenti usando i tasti di direzione e le frecce.

Naturalmente la selezione di parti di testo richiede spesso il mouse ... ecco perché i programmatori e le persone che fanno molte modifiche preferiscono utilizzare un editor di testo che supporti l'uso completo della tastiera in modo da non dover mai usare un mouse. Il mouse non è solo lento , ma è soggetto a errori: è particolarmente facile selezionare o eliminare il testo sbagliato.

Ora che cosa ha a che fare con la riga di comando? Un vantaggio della riga di comando è che evita l'uso del mouse lento e soggetto a errori. Invece, si digita e lo si fa da una posizione; non devi cercare un altro menu o cliccare qui e poi qui. È lo stesso motivo per cui alla gente piace usare le scorciatoie da tastiera del browser web (per aprire nuove schede / finestre, usare Gmail, ecc.); dovranno digitare l'URL (o e-mail o altro) in ogni caso ... perché spostare la mano lontano dai tasti?

Ma la cosa più importante, proprio come le scorciatoie da tastiera sono le più potenti quando inizi a usarle tutte insieme (piuttosto che solo una o due), puoi concatenare i comandi insieme per fare cose più potenti che potrebbero richiedere per sempre attraverso la GUI o non potevi nemmeno immaginare di farlo. Ad esempio, dalla riga di comando, puoi dire al tuo browser web, voglio continuare ad aggiornare questa pagina web ogni 30 secondi, cercare un determinato testo e, quando ciò accade, inviami un gruppo di contatti e un'e-mail che dice che il testo è apparso sulla pagina web. Come altro esempio, puoi dire al tuo computer, voglio esaminare TUTTE le email che ho mai scritto, cercare un riferimento a questo particolare libro, produrre un elenco di date che ho menzionato e chi, ordinare l'elenco secondo frequenza e inseriscilo in questa email che sto scrivendo ora.

    
risposta data Chan-Ho Suh 21.02.2012 - 02:07
11

La CLI è veloce da usare quando sai esattamente cosa vuoi fare e come farlo. Può essere molto più efficiente rispetto all'utilizzo di una GUI. Inoltre, se vuoi connetterti in remoto alla tua macchina, la CLI è molto più semplice su un collegamento lento. Se sei a tuo agio con la CLI puoi anche sfruttare gli script.

Se google cli vs gui otterrai tonnellate di hit, ad esempio:

link

La tua domanda non è propriamente specifica per Ubuntu, Linux o anche per PC - ottieni un dibattito su questo argomento da qualsiasi sistema che supporti gui e cli, ad es. configurazione dei router Cisco.

    
risposta data Amir 21.02.2012 - 02:01
10

Ci sono molti buoni punti nelle risposte, ma ho ancora un punto in più da fare. A volte dopo l'installazione o l'aggiornamento di una GUI l'applicazione non si avvia e lascia senza messaggi di errore. In questi casi può essere molto utile aprire una finestra di terminale e avviare l'ap dalla riga di comando. Ci sono quasi sempre più informazioni fornite sul terminale che presentate quando si inizia dalla GUI.

    
risposta data fragos 21.02.2012 - 10:21
8

Il mio preferito è meno battitura . Come può essere che ti senta chiedere. Bene, accedo, inverso la ricerca o freccia su) per un comando che ho digitato la scorsa settimana e premo il ritorno a capo. L'alternativa è molto più clic del mouse (e cerca di ricordare).

Il mio secondo preferito è che semplifica la risposta alle domande sullo stack overflow; Non occorrono schermate, solo testo.

    
risposta data ctrl-alt-delor 21.02.2012 - 15:39
5

Che dire quando devi fare qualcosa come "root"? Effettuare il login tramite la GUI come root è una cattiva idea (e non credo nemmeno che Ubuntu ti permetterà di farlo, di default).

Inoltre, considera che la GUI di Linux (X11) è semplicemente un programma in esecuzione, proprio come tutto il resto. Se X11 dovesse bloccarsi, sarai contento di conoscere la tua riga di comando.

    
risposta data Aaron 21.02.2012 - 02:05
5

Voglio solo contribuire con un esempio, che trovo molto utile, dalle istruzioni per aggiungere il PPA per VirtualBox. Quando aggiungi un PPA, dovresti anche registrare la chiave pubblica, in modo da utilizzare il metodo GUI:

  • scarica la chiave con Firefox (o altro browser)
  • apri Synaptic (o altra GUI APT)
  • cerca la voce di menu corretta
  • cerca il file scaricato
  • conferma infine

Spiegare questo in una guida utente può essere costoso! Invece, può essere fatto con un singolo & amp; semplice riga di comando:

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
    
risposta data Pisu 21.02.2012 - 22:28
3

La riga di comando funziona abbastanza bene come fa in windows -remembri quella casella msdos di testo con lo sfondo nero?

Fornisce all'utente un mezzo per impartire comandi direttamente al computer senza lo scarico delle risorse del computer fornite da una GUI. È anche un modo per impartire comandi potenti per fare cose che non possono essere fatte tramite una GUI.

Non sto sbagliando l'utilità del modo di lavorare con la GUI, ma nelle mani di un esperto, la via della linea di comando può essere estremamente veloce ed efficiente. Nelle mani di un vero mago la linea di comando fa miracoli. Ho appena scalfito la superficie delle possibilità, imparo qualcosa di nuovo ogni giorno. Non sarò mai un mago, troppo vecchio, ma mi piacerebbe essere un operatore medio un giorno ...

Benvenuto in Ubuntu e Chiedi a Ubuntu. Questo è un posto fantastico !!

    
risposta data Vic 21.02.2012 - 02:13
3

Per un principiante, il terminale è un compito da usare, ma se inizi a imparare come usarlo, diventa più facile. Una volta che ti senti a tuo agio con esso, ti dà la sensazione di poter gestire le cose quando sbagliano.

Ad esempio, quando un programma GUI si rifiuta di lanciare e non hai idea di cosa sia sbagliato, puoi eseguire il comando in un terminale e spesso vedere il motivo del problema nell'output del terminale. Quindi, puoi copiare un po 'di quello in una ricerca e trovare la risposta, se necessario.

Puoi inserire un comando con "--help" e ottenere un elenco di opzioni da riga di comando che potrebbero essere utili in alcuni casi speciali.

Se qualcosa va storto e la GUI non viene nemmeno eseguita, è spesso possibile aprire un terminale virtuale o eventualmente solo una riga di comando dall'avvio e risolvere il problema modificando un file di configurazione o eseguendo un programma a riga di comando .

    
risposta data Marty Fried 21.02.2012 - 23:48
2

In parole semplici, hai più di cento chiavi in ​​grado di controllare / parlare / ordinare il computer piuttosto che un singolo mouse con due o tre pulsanti. Più controlli hai, più velocemente puoi essere.

Per chiunque non conosca la digitazione, una tastiera su schermo potrebbe sembrare perfetta. Ad ogni modo, più veloce puoi usare il mouse, non puoi digitare più velocemente di quanto tu possa usare la tastiera.

Se stai usando mouse / windows, è come il computer che ti controlla e che ti dice cosa puoi fare. Quando ti abitui al mondo da riga di comando, puoi sentire l'intero sistema sotto il tuo controllo in attesa del tuo ordine. Hai bisogno di sperimentarlo per capire la differenza.

    
risposta data balki 24.02.2012 - 18:35
1

Non vedo nemmeno il punto di spuntare una risposta lol. Comunque. Il terminale è come il tuo CMD su Windows. Ai tempi, prima che comparisse la GUI, le persone programmano e lavorano in modalità DOS, praticamente un semplice terminale. La GUI è stata creata per semplificare e semplificare il compito, ma a volte l'uso della GUI richiede più lavoro.

Ad esempio, come sviluppatore, se voglio solo compilare un programma C ++, non devo usare l'IDE sofisticato. IDE è un'interfaccia GUI che ha molte funzionalità avanzate che un semplice editor di testo non offre. Quindi, invece di scaricare un IDE davvero enorme per un compito semplice, posso semplicemente scrivere quanto segue ed eseguire il mio programma C ++, il cui file eseguibile è chiamato main .

g++ -o main main.cpp
chmod 777 main
./main

Se interpreti un linguaggio come Python, puoi inserire la shell interattiva di Python. Sì. Ci sono shell interattive che sono avvolte in una bella GUI, ma è più lento e buggy (oh pensa a IDLE ...)

A volte quando la GUI è interrotta, puoi provare a utilizzare Terminal per aprirlo. A volte, alcuni software in Linux non offrono una buona GUI o è molto difficile trovare dove sia l'avvio della GUI, basta andare su Terminale e digitare, ad esempio:

xpdf homework.pdf

Questo aprirà il file di lavoro.pdf per te.

In un'altra situazione, la GUI non offre abbastanza potenza e magia per svolgere il tuo compito. Alcune funzioni di ricerca sono molto semplici e non è possibile applicare la ricerca di profondità o un modello di ricerca complicato. Ma attraverso il terminale, un comando può essere emesso con un modello veramente molto complicato e lungo.

La GUI è carina, ma a volte tramite i comandi è possibile rendere le cose più semplici. A volte semplicemente non hai scelta: devi usare i comandi attraverso i terminali.

    
risposta data CppLearner 21.02.2012 - 22:38
1

Vorrei aggiungere un punto laterale che sembra non essere menzionato, anche se non è un vero vantaggio.

Pensa al fatto che la GUI è come un "pannello" che dà accesso alle funzioni che il vero programma ha. Molti software, specialmente se in una versione precedente, non hanno una GUI, e puoi eseguirli solo dal terminale. E, come altri hanno sottolineato, anche le applicazioni che hanno una GUI, a volte non hanno interfacce per tutte le funzioni; per queste funzioni, devi usare il terminale.

    
risposta data clabacchio 23.02.2012 - 12:19
0

Ognuno ha descritto bene i vantaggi, vorrei solo aggiungere che oltre alla trasparenza dove si arriva a vedere tutte le dipendenze elencate, la sua velocità. Dopo la scomparsa di Synaptic da Ubuntu, il software center è troppo laggoso soprattutto su macchine più lente, qui l'installazione da terminale è molto più veloce.

    
risposta data Arup Roy Chowdhury 21.02.2012 - 15:44

Leggi altre domande sui tag