Ricontrolla di aver digitato correttamente il comando prima di premere “Invio”. Su Linux, un errore di battitura può avere ripercussioni distruttive. Usa il completamento tramite tabulazione per compilare automaticamente il maggior numero possibile di voci della riga di comando. Anche gli alias per comandi lunghi e complicati sono un’ottima idea.
La riga di comando di Linux offre una grande potenza. Il problema è che l’uso corretto di quel potere dipende dall’accuratezza della tua digitazione. Ecco otto errori di battitura che non vorresti mai fare.
La riga di comando di Linux
La riga di comando di Linux è un portale di grande potere, ma un errore di battitura è tutto ciò che serve perché quel potere si rivolti contro di te. Abbiamo tutti sentito parlare del comando che non dovresti mai eseguire. Quello di cui stiamo parlando qui sono i comandi che vuoi eseguire, ma dove un errore può significare un disastro.
Quando premi “Invio”, tutto ciò che hai digitato viene elaborato dalla shell. Gli alias e le variabili vengono espansi. Vengono identificati comandi, opzioni e parametri. Questo si chiama analisi. Il passaggio successivo passa il tuo input analizzato ai comandi che eseguiranno le tue istruzioni.
Se commetti un errore quando digiti i tuoi comandi, potrebbe essere intrappolato come un errore di sintassi. Ma se il tuo errore crea un’altra riga di comando valida, verrà eseguita.
Un semplice errore di battitura può essere veramente distruttivo. Il livello di distruzione dipende dal comando e dall’errore. Potresti perdere tempo. Potresti perdere un file. Potresti perdere un intero file system.
1. Non dimenticare la -a
Potrebbe essere necessario aggiungere qualcuno a un gruppo per consentire loro, ad esempio, di utilizzare un particolare software. Ad esempio, VirtualBox richiede che gli utenti facciano parte del gruppo “vboxusers”. Possiamo farlo con usermod
.
Il groups
comando elenca i gruppi di un utente .
gruppi
Aggiungeremo l’utente dave
a un nuovo gruppo. L’ opzione -a
(aggiungi) aggiunge il nuovo gruppo all’elenco dei gruppi esistenti in cui si trova l’utente. L’ -G
opzione (gruppi) identifica il gruppo.
sudo usermod -a -G vboxusers dave
Il nuovo gruppo viene visualizzato dopo l’accesso e la disconnessione dell’utente.
gruppi
Ora è nel gruppo “vboxusers”. Tuttavia, se si dimentica di utilizzare l’ -a
opzione (aggiungi), tutti i gruppi esistenti dell’utente vengono rimossi. L’unico gruppo in cui saranno, è il nuovo gruppo.
Questo è il comando errato :
sudo usermod -G vboxusers dave
Quando accedono successivamente, scopriranno di essere solo in un gruppo.
gruppi
Se hai un singolo utente configurato e gli fai questo, avrai seri problemi. Per prima cosa, l’utente non è più un membro del gruppo “sudo” , quindi non puoi usarlosudo
per iniziare a correggere le cose.
2. Utilizzo dell’identificatore di unità errato con dd
Il dd
comando scrive blocchi di dati nei file system. Viene spesso utilizzato per scrivere immagini ISO su memory stick USB .
Lo schema di denominazione di Linux per i dispositivi di archiviazione utilizza una singola lettera per l’identificazione. Il primo disco rigido si chiama “/dev/sda”, il secondo è “/dev/sdb”, il terzo è “/dev/sdc” e così via. Le partizioni sono identificate da un numero. La prima partizione sul primo disco rigido è “/dev/sda1”, la seconda è “/dev/sda2” e così via.
Se si masterizza un’immagine su una memory stick USB, è necessario conoscere l’identificatore dell’unità della memory stick USB. Lo troveremo eseguendo il piping lsblk
attraverso grep
, cercando le voci con “sd” al loro interno.
lsblk | grep sd
Possiamo vedere che il disco rigido “/dev/sda” è un’unità da 32 GB con tre partizioni. Una delle partizioni è la partizione “/boot” e la partizione “/dev/sda3” è montata su “/”, che è la radice del file system.
Il disco rigido “/dev/sdb” viene segnalato come un’unità da 7,5 GB. È montato in “/media/dave/Pink”. Chiaramente, l’unità “/dev/sda” è il disco rigido principale di questo computer e “/dev/sdb” è la memory stick USB.
Il comando per scrivere un file ISO che si trova nella directory “~/Downloads” sulla nostra memory stick USB è:
sudo dd bs=4M if=Download/distro-image.iso of=/dev/sdb conv=fdatasync status=progress
Ci viene richiesta la nostra password, quindi ci dd
tuffiamo in azione. Non ci sono “Sei sicuro?” avvertimenti o possibilità di ritirarsi. La scrittura parte subito.
Tuttavia, se digiti la lettera sbagliata per l’identificatore dell’unità e corrisponde a un disco rigido esistente, sovrascriverai quell’unità anziché la memory stick.
Questo è il comando errato :
sudo dd bs=4M if=Download/distro-image.iso of=/dev/sda conv=fdatasync status=progress
Abbiamo detto dd
di usare “/dev/sd a “, così è stato. L’azione di scrittura è molto più veloce, ma termina con un avviso. Hai appena distrutto la tua installazione di Linux.
Controlla e ricontrolla gli identificatori di unità prima di premere “Invio”.
3. Utilizzo dell’identificatore di unità errato con mkfs
Esistono altri comandi che accettano identificatori di unità come parte della loro riga di comando, come gli mkfs
strumenti . Questi formattano le unità creando file system sulle partizioni.
Su questo computer abbiamo un’unità da 25 GB e un’unità da 10 GB.
Se vogliamo creare un file system Ext4 sulla prima partizione dell’unità da 10 GB, utilizzeremo questi comandi.
sudo umount /dev/sdb1
sudo mkfs.ext4 /dev/sdb1
Ma se commettiamo l’errore di utilizzare una “a” invece di una “b” nell’identificatore dell’unità, cancelleremo una delle partizioni sull’unità da 25 GB e renderemo il nostro computer non avviabile.
Questo è il comando errato :
sudo umount /dev/sda1
sudo mkfs.ext4 /dev/sda1
Quella piccola lettera è un pugno, quindi assicurati di colpire l’unità giusta.
4. Non eliminare il tuo file crontab
Il cron
demone esegue le attività in orari prestabiliti per te. Prende la sua configurazione da un crontab
file. Ogni utente, incluso root, può avere un crontab
file . Per modificare il tuo crontab
, usa questo comando:
crontab -e
Il crontab
file viene aperto in un editor . Puoi apportare modifiche e aggiungere nuovi comandi.
Ma se digiti male il comando e premi “r” invece di “e”, rimuoverai, come in delete , il tuo crontab
file.
Questo è il comando errato :
crontab -r
La prossima volta che usi il crontab -e
comando, vedrai un file vuoto predefinito.
Questo è un errore facile da fare, perché “e” e “r” sono uno accanto all’altro sulla maggior parte delle tastiere . Ricostruire un file complicato crontab
non è divertente.
5. Storia ripetuta
L’uso del history
comando è ottimo quando stai cercando di ridurre le sequenze di tasti e risparmiare tempo. Se riesci a estrarre un comando prolisso dalla storia, guadagni velocità e precisione. Finché selezioni il comando giusto dalla cronologia.
Il history
comando elenca i comandi precedenti nella finestra del terminale. Sono numerati. Per riutilizzare un comando, far precedere il suo numero da un punto esclamativo ” !
” e premere il tasto “Invio”.
storia
Supponiamo di aver clonato un repository Git , averci fatto un pasticcio e averlo eliminato. Dobbiamo clonarlo ancora una volta. Scorrendo nella finestra del terminale, possiamo presto individuare il git clone
comando. Possiamo rieseguirlo digitando:
!60
Ma se abbiamo solo dato un’occhiata allo schermo e letto male il numero, potremmo scegliere per errore il numero successivo:
!61
Questo esegue il comando successivo nell’elenco, rm *
. Ciò elimina tutti i file nella directory corrente.
È inoltre possibile utilizzare il !
punto esclamativo ” ” con una stringa di testo. Il primo comando corrispondente viene eseguito per te. Non viene visualizzato in modo che tu possa verificare che sia quello a cui stavi pensando, viene eseguito immediatamente.
Immagina lo scenario in cui hai uno script chiamato “restart.sh”. Questo script imposta come predefinito un set di file di configurazione per alcuni software che stai scrivendo. Periodicamente, mentre sviluppi e collaudi, devi pulire la lavagna, quindi chiami il tuo script.
Questo comando dovrebbe essere sufficiente per trovare e abbinare il comando nella cronologia e per eseguirlo.
!rif
Ma se hai utilizzato il reboot
comando dall’ultima volta che hai utilizzato lo script, è il reboot
comando che viene trovato ed eseguito immediatamente.
Sul tuo computer di casa per utente singolo probabilmente è solo un fastidio. Su un server condiviso è un fastidio anche per molte altre persone.
6. La calamità degli spazi
Gli spazi nei nomi dei file e nei percorsi delle directory possono causare problemi. Ecco perché dovrebbero sempre essere sfuggiti o citati.
I problemi con gli spazi possono essere evitati utilizzando il completamento tramite tabulazione. Premi il tasto “Tab” quando stai digitando un nome file o un percorso di directory e la shell completerà automaticamente quanto più percorso o nome file possibile. Potrebbe essere necessario digitare una lettera per distinguere tra il file desiderato e qualsiasi altro file che condivide parte dello stesso nome, ma un’altra pressione del tasto “Tab” completerà il resto del nome del file per te .
Ciò consente di risparmiare sulle sequenze di tasti, impedisce agli spazi di insinuarsi a causa di errori di battitura e sfugge correttamente a eventuali spazi legittimi in modo che non causino problemi.
Supponiamo di avere una directory “Development” che contiene altre due directory, “geocoder” e “bin”. C’è anche una directory “bin” all’interno della directory “geocoder”.
Per eliminare i file nella directory “geocoder/bin” e rimuovere la directory, utilizzare questo comando.
rm -r geocodificatore/bin
Ora immagina di aver aggiunto inavvertitamente uno spazio dopo “geocoder/”, in questo modo.
Questo è il comando errato :
rm -r geocodificatore/bin
Boom. La directory “Sviluppo” ora è vuota. Le directory “Development/geocoder”, “Development/geocoder/bin” e “Development/bin” sono state completamente cancellate.
Ricorda, il completamento della scheda è tuo amico.
7. Usando > Invece di >>
Il reindirizzamento invia l’output di un processo a un file. Usiamo il segno maggiore di ” >
” per catturare l’output di un processo. Se il file esiste, viene prima svuotato.
Diciamo che stiamo indagando su una perdita di memoria . Abbiamo uno script chiamato “memlog.sh”. Visualizza le statistiche della memoria una volta al secondo. Lo reindirizzeremo in un file chiamato “memory.txt”, per un’analisi successiva.
memlog.sh > memoria.txt
head memory.txt
Il giorno dopo, vogliamo continuare con la nostra indagine e riavviamo la sceneggiatura. Questa volta dobbiamo usare due segni di maggiore di ” >>
” in modo che i nuovi dati vengano aggiunti al file.
memlog.sh >> memoria.txt
Se usiamo un singolo segno maggiore di “>”, perderemo i dati di ieri perché il file viene svuotato prima.
8. Reindirizzamento nella direzione sbagliata
Il reindirizzamento può utilizzare il contenuto di un file come input per un programma.
Abbiamo un file chiamato “placenames.sql” che vogliamo importare in sqlite3
. Il file dello schema descrive come ricreare le tabelle del database. Contiene anche i dati che vogliamo archiviare nel database. Con 1,3 GB e oltre 11 milioni di righe, è un file di grandi dimensioni.
ls -hl toponimi.sql
wc placenames.sql
Possiamo creare un nuovo database chiamato “places.sqlite3” con questo comando.
sqlite3 luoghi.sqlite3 < toponimi.sql
Il più delle volte, quando stiamo reindirizzando usiamo il carattere “>”. Devi concentrarti per evitare di digitare “>” per abitudine. In tal caso, qualsiasi output sqlite3
generato viene scritto nel file dello schema, cancellandolo.
Questo è il comando errato :
sqlite3 luoghi.sqlite3 > toponimi.sql
Il nostro file schema è stato distrutto, sovrascritto dal messaggio di benvenuto della sqlite3
shell.
cat placenames.sql
Ciao ciao, 1,3 GB di dati.
Come evitare errori di battitura della riga di comando
Ci sono buone abitudini che puoi adottare per evitare di commettere questo tipo di errori.
Usa il completamento tramite tabulazioni ove possibile. Eviterai problemi con gli spazi nei percorsi delle directory e nei nomi dei file.
Crea i tuoi alias brevi e memorabili per comandi lunghi e complicati che devi usare occasionalmente. In questo modo, non sbaglierai utilizzando le opzioni e i parametri sbagliati.
È notoriamente difficile correggere le bozze della tua scrittura, ma è quello che devi fare sulla riga di comando. Leggi cosa c’è davvero. Non limitarti a guardarlo e pensare che dica cosa intendevi digitare. Cosa dice veramente? Perché è quello che farà davvero.