.

domenica 26 aprile 2015

10 utilità che "forse" non sai sulla Bash shell di Linux


La Bash è una Shell testuale utilizzata nella maggior parte dei sistemi Linux per impartire comandi via terminale.


Permette di eseguire comandi più particolareggiati ed interagire maggiormente con i programmi in esecuzione.
In questo post voglio elencare una serie di funzionalità ed utilità che ci consentono di essere più produttivo nel lavoro frequente col terminale.
Nota: Il post non vuole essere una guida esaustiva sui comandi o sulle funzioni della Bash.
Per questo rimando all'ottima guida di Machtelt Garrels, tradotta in italiano e pubblicata al seguente indirizzo: Guida bash 1.11.pdf

Ecco l'elenco di 10 utilità della Bash.

1 - Premendo il tasto tab durante la digitazione, si avrà l'auto-completamento del percorso o del comando in fase di scrittura.
  • es. cd /et [tab] → si autocompleta in cd /etc/
Se non c'è l'unicità nella stringa da completare, il sistema elenca le varie possibilità, onde facilitarne l'individuazione.
  • es. ls [tab] → il sistema ci restituisce l'elenco dei comandi filtrati per le iniziali "ls"
    ls           lsb_release  lsinitramfs  lspci        lsusb      
    lsattr       lscpu        lsmod        lspgpot    
    lsblk        lshw         lsof         lss16toppm  
2 - Tutti i comandi digitati (a dir la verità vi è un limite impostato nel file di configurazione .bashrc e verificabile col comando echo $HISTFILESIZE) sono memorizzati in una cronologia.

Muovendo le frecce direzionali verso l'alto o il basso, si scorre nella cronologia dei comandi eseguiti.
Tutta la cronologia è memorizzata in righe di testo in un file nascosto chiamato .bash_history presente nella Home dell'utente.
Nota: In alcune distribuzioni potrebbe non essere presente il file di configurazione .bashrc nella Home dell'utente. Per crearlo, eseguire una copia da /etc:
cp /etc/bash.bashrc ~/.bashrc
e renderlo operativo attraverso il comando:
source ~/.bashrc

3 - Per ricercare un comando già impartito e presente in cronologia basta eseguire la combinazione CTRL-r e cominciare a digitare quanto desiderato.
Il sistema cercherà la prima occorrenza di quanto digitato a ritroso nella cronologia.
Per continuare a sfogliare secondo il filtro, continuare a premere CTRL-r.
CTRL+c cancella la ricerca. ESC permette di editare il comando mostrato.
Se si vuole invece eseguire il comando mostrato a display, premere Enter.

4 - Il comando History elenca i comandi eseguiti.
Se si vuole navigare attraverso la cronologia, si può far seguire il pipeline | ed il comando less
  • es. history | less
Con le frecce alto e basso, si può scorrere tra gli elementi.

Per eseguire direttamente un comando senza scriverlo, è possibile richiamarlo digitando il numero corrispondente (elencato nel listato mostrato precedentemente) con la preposizione !
  • es. !155 per eseguire il 155esimo comando

5 - Nella Bash è possibile impostare degli alias che abbreviano la digitazione di comandi magari con molteplici opzioni.
  • es. digitando ll (elle elle) la mia distribuzione Linux mi restituirà l'elenco di tutti i files in unica colonna nel formato esteso (opzione -alF)
Per verificare gli alias attualmente impostati, digitare il comando alias, senza alcun parametro, ed il sistema ne restituirà l'elenco.
Per impostare un nuovo "alias", digitare
  • alias cdh='cd ~' per andare direttamente nella home dell'utente
L'alias così impostato non è permanente ed è attivo solo nella sessione corrente.
Per renderlo definitivo, inserirlo in uno dei files di configurazione che vengono letti all'avvio della Bash, ad es. nel file .bashrc presente in Home utente.

6 - Aggiunta della pipeline | e del comando more per elencare il risultato di comando una schermata alla volta
  • es. ls -l | more
Per avanzare un rigo alla volta premere il tasto Enter, per avanzare di una schermata, premere la barra spaziatrice.

7 - Per indirizzare (memorizzare) il risultato di un comando in un file di testo, utilizzare l'oggetto ">"
  • es. ls *.doc > elenco_doc.txt
Che scrive il risultato dell'elenco dei files con estensione .doc nel file di testo elenco_doc.txt.
Il doppio segno di maggiore ">>", accoda altre informazioni ad un file esistente.

8 - Per eseguire un comando e disimpegnare la shell, digitare il comando seguito dall'oggetto "&"
  • es. firefox &
9 - Per digitare più comandi in un unico rigo ed eseguirli in sequenza, separarli con il pipeline ;
  • es. cd ~ ; ls
Per lanciare due comandi in sequenza, ma eseguire il secondo solo se il primo viene eseguito con successo, utilizzare il pipeline &&
  • es. sudo apt-get update && sudo apt-get upgrade
10 - Per conoscere in quale directory siamo, utilizzare il comando pwd
  • es. pwd
    /home/tecnopassopasso
Buona shell a tutti.




giovedì 23 aprile 2015

Cambio nome macchina di un PC Linux-dotato

Vi è mai capitato di installare una nuova distribuzione Linux, di lasciare il nome della macchina così come suggerito di default e magari successivamente - per esigenze tecniche - voler attribuire a quella macchina un nome più significativo?

Oppure di clonare una installazione Linux completa e funzionante ed adeguare il nome della macchina al servizio che essa svolge?

Cambiare il nome della macchina tramite terminale


Il nome della macchina - o hostname - è il nome che identifica un computer in una rete.

Per conoscere il nome della propria macchina è possibile digitare da terminale il comando:
  • hostname
ed il sistema restituirà tale identificativo (parte a destra della chiocciola):

Nome Host iniziale

E' possibile verificare anche il nome della dell'host all'interno di un dominio - FQDN (acronimo di Fully Qualified Domain Name), aggiungendo il parametro --fqd:
  • hostname --fqd


Modifica del nome sulle versioni di Linux tipo Red-hat e simili

Per cambiare il nome alla macchina corrente, basta digitare il comando:
  • sudo hostname server-posta
dove "server-posta" è il nome che vorremmo assegnare alla macchina.

Solo al riavvio del sistema il nome sarà cambiato su tutti i file di configurazione e sarà attivo.


Modifica del nome sulle versioni di Linux "Debian-based"

Il nome dell'host è riportato nel file di configurazione /etc/hostname.
Per cambiarlo, basta scrivere all’interno del file unicamente il nome della macchina, sulla prima riga.
  • sudo vim /etc/hostname
e scriverci "server-posta" senza virgolette, ovviamente.
Chiudere e salvare il file.

Per applicare il cambiamento al sistema:
  • sudo hostname -F /etc/hostname
Infine modificare il file hosts che assegna l'indirizzo ip della macchina al nome del dominio.
NOTA: Il nome in precedenza impostato deve essere presente nel file hosts. Se così non fosse si avrebbero delle limitazione nell'utilizzo del comando sudo e nell'impossibilità di accedere alle funzioni amministrative.
Digitare quindi:
  • sudo vim /etc/hosts
e scrivere adeguando l'esempio:

Configurazione file hosts

Riavviare la macchina o disconnettere e ricollegare l'utente, per attivare il nuovo hostname.

Nome Host finale


Fine della procedura.

Ci sono anche tools grafici o Tweak che possono automatizzare le procedure in questione, ma ritengo che per la semplicità dei passaggi ed i pochi interventi da fare, sia superfluo rivolgersi a tali applicativi.