APPUNTI E COMANDI PER IL TERMINALE LINUX
Questo post devi vederlo come un insieme di appunti cui ho cercato (e sto cercando) di mettere in ordine. Facendo questo ho ottenuto un insieme di pillole da consultare tramite una ricerca ctrl-f per avere in un unico posto tutti i vari comandi che utilizzo nelle mie varie esperienze con linux.
Sei pronto? Iniziamo!
PARTE 1 - LE BASI
PASSWD
Per modificare la password dell’utente in esecuzione è possibile utilizzare il comando passwd [OPTION] [USER]
LOGOUT
Per uscire da una shell si può utilizzare il comando exit (che invoca la system call exit()) in alternativa logout (solo se siamo dentro una shell di login) o Ctrl+D
SHUTDOWN
Ci sono varie possibilità: - sudo shutdown -h now - sudo halt Trattandosi di modifica al sistema (lo spegnimento coinvolge tutti gli utenti) sono necessari i diritti di amministrazione
MANUALE IN LINEA
Esiste un manuale on-line (man), consultabile per informazioni su ogni comando Linux. - man man -apro il manuale del comando man - man ls -apro il manuale del comando ls
Per cercare una pagina di manuale di cui non si conosce il nome, è possibile usare il comando apropos per cercare tutte le pagine che contengono una keyword specifica. - apropos man - apropos top
SUDO
sudo apt get update - eleva i diritti di esecuzione (da utente a root) per un solo comando. Per aggiornare il sistema sono necessari i diritti di amminstrazione
sudo -i - eleva i diritti di esecuzione in modo permanente
FILE MANAGER
Un file manager a cli è il comando mc
STATISTICHE SISTEMA
Un comando per visualizzare le statistiche di sistema è top
UTENTI E GRUPPI
Utenti
Tutti i dati degli utenti vengono salvati all’interno del file /etc/passwd
filippo: x : 1000 : 1000 : Filippo M.,,, : /home/filippo : /bin/bash
- username: username utente
- password: la x indica che la password cifrata è presente nel file /etc/shadow
- User ID(UID): ID utente
- Group ID(GID): ID del gruppo (primario) dell’utente
- User ID Info: Informazioni aggiuntive
- Home directory: percorso assoluto home directory utente
- Command/Shell: percorso assoluto shell utente
controllando dentro al file /etc/passwd vediamo un file multilinea con molti “utenti”, in realtà queste sono shell che servono al sistema infatti la shell di default può essere /bin/false oppure /usr/sbin/nologin questo per impedire che qualcuno acceda al sistema senza che si altra una shell da utilizzare
Gruppi
/etc/group - file contenente tutti i gruppi validi all’interno del sistema.
adm : x : 4 : syslog,filippo sudo : x : 27 : filippo filippo : x : 1000 :
- Group name: nome del gruppo
- Password: generalmente non utilizzato. Si possono definire password di gruppo.
- Group ID (GID): ID del gruppo
- Group List: lista degli utenti che appartengono al gruppo
COMANDI RELATIVI AD UTENTI
- whoami - mostra il nome dell’utente corrente
- id - mostra UID, GID, gruppi secondari
adduser, deluser
- sudo adduser utente - aggiunge un nuovo utente al sistema
- sudo deluser utente - rimuove un utente dal sistema
In alternativa, è sempre possibile modificare manualmente i file /etc/passwd e /etc/group e usare il comando passwd per aggiungere la password
FILES
Protezione dei files
Per ogni file, esistono 3 tipi di utilizzatori: - proprietario, user - gruppo del proprietario, group - tutti gli altri utenti, others Per ogni utilizzatore, si distringuono tre modi di accesso al file: - lettura ® - scrittura (w) - esecuzione (x) ogni file è marcato con UID e GID del proprietario.
per vedere le info ls -l drwxr-xr-x 2 filippo filippo 4096 nov 8 09:30 Modelli drwxr-xr-x 2 filippo filippo 4096 nov 8 09:30 Musica -rw-rw-r– 1 filippo filippo 3 nov 21 19:29 ‘notes linux’ -rw-rw-r– 1 filippo filippo 1207 nov 21 20:23 Notes-linux.md
il primo carattere identifica il tipo di elemento d = directory, - = file.
i successivi caratteri devono essere letti tre a tre:
- drwx : significa che il proprietario è in grado di leggere,scrivere ed eseguire (per una cartella significa poterla navigare)
- r-x : indica che cosa può eseguire il gruppo del proprietario.
- r-x : indica cosa possono fare gli altri utenti (non appartenenti al gruppo)
COMANDI RELATIVI AI FILES
cambiare i diritti ad un file e assegnare un proprietario
- chmod [opzioni] mode file - assegna i diritti ad un file
chmod u g o a + - rwx file chmod 0755 /home/nicola/test chmod 0444 /home/filippo/test rendo leggibile il file a tutti chmod u + x test rendo eseguibile il file per l’utente chmod g - r test tolgo i diritti di lettura la gruppo
chown [opzioni] owner:group file - assegna proprietario e gruppo ad un file chown nicola:nicola /home/nicola/test
rimuovere un file
- rm [file] rm example.desktop
trovare un file
- which [command] which ls -> /bin/ls
mostrare contenuto directory
- ls - ci mostra il contenuto della cartella corrente
- ls -l - ci mostra il contenuto della cartella corrente in modalità lunga
- ls -al - ci mostra il contenuto della cartella corrente in modalità lunga con anche i file contenuti nelle cartelle mostrate
ls -al /bin/bash /etc/passwd - ci mostra il contenuto della cartella corrente in modalità lunga con anche i file contenuti nelle cartelle mostrate dei file indicati
PROCESSI
Utenti e processi
Ogni operazione eseguita su una macchina Unix viene effettata a nome e per conto di un determinato utente.
COMANDI RELATIVI AI PROCESSI
Un processo utente in genere viene attivato a partire da un comando (da cui prende il nome). - ps - ci mostra tutti i processi del mio utente corrente in modo statico
top - ci mostra tutti i processi del mio utente corrente in modo continuo
htop - evoluzione del comando precedente (richiede una installazione tramite package manager)
FILESYSTEM
Tutto è file! File come risorsa logica costituita da sequenza di bit, a cui viene dato un nome. Un file rappresenta un’astrazione che consente di trattare allo stesso modo entità fisicamente diverse come file di test, dischi rigidi, stampanti, direttori, tastiera, video, … Dentro il sistema è presente una cartella /dev/ che indica “devices”. È possibile nominare un file con una qualsiasi sequenza di caratteri (max 255), ad eccezione di ‘.’ e ‘..’; ad ogni file possono essere associati uno o più nomi simbolici (link) ma ad ogni file è associato un solo i-node, ci possono essere più oggetti (con nomi differenti) che accedono allo stesso i-node. L’i-node è una struttura dati che viene salvata sia sulla memoria che sui dischi di storage che contiene una prima parte di informazioni e dopo abbiamo una serie di celle che puntano ad altri blocchi che sono quelli necessari per accedere al file.
Links Le informazioni contenute in un file possono essere visibili attraverso nomi diversi, tramite riferimenti (link) allo stesso file fisico. Il sistema operativo considera e gestisce la molteplicità possibile di riferimento: se un file viene cancellato, le informazioni sono veramente eliminate solo se non ci sono altri link ad esso. Esistono 2 tipi di link: - link fisici ($ ln src dst) - link simbololici ($ ln -s src dst)
struttura file system
Ogni sottocartella di / rappresenta un gruppo di file con uno scopo preciso. Varia fra i sistemi. In generale: - /bin binari essenziali (sistema di base) - /etc file di configurazione - /home home degli utenti - /proc interfaccia verso il kernel - /tmp file temporanei - /usr binari non essenziali (applicazioni)
composizione filesystem
Ho una chiavetta usb come faccio ad utilizzarla con il mio sistema Linux?
- Un filesystem (contenuto su qualsiasi dispositivo) per essere utilizzato deve essere montato su un file system esistente, usando una directory come punto di attacco. La directory di aggancio prende il nome di mount point
- Il file system può essere staccato dal suo mount point tramite operazione umount. Estrarre fisicamente un dispositivo senza aver smontato il suo file system può portare a corruzione dei dati
COMANDI RELATIVI AL FILESYSTEM
creazione di link
Creazione di un nuovo nome per lo stesso contenuto. Esistono 2 tipi di link: - link fisici ($ ln src dst) - link simbololici ($ ln -s src dst)
copiare un file
Creare una copia, creazione di un nuovo file con un nuovo nome e contenuto - cp [src-file-path] [dst-file-path] cp /bin/ls /home/filippo/Desktop - copio il file binario del comando ls all’indirizzo definito
composizione filesystem
- mount
- umount device oppure umount directory_mountpoint ____
INSTALLAZIONE E RIMOZIONE PACCHETTI SOFTWARE
Su windows solitamente si installa un pacchetto attraverso il sito dell’applicazione, solo ultimamento windows ha inserito il concetto di Store ma in realà questa idea è vecchia di decine di anni ed è stato inventato proprio sui sistemi unix. Ogni sistema ha quello che si chiama repository di pacchetti, scarica elenchi di pacchetti disponibili e può scegliere se installare/rimuove/aggiornare uno di questi pacchetti tutto attraverso un solo comando. Sulle distribuzioni debian-based questo comando prende il nome di apt.
- apt-get è il comando per la gestione (install/remove/update) di pacchetti in distribuzioni derivate da Debian
- apt-cache (search) cerca pacchetti in base a parole chaivi. Inoltre visualizza le intestazioni delle versioni disponibili del pacchetto (show)
- /etc/apt/sources.list contiene la lista dei repository attivi
- apt-get update aggiorna lista dei pacchetti disponibili
- apt-get clean rimuove tutti i pacchetti scaricati
- apt-get install pkgname installa uno specifico pacchetto e le sue dipendenze
- apt-get remove pkgname rimuove uno specifico pacchetto
- apt-get autoremove rimuove pacchetti inutili
L’installazione o la rimozione di software di sistema richiede diritti di amministrazione (sudo)
PARTE 2 - BASH
COMANDI BUILTINS E UTILITÀ VARIE
Bash, come interprete dei comandi, esegue il contenuto di file binari presenti nel filesystem (es. /bin/ls) $ ls $ which ls -> /bin/ls (posizione del binario ls) $ which which -> /usr/bin/which
Non tutti i programmi sono rappresentati da un binario esterno, esistono particolari programmi, chiamati builtins, che non provengono dall’esecuzione di un file binario ma sono implementati all’interno della stesa shell, esempi di questi programmi sono: - cd : change directory - alias: serve a definire degli alias. Ad esempio se utilizzo spesso il comando “ls -l” posso definire un alias: alias ll=‘ls -l’ a questo punto posso invocare ll. Il comando per eliminare un alias è unalias ll - history: produce una lista numerata che rappresenta gli ultimi comandi inviati a quella shell. !! esegue l’ultimo comando, !2 esegue il comando #2 - logout: eseguo il logout
- Tasti freccia (su e giù) consentono di spostarsi all’interno della lista dei comandi precedenti.
- ctrl-r consente di inserire una stringa e selezionare tutti i comandi precendenti che la contengono. Ogni pressione successiva alla combinazione ctrl-l accede agli altri comandi della stessa selezione
- tab auto-completa i nomi di file. Una doppia pressione (rapida) mostra l’elenco di tutte le possibilità.
REDIREZIONE E FLUSSI DI DATI
https://www.youtube.com/watch?v=JABf8ZBlPYU&list=PLhlcRDRHVUzR-5TKDC1VPMtyhEyyQ5uwy&index=14