Terminale

Rispondi
cmo
Reactions score: 0
mag 2020 09 22:10

Terminale

Messaggio da cmo

  1. Panoramica
    La riga di comando di Linux è un'interfaccia di testo per il tuo computer. Spesso indicato come shell, terminale, console, prompt o vari altri nomi, può dare l'impressione di essere complesso e confuso da usare. Tuttavia, la capacità di copiare e incollare comandi da un sito Web, combinata con la potenza e la flessibilità offerte dalla riga di comando, significa che utilizzarlo può essere essenziale quando si tenta di seguire le istruzioni online, inclusi molti su questo stesso sito Web!

Questo tutorial ti insegnerà un po 'della storia della riga di comando, quindi ti guiderà attraverso alcuni esercizi pratici per familiarizzare con alcuni comandi e concetti di base. Non assumeremo alcuna conoscenza preliminare, ma alla fine speriamo che ti sentirai un po 'più a tuo agio la prossima volta che dovresti affrontare alcune istruzioni che iniziano "Apri un terminale".

Cosa imparerai
Un po 'di storia della riga di comando
Come accedere alla riga di comando dal tuo computer
Come eseguire alcune manipolazioni di base dei file
Alcuni altri comandi utili
Come concatenare i comandi insieme per creare strumenti più potenti
Il modo migliore per utilizzare i poteri di amministratore
Di cosa avrai bisogno
Un computer con Ubuntu o qualche altra versione di Linux
Ogni sistema Linux include una riga di comando di un tipo o di un altro. Questo tutorial include alcuni passaggi specifici per Ubuntu 18.04 ma la maggior parte del contenuto dovrebbe funzionare indipendentemente dalla tua distribuzione Linux.

Una breve lezione di storia
Durante gli anni formativi del settore informatico, uno dei primi sistemi operativi era chiamato Unix. È stato progettato per funzionare come sistema multiutente su computer mainframe, con gli utenti che si connettono ad esso in remoto tramite singoli terminali . Questi terminali erano piuttosto semplici per gli standard moderni: solo una tastiera e uno schermo, senza il potere di eseguire programmi localmente. Al contrario, avrebbero semplicemente inviato sequenze di tasti al server e visualizzato tutti i dati ricevuti sullo schermo. Non c'era mouse, nessuna grafica elegante, nemmeno una scelta di colori. Tutto è stato inviato come testo e ricevuto come testo. Ovviamente, quindi, tutti i programmi eseguiti sul mainframe dovevano produrre testo come output e accettare il testo come input.

Rispetto alla grafica, il testo è molto leggero sulle risorse. Anche su macchine degli anni '70, che eseguivano centinaia di terminali attraverso connessioni di rete glacialmente lente (secondo gli standard odierni), gli utenti erano ancora in grado di interagire con i programmi in modo rapido ed efficiente. Inoltre, i comandi sono stati molto concisi per ridurre il numero di sequenze di tasti necessarie, accelerando ulteriormente l'utilizzo del terminale da parte delle persone. Questa velocità ed efficienza è uno dei motivi per cui questa interfaccia di testo è ancora ampiamente utilizzata oggi.

Quando hanno effettuato l'accesso a un mainframe Unix tramite un terminale, gli utenti dovevano comunque gestire il tipo di attività di gestione dei file che ora è possibile eseguire con un mouse e un paio di finestre. Che si tratti di creare file, rinominarli, inserirli in sottodirectory o spostarli su disco, gli utenti degli anni '70 potevano fare tutto con un'interfaccia testuale.

Ognuna di queste attività richiedeva il proprio programma o comando: uno per cambiare directory ( cd), un altro per elencare il loro contenuto ( ls), un terzo per rinominare o spostare i file (mv), e così via. Al fine di coordinare l'esecuzione di ciascuno di questi programmi, l'utente dovrebbe connettersi a un singolo programma principale che potrebbe quindi essere utilizzato per avviare uno degli altri. Avvolgendo i comandi dell'utente questo programma "shell", come era noto, potrebbe fornire funzionalità comuni a ciascuno di essi, come la possibilità di passare i dati da un comando direttamente a un altro o di utilizzare caratteri jolly speciali per lavorare con molti file con nomi simili contemporaneamente. Gli utenti potrebbero persino scrivere un semplice codice (chiamato "script di shell") che potrebbe essere utilizzato per automatizzare lunghe serie di comandi di shell al fine di semplificare le attività complesse. Il programma originale Unix è stato appena chiamato sh, ma è stato esteso e superato nel corso degli anni, quindi su un moderno sistema Linux è molto probabile che tu stia usando una shell chiamatabash. Non preoccuparti troppo di quale shell hai, tutto il contenuto di questo tutorial funzionerà su quasi tutti.

Linux è una specie di discendente di Unix. La parte centrale di Linux è progettata per comportarsi in modo simile a un sistema Unix, in modo che la maggior parte delle vecchie shell e altri programmi basati su testo vengano eseguiti abbastanza felicemente. In teoria potresti persino collegare uno di quei vecchi terminali degli anni '70 a un moderno box Linux e accedere alla shell attraverso quello. Ma oggigiorno è molto più comune usare un terminale software: la stessa vecchia interfaccia di testo in stile Unix, ma in esecuzione in una finestra accanto ai tuoi programmi grafici. Vediamo come puoi farlo tu stesso!

Su un sistema Ubuntu 18.04 puoi trovare un lanciatore per il terminale facendo clic sulla voce Attività nella parte superiore sinistra dello schermo, quindi digitando le prime lettere di "terminale", "comando", "prompt" o "shell". Sì, gli sviluppatori hanno impostato il programma di avvio con tutti i sinonimi più comuni, quindi non dovresti avere problemi a trovarlo.

Immagine

Altre versioni di Linux, o altre versioni di Ubuntu, avranno di solito un lanciatore terminale situato nello stesso posto degli altri lanciatori di applicazioni. Potrebbe essere nascosto in un sottomenu o potresti doverlo cercare all'interno del tuo launcher, ma è probabile che ci sia da qualche parte.

Se non riesci a trovare un lanciatore, o se vuoi solo un modo più veloce per far apparire il terminale, la maggior parte dei sistemi Linux usa la stessa scorciatoia da tastiera predefinita per avviarlo: Ctrl-Alt-T .

Comunque avvii il tuo terminale, dovresti finire con una finestra dall'aspetto piuttosto noioso con uno strano pezzo di testo in alto, proprio come l'immagine qui sotto. A seconda del sistema Linux in uso, i colori potrebbero non essere gli stessi e il testo probabilmente dirà qualcosa di diverso, ma il layout generale di una finestra con un'area di testo ampia (per lo più vuota) dovrebbe essere simile.

Immagine

Eseguiamo il nostro primo comando. Fai scorrere il mouse nella finestra per assicurarti che siano le sequenze di tasti, quindi digita il seguente comando, tutto in minuscolo , prima di premere il tasto Invio o A capo per eseguirlo.

pwd
Dovresti vedere un percorso di directory stampato (probabilmente qualcosa di simile /home/YOUR_USERNAME), quindi un'altra copia di quello strano pezzo di testo.

Immagine

Ci sono un paio di nozioni di base da capire qui, prima di entrare nel dettaglio di ciò che il comando ha effettivamente fatto. Il primo è che quando si digita un comando, questo appare sulla stessa riga del testo dispari. Quel testo è lì per dirti che il computer è pronto ad accettare un comando, è il modo in cui il computer ti richiede. In effetti, di solito viene indicato come prompt e talvolta è possibile che vengano visualizzate istruzioni che indicano "richiamare un prompt", "aprire un prompt dei comandi", "al prompt di bash" o simili. Sono tutti modi diversi di chiederti di aprire un terminale per arrivare a una shell.

Per quanto riguarda i sinonimi, un altro modo di guardare il prompt è quello di dire che c'è una linea nel terminale in cui si digitano i comandi. Una riga di comando, se vuoi. Ancora una volta, se vedi la menzione di "riga di comando", incluso nel titolo di questo tutorial, è solo un altro modo di parlare di una shell in esecuzione in un terminale.

La seconda cosa da capire è che quando si esegue un comando qualsiasi output che produce di solito verrà stampato direttamente nel terminale, quindi al termine verrà mostrato un altro prompt. Alcuni comandi possono generare molto testo, altri funzioneranno in silenzio e non genereranno nulla. Non allarmarti se esegui un comando e immediatamente appare un altro prompt, poiché di solito significa che il comando ha avuto esito positivo. Se ripensi alle lente connessioni di rete dei nostri terminali degli anni '70, quei primi programmatori decisero che se tutto fosse andato per il verso giusto, avrebbero potuto salvare alcuni preziosi byte di trasferimento dati senza dire nulla.

L'importanza di case
Prestare particolare attenzione a case quando si digita nella riga di comando. Digitare PWDinvece pwdprodurrà un errore, ma a volte il caso sbagliato può far apparire un comando in esecuzione, ma non fare ciò che ti aspettavi. Vedremo il caso un po 'di più nella pagina successiva ma, per ora, assicurati di digitare tutte le seguenti righe esattamente nel caso mostrato.

Un senso di posizione
Ora al comando stesso. pwdè l'abbreviazione di ' p tampa w entidilavoro d irectory'. Non fa altro che stampare l'attuale directory di lavoro della shell. Ma cos'è una directory di lavoro ?

Un concetto importante da capire è che la shell ha la nozione di un percorso predefinito in cui si terranno le operazioni sui file. Questa è la sua directory di lavoro. Se si tenta di creare nuovi file o directory, visualizzare file esistenti o addirittura eliminarli, la shell presumerà che li stiate cercando nella directory di lavoro corrente, a meno che non si adottino misure per specificare diversamente. Quindi è abbastanza importante avere un'idea della directory in cui si trova la shell in qualsiasi momento, dopotutto, cancellare i file dalla directory sbagliata potrebbe essere disastroso. In caso di dubbi, il pwdcomando ti dirà esattamente qual è la directory di lavoro corrente.

È possibile modificare la directory di lavoro con il cdcomando, l'abbreviazione di ' C hange d irectory'. Prova a digitare quanto segue:

cd /
pwd
Nota che il separatore di directory è una barra ("/"), non la barra rovesciata a cui potresti essere abituato dai sistemi Windows o DOS

Ora la tua directory di lavoro è “/”. Se provieni da uno sfondo di Windows, probabilmente sei abituato a ogni unità che ha una propria lettera, con il tuo disco rigido principale in genere "C:". I sistemi simili a Unix non suddividono le unità in questo modo. Invece hanno un unico file system unificato e le singole unità possono essere collegate ("montate") a qualunque posizione del file system abbia più senso. La directory “/”, spesso denominata directory root , è la base di quel file system unificato. Da lì tutto il resto si dirama per formare un albero di directory e sottodirectory.

Troppe radici
Attenzione: sebbene la directory “/” sia talvolta definita directory root , la parola “root” ha un altro significato. root è anche il nome che è stato usato per il superutente sin dai primi giorni di Unix. Il superutente, come suggerisce il nome, ha più poteri di un normale utente, quindi può facilmente provocare il caos con un comando mal digitato. Esamineremo più l'account superutente nella sezione 7. Per ora devi solo sapere che la parola "root" ha molteplici significati nel mondo Linux, quindi il contesto è importante.

Dalla directory principale, il seguente comando ti sposterà nella directory "home" (che è una sottodirectory immediata di "/"):

cd home
pwd
Per passare alla directory principale, in questo caso torna a “/”, usa la sintassi speciale di due punti ( ..) quando cambi la directory (nota lo spazio tra cde .., a differenza di DOS non puoi semplicemente digitare cd..come un solo comando):

cd ..
pwd
Digitare cdda solo è una scorciatoia per tornare alla tua home directory:

cd
pwd
Puoi anche usare ..più di una volta se devi spostarti su più livelli di directory principali:

cd ../..
pwd
Si noti che nell'esempio precedente abbiamo descritto un percorso da seguire attraverso le directory. Il percorso che abbiamo usato significa "a partire dalla directory di lavoro, passa al genitore / da quella nuova posizione passa nuovamente al genitore". Quindi, se volessimo passare direttamente dalla nostra directory home alla directory "etc" (che si trova direttamente nella radice del file system), potremmo usare questo approccio:

cd
pwd

cd ../../etc
pwd
Percorsi relativi e assoluti
La maggior parte degli esempi che abbiamo esaminato finora utilizza percorsi relativi . Cioè, il posto in cui ti trovi dipende dalla tua attuale directory di lavoro. Prova a provare cdnella cartella "etc". Se sei già nella directory principale che funzionerà bene:

cd /
pwd
cd etc
pwd
E se ti trovassi nella tua home directory?

cd
pwd
cd etc
pwd
Vedrai un errore che dice "Nessun file o directory" prima ancora di riuscire a eseguire l'ultimo pwd. La modifica della directory specificando il nome della directory o l'utilizzo ..avrà effetti diversi a seconda del punto di partenza. Il percorso ha senso solo rispetto alla directory di lavoro.

Ma abbiamo visto due comandi che sono assoluti . Non importa quale sia la tua attuale directory di lavoro, avranno lo stesso effetto. Il primo è quando corri cdda solo per andare direttamente alla tua home directory. Il secondo è quando si cd /passava alla directory principale. In effetti ogni percorso che inizia con una barra è un percorso assoluto . Puoi pensarlo dicendo "passa alla directory principale, quindi segui il percorso da lì". Questo ci dà un modo molto più semplice per passare alla etcdirectory, indipendentemente da dove ci troviamo attualmente nel file system:

cd
pwd
cd /etc
pwd
Ci dà anche un altro modo per tornare alla tua home directory e persino alle cartelle al suo interno. Supponiamo di voler andare direttamente alla cartella "Desktop" da qualsiasi punto del disco (notare la "D" maiuscola). Nel seguente comando dovrai sostituire USERNAME con il tuo nome utente, il whoamicomando ti ricorderà il tuo nome utente, nel caso in cui non sei sicuro:

whoami
cd /home/USERNAME/Desktop
pwd
C'è un'altra utile scorciatoia che funziona come un percorso assoluto. Come hai visto, usare "/" all'inizio del percorso significa "iniziare dalla directory principale". Usare il carattere tilde ("~") all'inizio del percorso equivale a "partire dalla mia directory home".

cd ~
pwd

cd ~/Desktop
pwd
Ora quel testo strano nel prompt potrebbe avere un po 'di senso. Hai notato che cambia mentre ti muovi nel file system? Su un sistema Ubuntu mostra il tuo nome utente, il nome di rete del tuo computer e la directory di lavoro corrente. Ma se ti trovi da qualche parte nella tua home directory, userà "~" come abbreviazione. Andiamo un po 'in giro per il file system e teniamo d'occhio il prompt mentre lo fai:

cd
cd /
cd ~/Desktop
cd /etc
cd /var/log
cd ..
cd
Ormai devi annoiarti a muoverti nel file system, ma una buona comprensione dei percorsi assoluti e relativi sarà preziosa mentre passiamo alla creazione di alcune nuove cartelle e file!

Creazione di cartelle e file
In questa sezione creeremo alcuni file reali con cui lavorare. Per evitare di calpestare accidentalmente uno qualsiasi dei tuoi file reali, inizieremo creando una nuova directory, ben lontana dalla tua cartella home, che fungerà da ambiente più sicuro in cui sperimentare:

mkdir /tmp/tutorial
cd /tmp/tutorial
Nota l'uso di un percorso assoluto, per assicurarti di creare la directory tutorial all'interno di / tmp . Senza la barra in avanti all'avvio il mkdircomando proverebbe a trovare una directory tmp nella directory di lavoro corrente, quindi prova a creare una directory tutorial all'interno di quella. Se non fosse possibile trovare una directory tmp, il comando non verrebbe eseguito.

Nel caso in cui non avessi indovinato, mkdirè l'abbreviazione di ' m a k e dir ectory'. Ora che siamo al sicuro all'interno della nostra area di test (ricontrolla pwdse non sei sicuro), creiamo alcune sottodirectory:

mkdir dir1 dir2 dir3
C'è qualcosa di leggermente diverso in quel comando. Finora abbiamo visto solo comandi che funzionano da soli ( cd, pwd) o che hanno un singolo oggetto in seguito ( cd /, cd ~/Desktop). Ma questa volta abbiamo aggiunto tre cose dopo il mkdircomando. Queste cose vengono definite parametri o argomenti e comandi diversi possono accettare diversi numeri di argomenti. Il mkdircomando prevede almeno un argomento, mentre il cdcomando può funzionare con zero o uno, ma non di più. Guarda cosa succede quando provi a passare un numero errato di parametri a un comando:

mkdir
cd /etc ~/Desktop
Torna alle nostre nuove directory. Il comando sopra avrà creato tre nuove sottodirectory all'interno della nostra cartella. Diamo un'occhiata a loro con il comando ls( l i s t):

ls
Se hai seguito gli ultimi comandi, il tuo terminale dovrebbe essere simile a questo:

Immagine

Si noti che ha mkdircreato tutte le cartelle in una directory. Non ha creato dir3 dentro dir2 dentro dir1 o qualsiasi altra struttura nidificata. Ma a volte è utile poter fare esattamente questo, e mkdirha un modo:

mkdir -p dir4/dir5/dir6
ls
Questa volta vedrai che solo dir4 è stato aggiunto all'elenco, perché dir5 è al suo interno e dir6 è al suo interno. Successivamente installeremo uno strumento utile per visualizzare la struttura, ma hai già abbastanza conoscenze per confermarlo:

cd dir4
ls
cd dir5
ls
cd ../..
Il "-p" che abbiamo usato è chiamato un'opzione o un interruttore (in questo caso significa "creare il panche le directory arent ”). Le opzioni vengono utilizzate per modificare il modo in cui un comando opera, consentendo a un singolo comando di comportarsi in una varietà di modi diversi. Sfortunatamente, a causa delle stranezze della storia e della natura umana, le opzioni possono assumere forme diverse con comandi diversi. Li vedrai spesso come singoli caratteri preceduti da un trattino (come in questo caso) o come parole più lunghe precedute da due trattini. Il modulo a carattere singolo consente di combinare più opzioni, sebbene non tutti i comandi lo accetteranno. E per confondere ulteriormente le cose, alcuni comandi non identificano chiaramente le loro opzioni, indipendentemente dal fatto che qualcosa sia un'opzione sia dettata semplicemente dall'ordine degli argomenti! Non devi preoccuparti di tutte le possibilità, basta sapere che esistono opzioni e possono assumere diverse forme.

Don't type these in, they're just here for demonstrative purposes

mkdir --parents --verbose dir4/dir5
mkdir -p --verbose dir4/dir5
mkdir -p -v dir4/dir5
mkdir -pv dir4/dir5
Ora sappiamo come creare più directory semplicemente passandole come argomenti separati al mkdircomando. Ma supponiamo di voler creare una directory con uno spazio nel nome? Proviamo:

mkdir another folder
ls
Probabilmente non hai nemmeno bisogno di digitare quello per indovinare cosa sarebbe successo: due nuove cartelle, una chiamata un'altra e l'altra chiamata cartella . Se si desidera lavorare con spazi nella directory o nei nomi dei file, è necessario evitarli . Non preoccuparti, nessuno sta uscendo di prigione; evadere è un termine informatico che si riferisce all'utilizzo di codici speciali per indicare al computer di trattare determinati caratteri in modo diverso dalla norma. Immettere i comandi seguenti per provare diversi modi per creare cartelle con spazi nel nome:

mkdir "folder 1"
mkdir 'folder 2'
mkdir folder\ 3
mkdir "folder 4" "folder 5"
mkdir -p "folder 6"/"folder 7"
ls
Sebbene la riga di comando possa essere utilizzata per lavorare con file e cartelle con spazi nei loro nomi, la necessità di sfuggirli con virgolette o barre rovesciate rende le cose un po 'più difficili. Spesso puoi dire a una persona che usa molto la riga di comando solo dai loro nomi di file: tenderanno ad attenersi a lettere e numeri e useranno trattini bassi ("_") o trattini ("-") invece di spazi.

Creazione di file tramite reindirizzamento
La nostra cartella dimostrativa sta iniziando a sembrare piuttosto piena di directory, ma in qualche modo manca di file. Rimediamo al fatto che reindirizzando l'output da un comando in modo che, anziché essere stampato sullo schermo, finisca in un nuovo file. Innanzitutto, ricorda a te stesso che cosa lssta mostrando il comando:

ls
Supponiamo di voler catturare l'output di quel comando come file di testo che possiamo esaminare o manipolare ulteriormente. Tutto quello che dobbiamo fare è aggiungere il carattere maggiore di (">") alla fine della nostra riga di comando, seguito dal nome del file su cui scrivere:

ls > output.txt
Questa volta non viene stampato nulla sullo schermo, perché l'output viene reindirizzato al nostro file. Se esegui lssolo, dovresti vedere che il file output.txt è stato creato. Possiamo usare il catcomando per osservarne il contenuto:

cat output.txt
Va bene, quindi non è esattamente ciò che è stato visualizzato sullo schermo in precedenza, ma contiene tutti gli stessi dati ed è in un formato più utile per ulteriori elaborazioni. Diamo un'occhiata a un altro comando echo:

echo "This is a test"
Sì, echostampa di nuovo i suoi argomenti (da qui il nome). Ma combinalo con un reindirizzamento e avrai un modo per creare facilmente piccoli file di test:

echo "This is a test" > test_1.txt
echo "This is a second test" > test_2.txt
echo "This is a third test" > test_3.txt
ls
Si dovrebbe catognuno di questi file per theck loro contenuto. Ma catè più di un semplice visualizzatore di file: il suo nome deriva da "con cat enate", che significa "collegare insieme". Se passi più di un nome file ad catesso, ciascuno di essi verrà riprodotto, uno dopo l'altro, come un singolo blocco di testo:

cat test_1.txt test_2.txt test_3.txt
Dove si desidera passare più nomi di file a un singolo comando, ci sono alcune scorciatoie utili che possono farti risparmiare molta digitazione se i file hanno nomi simili. Un punto interrogativo ("?") Può essere utilizzato per indicare "qualsiasi singolo carattere" all'interno del nome del file. Un asterisco ("*") può essere utilizzato per indicare "zero o più caratteri". Questi sono talvolta indicati come caratteri jolly. Un paio di esempi potrebbero essere d'aiuto, i seguenti comandi fanno tutti la stessa cosa:

cat test_1.txt test_2.txt test_3.txt
cat test?.txt
cat test*
Più escape necessario
Come avrai intuito, questa capacità significa anche che devi evitare i nomi dei file? o * caratteri anche in essi. Di solito è meglio evitare la punteggiatura nei nomi dei file se si desidera manipolarli dalla riga di comando.

Se guardi l'output di lsnoterai che gli unici file o cartelle che iniziano con "t" sono i tre file di test che abbiamo appena creato, quindi potresti persino semplificare ulteriormente l'ultimo comando cat t*, ovvero "concatenare tutto i file i cui nomi iniziano con una t e sono seguiti da zero o più altri caratteri ”. Usiamo questa funzionalità per unire tutti i nostri file in un unico nuovo file, quindi visualizziamo:

cat t* > combined.txt
cat combined.txt
Cosa pensi che accadrà se eseguiamo questi due comandi una seconda volta? Il computer si lamenterà perché il file esiste già? Aggiungerà il testo al file, quindi contiene due copie? O lo sostituirà del tutto? Prova a vedere cosa succede, ma per evitare di digitare nuovamente i comandi puoi usare i tasti Freccia su e Freccia giù per spostarti avanti e indietro nella cronologia dei comandi che hai usato. Premi la Freccia Su un paio di volte per arrivare al primo cate premi Invio per eseguirlo, quindi fai di nuovo lo stesso per arrivare al secondo.

Come puoi vedere, il file ha lo stesso aspetto. Questo non è perché non è stato toccato, ma perché la shell cancella tutto il contenuto del file prima che scriva in esso l'output del catcomando. Per questo motivo, è necessario prestare particolare attenzione quando si utilizza il reindirizzamento per assicurarsi di non sovrascrivere accidentalmente un file necessario. Se si desidera aggiungere, anziché sostituire, il contenuto dei file, raddoppiare il carattere maggiore di:

cat t* >> combined.txt
echo "I've appended a line!" >> combined.txt
cat combined.txt
Ripeti il ​​primo catalcune altre volte, usando la Freccia su per comodità, e forse aggiungi qualche altro echocomando arbitrario , fino a quando il tuo documento di testo è così grande che non si adatterà immediatamente al terminale quando lo usi catper visualizzarlo. Per vedere l'intero file ora abbiamo bisogno di usare un programma diverso, chiamato un cercapersone (perché mostra il tuo file una "pagina" alla volta). Il vecchio cercapersone standard era chiamato more, perché mette una riga di testo in fondo a ogni pagina che dice "–Più–" per indicare che non hai ancora letto tutto. Al giorno d'oggi c'è un cercapersone di gran lunga migliore che dovresti usare invece: poiché sostituisce more, i programmatori hanno deciso di chiamarlo less.

less combined.txt
Durante la visualizzazione di un file tramite lessè possibile utilizzare la freccia su , freccia giù , Pagina su , Pagina giù , Inizio e Fine tasti per muoversi attraverso il file. Provali per vedere la differenza tra loro. Al termine della visualizzazione del file, premere q per q uit lesse tornare alla riga di comando.

Una nota sul caso
I sistemi Unix fanno distinzione tra maiuscole e minuscole, ovvero considerano "A.txt" e "a.txt" due file diversi. Se dovessi eseguire le seguenti righe finiresti con tre file:

echo "Lower case" > a.txt
echo "Upper case" > A.TXT
echo "Mixed case" > A.txt
Generalmente dovresti cercare di evitare di creare file e cartelle il cui nome varia solo in base al caso. Non solo aiuterà a evitare confusione, ma previene anche problemi quando si lavora con diversi sistemi operativi. Windows, ad esempio, non fa distinzione tra maiuscole e minuscole , quindi tratterebbe tutti e tre i nomi di file sopra come un singolo file, causando potenzialmente la perdita di dati o altri problemi.

Potresti essere tentato di premere semplicemente il tasto BLOC MAIUSC e utilizzare le maiuscole per tutti i nomi dei file. Ma la stragrande maggioranza dei comandi di shell sono in minuscolo, quindi dovresti finire per accenderlo e spegnerlo durante la digitazione. La maggior parte degli utenti della riga di comando più esperti tendono a attenersi principalmente ai nomi in minuscolo per i loro file e directory, in modo che raramente debbano preoccuparsi degli scontri con i nomi di file o del caso da utilizzare per ogni lettera nel nome.

Buona pratica di denominazione
Se si considera la distinzione tra maiuscole e minuscole e la fuga, una buona regola empirica è quella di mantenere i nomi dei file tutti in minuscolo, con solo lettere, numeri, trattini bassi e trattini. Per i file di solito c'è anche un punto e alcuni caratteri alla fine per indicare il tipo di file che è (indicato come "estensione del file"). Questa linea guida può sembrare restrittiva, ma se finisci per usare la riga di comando con qualsiasi frequenza sarai contento di essere rimasto fedele a questo schema.

Spostamento e manipolazione dei file
Ora che abbiamo alcuni file, diamo un'occhiata al tipo di attività quotidiane che potresti dover eseguire su di esse. In pratica, molto probabilmente utilizzerai un programma grafico quando desideri spostare, rinominare o eliminare uno o due file, ma sapere come farlo utilizzando la riga di comando può essere utile per modifiche di massa o quando i file sono distribuiti tra cartelle diverse. Inoltre, imparerai alcune altre cose sulla riga di comando lungo la strada.

Cominciamo inserendo il nostro file Combined.txt nella nostra directory dir1 , usando il comando mv( m o v e):

mv combined.txt dir1
Puoi confermare che il lavoro è stato fatto usando lsper vedere che manca dalla directory di lavoro, quindi cd dir1per cambiare in dir1 , lsper vedere che è lì dentro, quindi cd ..per spostare di nuovo la directory di lavoro. Oppure potresti risparmiare molta digitazione passando un percorso direttamente al lscomando per ottenere direttamente la conferma che stai cercando:

ls dir1
Supponiamo ora che il file non dovrebbe essere in dir1 dopo tutto. Spostiamolo di nuovo nella directory di lavoro. Potremmo cdin dir1 quindi usare mv combined.txt ..per dire "spostare combinati.txt nella directory padre". Ma possiamo usare un'altra scorciatoia di percorso per evitare di cambiare directory. Allo stesso modo in cui due punti ( ..) rappresentano la directory principale, quindi un singolo punto ( .) può essere utilizzato per rappresentare la directory di lavoro corrente. Poiché sappiamo che c'è solo un file in dir1 , possiamo anche usare “*” per abbinare qualsiasi nome di file in quella directory, salvandoci qualche altra sequenza di tasti. Il nostro comando per spostare nuovamente il file nella directory di lavoro diventa quindi questo (notare lo spazio prima del punto, ci sonodue parametri che vengono passati amv):

mv dir1/* .
Il mvcomando ci consente anche di spostare più di un file alla volta. Se si passano più di due argomenti, l'ultimo viene considerato la directory di destinazione e gli altri vengono considerati come file (o directory) da spostare. Usiamo un solo comando per spostare combined.txt , tutti i nostri test_n.txt file e dir3 in dir2 . C'è qualcosa in più qui, ma se guardi ogni argomento alla volta dovresti essere in grado di capire cosa sta succedendo:

mv combined.txt test_* dir3 dir2
ls
ls dir2
Con combinati.txt ora spostati in dir2 , cosa succede se decidiamo che è di nuovo nel posto sbagliato? Invece di dir2 avrebbe dovuto essere messo in dir6 , che è quello che è dentro dir5 , che è in dir4 . Con quello che ora sappiamo sui percorsi, non è un problema neanche:

mv dir2/combined.txt dir4/dir5/dir6
ls dir2
ls dir4/dir5/dir6
Nota come il nostro mvcomando ci consente di spostare il file da una directory a un'altra, anche se la nostra directory di lavoro è qualcosa di completamente diverso. Questa è una potente proprietà della riga di comando: indipendentemente da dove vi troviate nel file system, è ancora possibile operare su file e cartelle in posizioni totalmente diverse.

Dal momento che sembra che stiamo usando (e spostando) quel file molto, forse dovremmo conservarne una copia nella nostra directory di lavoro. Proprio come i mvfile di comando si muove, in modo che il cpcomando di c o p i loro (ancora una volta, notare lo spazio prima del punto):

cp dir4/dir5/dir6/combined.txt .
ls dir4/dir5/dir6
ls
Grande! Ora creiamo un'altra copia del file, nella nostra directory di lavoro ma con un nome diverso. Possiamo usare di cpnuovo il comando, ma invece di assegnargli un percorso di directory come ultimo argomento, gli daremo invece un nuovo nome di file:

cp combined.txt backup_combined.txt
ls
Va bene, ma forse la scelta del nome del backup potrebbe essere migliore. Perché non rinominarlo in modo che appaia sempre accanto al file originale in un elenco ordinato. La tradizionale riga di comando Unix gestisce una ridenominazione come se si stesse spostando il file da un nome all'altro, quindi il nostro vecchio amico mvè il comando da usare. In questo caso basta specificare due argomenti: il file che si desidera rinominare e il nuovo nome che si desidera utilizzare.

mv backup_combined.txt combined_backup.txt
ls
Questo funziona anche con le directory, dandoci un modo per risolvere quelle difficili con spazi nel nome che abbiamo creato in precedenza. Per evitare di digitare nuovamente ciascun comando dopo il primo, utilizzare la freccia su per estrarre il comando precedente nella cronologia. È quindi possibile modificare il comando prima di eseguirlo spostando il cursore a sinistra e a destra con i tasti freccia e rimuovendo il carattere a sinistra con Backspace o quello su cui si trova il cursore con Elimina . Infine, digita il nuovo carattere e premi Invio o A capo per eseguire il comando al termine. Assicurati di modificare entrambi gli aspetti del numero in ciascuna di queste righe.

mv "folder 1" folder_1
mv "folder 2" folder_2
mv "folder 3" folder_3
mv "folder 4" folder_4
mv "folder 5" folder_5
mv "folder 6" folder_6
ls
Eliminazione di file e cartelle
Avviso
In questa prossima sezione inizieremo a eliminare file e cartelle. Per essere assolutamente certi di non eliminare accidentalmente nulla nella cartella home, utilizzare il pwdcomando per ricontrollare di essere ancora nella directory / tmp / tutorial prima di procedere.

Ora sappiamo come spostare, copiare e rinominare file e directory. Dato che questi sono solo file di test, tuttavia, forse non abbiamo davvero bisogno di tre diverse copie di combinati.txt dopo tutto. Riordiniamo un po ', usando il comando rm( r e m ove):

rm dir4/dir5/dir6/combined.txt combined_backup.txt
Forse dovremmo rimuovere anche alcune di quelle directory in eccesso:

rm folder_*

Immagine

Cosa è successo la? Bene, si scopre che rmha una piccola rete di sicurezza. Certo, puoi usarlo per eliminare ogni singolo file in una directory con un singolo comando, cancellando accidentalmente migliaia di file in un istante, senza alcun mezzo per recuperarli. Ma non ti permetterà di eliminare una directory. Io suppongo che aiuta impedire l'eliminazione accidentale di migliaia di altri file, ma sembra un po 'meschino per un comando come distruttivo per esitano a rimuovere una directory vuota. Fortunatamente c'è un comando rmdir( r e m ove dir ectory) che farà invece il lavoro per noi:

rmdir folder_*

Immagine

Bene, è un po 'meglio, ma c'è ancora un errore. Se esegui lsvedrai che la maggior parte delle cartelle sono sparite, ma folder_6 è ancora in giro. Come ricorderete, folder_6 ha ancora una cartella 7 al suo interno e rmdircancellerà solo le cartelle vuote. Ancora una volta, è una piccola rete di sicurezza che ti impedisce di eliminare accidentalmente una cartella piena di file quando non volevi.

In questo caso, tuttavia, intendiamo farlo . L'aggiunta di opzioni al nostro rmo ai rmdircomandi ci consentirà di eseguire azioni pericolose senza l'aiuto di una rete di sicurezza! Nel caso di rmdirpossiamo aggiungere un -pinterruttore per dirgli di rimuovere anche le directory principali. Pensalo come il contrappunto di mkdir -p. Quindi, se dovessi eseguirlo rmdir -p dir1/dir2/dir3, eliminerebbe prima dir3 , quindi dir2 , quindi infine elimina dir1 . Segue comunque le normali rmdirregole dell'eliminazione delle sole directory vuote, quindi se ci fosse anche un file in dir1 , per esempio, solo dir3 e dir2 verrebbero rimossi.

Un approccio più comune, quando sei veramente, davvero , davvero sicuro di voler eliminare un'intera directory e qualsiasi cosa al suo interno, è dire rmdi lavorare in modo ricorsivo utilizzando l' -rinterruttore, nel qual caso eliminerà felicemente cartelle e file . Con questo in mente, ecco il comando per sbarazzarsi di quella fastidiosa cartella_6 e della sottodirectory al suo interno:

rm -r folder_6
ls
Ricorda: sebbene rm -rsia rapido e conveniente, è anche pericoloso. È più sicuro eliminare esplicitamente i file per cancellare una directory, quindi cd ..per il genitore prima di utilizzare rmdirper rimuoverlo.

Avviso importante
A differenza delle interfacce grafiche, rmnon sposta i file in una cartella denominata "cestino" o simile. Invece li cancella totalmente, completamente e irrevocabilmente. Devi essere molto attento con i parametri che utilizzi rmper assicurarti di eliminare solo i file che intendi. Prestare particolare attenzione quando si utilizzano i caratteri jolly, poiché è facile eliminare accidentalmente più file del previsto. Un carattere di spazio errato nel tuo comando può cambiarlo completamente: rm t*significa "elimina tutti i file che iniziano con t ", mentre rm t *significa "elimina il file t così come qualsiasi file il cui nome è composto da zero o più caratteri, che sarebbe tutto nel directory! Se non sei affatto sicuro usa il -i(i nteractive) opzione rm, che ti chiederà di confermare la cancellazione di ogni file; inserisci Y per eliminarlo, N per mantenerlo e premi Ctrl-C per interrompere completamente l'operazione.

I computer e i telefoni di oggi hanno il tipo di capacità grafiche e audio che i nostri utenti dei terminali degli anni '70 non potevano nemmeno immaginare. Eppure il testo prevale come mezzo per organizzare e classificare i file. Che si tratti del nome del file stesso, dei GPS coordinati incorporati nelle foto scattate sul telefono o dei metadati memorizzati in un file audio, il testo svolge ancora un ruolo vitale in ogni aspetto dell'informatica. È una fortuna per noi che la riga di comando di Linux includa alcuni potenti strumenti per manipolare il contenuto del testo e modi per unire questi strumenti per creare qualcosa di ancora più capace.

Cominciamo con una semplice domanda. Quante righe ci sono nel tuo file Combined.txt ? Il comando wc( w ord c ount) può dirci che, usando l' -linterruttore per dirlo, vogliamo solo il conteggio delle righe (può anche fare il conteggio dei caratteri e, come suggerisce il nome, il conteggio delle parole):

wc -l combined.txt
Allo stesso modo, se volessi sapere quanti file e cartelle ci sono nella tua home directory e poi riordinare dopo te stesso, potresti fare questo:

ls ~ > file_list.txt
wc -l file_list.txt
rm file_list.txt
Questo metodo funziona, ma la creazione di un file temporaneo per contenere l'output lssolo per eliminarlo due righe in seguito sembra un po 'eccessiva. Fortunatamente la riga di comando Unix fornisce un collegamento che evita di dover creare un file temporaneo, prendendo l'output da un comando (indicato come output standard o STDOUT ) e inserendolo direttamente come input per un altro comando ( input standard o STDIN ). È come se tu avessi collegato una pipe tra l'output di un comando e l'input del comando successivo, al punto che questo processo viene effettivamente chiamato piping dei dati da un comando a un altro. Ecco come convogliare l'output del nostro lscomando in wc:

ls ~ | wc -l
Si noti che non è stato creato alcun file temporaneo e non è necessario alcun nome di file. Le pipe funzionano interamente in memoria e la maggior parte degli strumenti della riga di comando di Unix prevede di ricevere input da una pipe se non si specifica un file su cui lavorare. Guardando la riga sopra, puoi vedere che sono due comandi ls elenca i contenuti della home directory e wc -l(conta le linee), separati da un carattere barra verticale ("|"). Questo processo di reindirizzamento di un comando in un altro è così comunemente usato che il carattere stesso viene spesso indicato come carattere di pipe , quindi se vedi quel termine ora sai che significa solo barra verticale.

Nota che gli spazi attorno al carattere pipe non sono importanti, li abbiamo usati per chiarezza, ma il seguente comando funziona altrettanto bene, questa volta per dirci quanti elementi ci sono nella directory / etc :

ls /etc|wc -l
Accidenti! Sono parecchi file. Se volessimo elencarli tutti, riempirebbe chiaramente più di una singola schermata. Come abbiamo scoperto in precedenza, quando un comando produce un sacco di output, è meglio usarlo lessper visualizzarlo e quel consiglio si applica ancora quando si usa una pipe (ricordarsi, premere q per uscire):

ls /etc | less
Tornando ai nostri file, sappiamo come ottenere il numero di righe in combinate.txt , ma dato che è stato creato concatenando gli stessi file più volte, mi chiedo quante linee uniche ci siano? Unix ha un comando, uniqche produrrà solo righe univoche nel file. Quindi abbiamo bisogno di catestrarre il file e di inserirlo uniq. Ma tutto ciò che vogliamo è un conteggio delle righe, quindi dobbiamo usare wcanche noi. Fortunatamente la riga di comando non ti limita a una singola pipe alla volta, quindi possiamo continuare a concatenare tutti i comandi di cui abbiamo bisogno:

cat combined.txt | uniq | wc -l
Quella riga ha probabilmente comportato un conteggio abbastanza vicino al numero totale di righe nel file, se non esattamente lo stesso. Sicuramente non può essere vero? Salta l'ultimo tubo per vedere l'output del comando per avere un'idea migliore di ciò che sta accadendo. Se il tuo file è molto lungo, ti consigliamo di inviarlo lessper facilitare l'ispezione:

cat combined.txt | uniq | less
Sembra che pochissime delle nostre linee duplicate vengano rimosse. Per capire perché, dobbiamo consultare la documentazione per il uniqcomando. La maggior parte degli strumenti da riga di comando sono dotati di una breve (e talvolta non-così-breve) Manuale di istruzioni, si accede tramite il man( uomo comando di UAL). L'output viene automaticamente reindirizzato tramite il tuo cercapersone, che sarà in genere less, quindi puoi spostarti avanti e indietro attraverso l'output, quindi premi q quando hai finito:

man uniq

Immagine

Poiché questo tipo di documentazione è accessibile tramite il mancomando, la sentirai denominata "pagina man", come in "controlla la pagina man per maggiori dettagli". Il formato delle pagine man è spesso conciso, pensale più come una rapida panoramica di un comando che come un tutorial completo. Spesso sono altamente tecnici, ma di solito puoi saltare la maggior parte dei contenuti e cercare i dettagli dell'opzione o dell'argomento che stai utilizzando.

La uniqpagina man è un tipico esempio in quanto inizia con una breve descrizione di una riga del comando, passa a una sinossi di come usarlo, quindi ha una descrizione dettagliata di ogni opzione o parametro. Ma mentre le pagine man sono inestimabili, possono anche essere incomprensibili. Sono meglio utilizzati quando è necessario un promemoria di un particolare parametro o parametro, piuttosto che come risorsa generale per imparare a utilizzare la riga di comando. Tuttavia, la prima riga della sezione DESCRIZIONE per man uniqrisponde alla domanda sul perché le linee duplicate non sono state rimosse: funziona solo su linee corrispondenti adiacenti .

La domanda, quindi, è come riorganizzare le righe nel nostro file in modo che le voci duplicate si trovino su linee adiacenti. Se dovessimo ordinare i contenuti del file in ordine alfabetico, ciò farebbe il trucco. Unix offre un sortcomando per fare esattamente questo. Un rapido controllo man sortmostra che possiamo passare un nome di file direttamente al comando, quindi vediamo cosa fa al nostro file:

sort combined.txt | less
Dovresti essere in grado di vedere che le linee sono state riordinate ed è ora adatto per il piping direttamente uniq. Finalmente possiamo completare il nostro compito di contare le righe univoche nel file:

sort combined.txt | uniq | wc -l
Come puoi vedere, la possibilità di reindirizzare i dati da un comando a un altro, costruendo lunghe catene per manipolare i tuoi dati, è uno strumento potente, oltre a ridurre la necessità di file temporanei e risparmiando molta digitazione. Per questo motivo lo vedrai usato abbastanza spesso nelle righe di comando. Una lunga catena di comandi all'inizio potrebbe sembrare intimidatoria, ma ricorda che puoi spezzare persino la catena più lunga in singoli comandi (e guardare le loro pagine man) per capire meglio cosa sta facendo.

Molti manuali
La maggior parte degli strumenti da riga di comando di Linux include una pagina man. Prova a prendere un breve sguardo alle pagine di alcuni dei comandi che avete già incontrato: man ls, man cp, man rmdire così via. C'è anche una pagina man per il programma man stesso, a cui si accede usando man man, ovviamente.

La riga di comando e il superutente
Un buon motivo per apprendere alcune nozioni di base sulla riga di comando è che le istruzioni online spesso favoriranno l'uso dei comandi di shell su un'interfaccia grafica. Laddove tali istruzioni richiedano modifiche al computer che vanno oltre la modifica di alcuni file nella directory home, inevitabilmente ti troverai di fronte a comandi che devono essere eseguiti come amministratore della macchina (o superutente nel linguaggio Unix). Prima di iniziare a eseguire comandi arbitrari che trovi in ​​un angolo buio di Internet, vale la pena comprendere le implicazioni dell'esecuzione come amministratore e come individuare le istruzioni che lo richiedono, in modo da poter valutare meglio se sono sicure da eseguire o non.

Il superutente è, come suggerisce il nome, un utente con superpoteri. Nei sistemi più vecchi era un vero utente, con un vero nome utente (quasi sempre "root") a cui si poteva accedere come se si avesse la password. Per quanto riguarda quei superpoteri: root può modificare o eliminare qualsiasi file in qualsiasi directory sul sistema, indipendentemente da chi li possiede; root può riscrivere le regole del firewall o avviare servizi di rete che potrebbero potenzialmente aprire la macchina a un attacco; root può arrestare la macchina anche se altre persone la stanno ancora utilizzando. In breve, root può fare praticamente qualsiasi cosa , saltando facilmente attorno alle protezioni che di solito vengono messe in atto per impedire agli utenti di oltrepassare i propri limiti.

Naturalmente una persona che ha effettuato il login come root è in grado di commettere errori come chiunque altro. Gli annali della cronologia informatica sono pieni di storie di un comando errato che elimina l'intero file system o uccide un server vitale. Esiste quindi la possibilità di un attacco dannoso: se un utente ha effettuato l'accesso come root e lascia la propria scrivania, non è troppo complicato per un collega scontento salire sulla propria macchina e provocare il caos. Nonostante ciò, essendo la natura umana quella che è, nel corso degli anni molti amministratori si sono resi colpevoli di usare root come account principale o solo.

Non utilizzare l'account di root
Se qualcuno ti chiede di abilitare l' account di root o accedere come root , sii molto sospettoso delle sue intenzioni.

Nel tentativo di ridurre questi problemi, molte distribuzioni Linux hanno iniziato a incoraggiare l'uso del sucomando. Questo è variamente descritto come abbreviazione di ' s uper u ser' o ' s strega u ser', e ti permette di cambiare ad un altro utente sulla macchina, senza dover uscire e di nuovo. Se utilizzato senza argomenti, si presuppone che si desideri passare all'utente root (da qui la prima interpretazione del nome), ma è possibile passare un nome utente per passare a un account utente specifico (la seconda interpretazione). Incoraggiando l'uso disul'obiettivo era persuadere gli amministratori a trascorrere la maggior parte del loro tempo utilizzando un account normale, passare all'account superutente solo quando necessario e quindi utilizzare il logoutcomando (o il collegamento Ctrl-D ) il più presto possibile per tornare al proprio utente- conto di livello.

Riducendo al minimo la quantità di tempo trascorso collegato come root , l'uso di suriduce la finestra di opportunità in cui commettere un errore catastrofico. Nonostante ciò, essendo la natura umana quella che è, molti amministratori si sono resi colpevoli di lasciare aperti terminali di lunga durata in cui erano abituati sua passare all'account root . A tale proposito, è sustato solo un piccolo passo avanti per la sicurezza.

Non usare su
Se qualcuno ti chiede di usare su, fai attenzione. Se stai usando Ubuntu l' account di root è disabilitato di default, quindi susenza parametri non funzionerà. Ma non vale ancora la pena correre il rischio, nel caso in cui l'account sia stato abilitato senza che te ne accorga. Se ti viene chiesto di utilizzare suun nome utente, allora (se hai la password) avrai accesso a tutti i file di quell'utente e potresti cancellarli o modificarli accidentalmente.

Quando si utilizza sul'intera sessione del terminale si passa all'altro utente. I comandi che non necessitano dell'accesso alla radice , qualcosa di banale come pwdo ls, verrebbero eseguiti sotto gli auspici del superutente, aumentando il rischio di un bug nel programma che causi gravi problemi. Peggio ancora, se perdi la traccia di quale utente stai attualmente operando, potresti emettere un comando che è abbastanza benigno quando eseguito come utente, ma che potrebbe distruggere l'intero sistema se eseguito come root .

Meglio disabilitare completamente l' account root e quindi, invece di consentire sessioni terminali di lunga durata con poteri pericolosi, è necessario che l'utente richieda specificamente i diritti di superutente in base al comando. La chiave di questo approccio è un comando chiamato sudo(come in “ s strega u ser e fare il comando”).

sudoviene utilizzato per aggiungere un prefisso a un comando che deve essere eseguito con i privilegi di superutente. Un file di configurazione viene utilizzato per definire quali utenti possono utilizzare sudoe quali comandi possono eseguire. Quando si esegue un comando come questo, all'utente viene richiesta la propria password, che viene quindi memorizzata nella cache per un periodo di tempo (impostazione predefinita a 15 minuti), quindi se devono eseguire più comandi a livello di superutente non continuano a ricevere continuamente chiesto di digitarlo.

Su un sistema Ubuntu il primo utente creato quando il sistema è installato è considerato il superutente. Quando si aggiunge un nuovo utente c'è un'opzione per crearli come amministratore, nel qual caso saranno anche in grado di eseguire comandi da superutente sudo. In questo screenshot di Ubuntu 18.04 puoi vedere l'opzione nella parte superiore della finestra di dialogo:

Immagine

Supponendo che tu sia su un sistema Linux che utilizza sudoe il tuo account è configurato come amministratore, prova quanto segue per vedere cosa succede quando provi ad accedere a un file considerato sensibile (contiene password crittografate):

cat /etc/shadow
sudo cat /etc/shadow

Immagine

Se inserisci la password quando richiesto, dovresti vedere il contenuto del /etc/shadowfile. Ora cancella il terminale eseguendo il resetcomando ed esegui di sudo cat /etc/shadownuovo. Questa volta il file verrà visualizzato senza richiedere una password, poiché è ancora nella cache.

Fai attenzione con sudo
Se ti viene richiesto di eseguire un comando con sudo, assicurati di capire cosa sta facendo il comando prima di continuare. Correre con sudodà a quel comando tutti gli stessi poteri di un superutente. Ad esempio, il sito di un editore di software potrebbe chiederti di scaricare un file e modificarne le autorizzazioni, quindi utilizzarlo sudoper eseguirlo. A meno che tu non sappia esattamente cosa sta facendo il file, stai aprendo un buco attraverso il quale il malware potrebbe potenzialmente essere installato sul tuo sistema. sudopuò eseguire solo un comando alla volta, ma tale comando potrebbe eseguirne molti altri. Considera ogni nuovo utilizzo sudocome pericoloso quanto il login come root .

Per istruzioni su Ubuntu, un aspetto comune sudoè l'installazione di nuovo software sul sistema usando i comandi apto apt-get. Se le istruzioni richiedono prima di aggiungere un nuovo repository di software al sistema, utilizzando il apt-add-repositorycomando, modificando i file /etc/apto utilizzando un "PPA" (Personal Package Archive), fare attenzione poiché queste fonti non sono curate da Canonical . Ma spesso le istruzioni richiedono solo l'installazione di software dai repository standard, che dovrebbe essere sicuro.

Installazione di nuovo software
Esistono molti modi diversi per installare software su sistemi Linux. L'installazione diretta dai repository software ufficiali della tua distro è l'opzione più sicura, ma a volte l'applicazione o la versione che desideri semplicemente non sono disponibili in questo modo. Durante l'installazione tramite qualsiasi altro meccanismo, assicurati di ottenere i file da una fonte ufficiale per il progetto in questione.

Indicazioni che i file sono provenienti dall'esterno repository della distribuzione includono (ma non sono limitati a) l'uso di qualsiasi dei seguenti comandi: curl, wget, pip, npm, make, o eventuali istruzioni che ti dicono di cambiare i permessi di un file per renderlo eseguibile.

Sempre più Ubuntu utilizza "snap", un nuovo formato di pacchetto che offre alcuni miglioramenti della sicurezza limitando i programmi più da vicino per impedire loro di accedere a parti del sistema che non sono necessarie. Ma alcune opzioni possono ridurre il livello di sicurezza, quindi, se ti viene chiesto di eseguire snap installqualsiasi parametro diverso dal nome dello snap, vale la pena controllare esattamente cosa sta cercando di fare il comando.

Installiamo un nuovo programma da riga di comando dai repository Ubuntu standard per illustrare questo uso di sudo:

sudo apt install tree
Dopo aver fornito la password, il aptprogramma stamperà alcune righe di testo per dirti cosa sta facendo. Il treeprogramma è solo piccolo, quindi non dovrebbe richiedere più di un minuto o due per scaricare e installare per la maggior parte degli utenti. Una volta tornato al normale prompt della riga di comando, il programma è installato e pronto per l'uso. Eseguiamolo per avere una migliore panoramica di come appare la nostra raccolta di file e cartelle:

cd /tmp/tutorial
tree
L'output del comando tree

Immagine

Tornando al comando che ha effettivamente installato il nuovo programma ( sudo apt install tree) sembra leggermente diverso da quelli che hai visto finora. In pratica funziona così:

Il sudocomando, se utilizzato senza alcuna opzione, supporrà che il primo parametro sia un comando per l'esecuzione con i privilegi di superutente. Qualsiasi altro parametro verrà passato direttamente al nuovo comando. sudoGli switch iniziano tutti con uno o due trattini e devono immediatamente seguire il sudocomando, quindi non ci può essere confusione sul fatto che il secondo parametro sulla riga sia un comando o un'opzione.

Il comando in questo caso è apt. A differenza degli altri comandi che abbiamo visto, questo non funziona direttamente con i file. Si aspetta invece che il suo primo parametro sia un'istruzione da eseguire ( install), con il resto dei parametri che varia in base all'istruzione.

In questo caso il installcomando indica aptche il resto della riga di comando sarà costituito da uno o più nomi di pacchetti da installare dai repository software del sistema. Di solito questo aggiungerà nuovo software alla macchina, ma i pacchetti potrebbero essere qualsiasi raccolta di file che devono essere installati in posizioni particolari, come caratteri o immagini desktop.

Puoi eseguire sudoqualsiasi comando per eseguirlo come superutente, ma raramente è necessario. Anche i file di configurazione del sistema possono spesso essere visualizzati (con cato less) come un normale utente e richiedono privilegi di root solo se è necessario modificarli.

Attenzione a sudo su
Un trucco con sudoè usarlo per eseguire il sucomando. Questo ti darà una shell di root anche se l' account di root è disabilitato. Può essere utile quando devi eseguire una serie di comandi come superutente, per evitare di doverli aggiungere tutti con prefisso sudo, ma ti apre esattamente allo stesso tipo di problemi descritti susopra. Se segui le istruzioni che ti dicono di eseguire sudo su, tieni presente che ogni comando successivo verrà eseguito come utente root .

In questa sezione hai imparato a conoscere i pericoli dell'account di root e come i moderni sistemi Linux come Ubuntu cercano di ridurre il rischio di pericolo usando sudo. Ma qualsiasi uso di poteri da superutente dovrebbe essere considerato attentamente. Quando segui le istruzioni che trovi online, dovresti ora trovarti in una posizione migliore per individuare quei comandi che potrebbero richiedere un maggiore controllo.

File nascosti
Prima di concludere questo tutorial vale la pena menzionare i file (e le cartelle) nascosti . Questi sono comunemente usati su sistemi Linux per archiviare impostazioni e dati di configurazione e in genere sono nascosti semplicemente in modo da non ingombrare la visualizzazione dei propri file. Non c'è niente di speciale in un file o in una cartella nascosti, a parte il suo nome: è sufficiente iniziare un nome con un punto (".") Per farlo scomparire.

cd /tmp/tutorial
ls
mv combined.txt .combined.txt
ls
Puoi comunque lavorare con il file nascosto assicurandoti di includere il punto quando ne specifichi il nome:

cat .combined.txt
mkdir .hidden
mv .combined.txt .hidden
less .hidden/.combined.txt
Se esegui lsvedrai che la .hiddendirectory è, come prevedibile, nascosta. Puoi ancora elencarne il contenuto usando ls .hidden, ma poiché contiene solo un singolo file che è, di per sé, nascosto non otterrai molto output. Ma puoi usare l' -aopzione (show a ll) lsper farlo mostrare tutto in una directory, inclusi i file e le cartelle nascosti:

ls
ls -a
ls .hidden
ls -a .hidden
Si noti che le scorciatoie che abbiamo usato in precedenza .e .., inoltre, sembrano essere vere directory.

Per quanto riguarda il nostro treecomando recentemente installato , funziona in modo simile (tranne che senza un aspetto di .e ..):

tree
tree -a
Torna alla tua home directory ( cd) e prova a eseguire lssenza e poi con l' -ainterruttore. Installa l'output wc -lper darti un'idea più chiara di quanti file e cartelle nascosti sono stati proprio sotto il naso per tutto questo tempo. Questi file in genere memorizzano la tua configurazione personale ed è il modo in cui i sistemi Unix hanno sempre offerto la possibilità di avere impostazioni a livello di sistema (di solito in /etc) che possono essere sovrascritte dai singoli utenti (per gentile concessione di file nascosti nella loro home directory).

Di solito non è necessario avere a che fare con file nascosti, ma a volte le istruzioni potrebbero richiedere di cdinserire .configo modificare alcuni file il cui nome inizia con un punto. Almeno ora capirai cosa sta succedendo, anche quando non riesci a vedere facilmente il file nei tuoi strumenti grafici.

Pulire
Abbiamo raggiunto la fine di questo tutorial e dovresti essere di nuovo nella tua home directory ora (usa pwdper controllare e cdper andarci se non lo sei). È solo educato lasciare il tuo computer nello stesso stato in cui lo abbiamo trovato, quindi come passaggio finale, rimuoviamo l'area sperimentale che stavamo usando in precedenza, quindi ricontrolliamo che sia effettivamente andato:

rm -r /tmp/tutorial
ls /tmp
Come ultimo passo, chiudiamo il terminale. Puoi semplicemente chiudere la finestra, ma è meglio disconnettersi dalla shell. Puoi usare il logoutcomando o la scorciatoia da tastiera Ctrl-D . Se hai intenzione di usare molto il terminale, memorizzare Ctrl-Alt-T per avviare il terminale e Ctrl-D per chiuderlo ti farà presto sentire come un pratico assistente su cui puoi chiamare all'istante e chiudere altrettanto facilmente.

Conclusione
Questo tutorial è stato solo una breve introduzione alla riga di comando di Linux. Abbiamo esaminato alcuni comandi comuni per spostarsi nel file system e manipolare i file, ma nessun tutorial potrebbe sperare di fornire una guida completa per ogni comando disponibile. La cosa più importante è che hai imparato gli aspetti chiave del lavoro con la shell. Vi è stata introdotta una terminologia (e sinonimi) ampiamente usata che potreste trovare online e avete acquisito una visione di alcune delle parti chiave di un tipico comando di shell. Hai imparato su percorsi assoluti e relativi, argomenti, opzioni, pagine man sudoe root , file nascosti e molto altro.

Con questi concetti chiave dovresti essere in grado di dare più senso a tutte le istruzioni della riga di comando che incontri. Anche se non capisci ogni singolo comando, dovresti almeno avere un'idea di dove si ferma un comando e inizia il successivo. Dovresti essere più facilmente in grado di dire quali file stanno manipolando o quali altri parametri e parametri vengono utilizzati. Con riferimento alle pagine man potresti anche essere in grado di spigolare esattamente cosa sta facendo il comando, o almeno avere un'idea generale.

C'è poco che abbiamo coperto qui che probabilmente ti farà abbandonare il tuo file manager grafico a favore di un prompt, ma la manipolazione dei file non era davvero l'obiettivo principale. Se, tuttavia, sei incuriosito dalla capacità di influenzare i file in diverse parti del tuo disco rigido con pochi tasti premuti, c'è ancora molto da imparare.

Ulteriori letture

Rispondi