Come faccio a leggere l'output di un comando troppo lungo

Come faccio a leggere l'output di un comando troppo lungo?

Quando capita di eseguire un comando che fornisce un risultato troppo lungo per essere visualizzato all'interno di una sola schermata, questo viene fatto scorrere velocemente fino alla fine, impedendoci di consultare le parti che ci interessano. Pensiamo ad esempio alla visualizzazione dei messaggi del kernel tramite dmesg, o ancora, all'esecuzione del comando ls all'interno di una directory stracolma di file. L'unico modo per risolvere il p
roblema è reindirizzare l'output su more o less utilizzando una pipe (simbolo |):

dmesg | less
dmesg | more
Le funzionalità dei due programmi sono simili, infatti, entrambi consento di scorrere il testo poco alla volta utilizzando appositi pulsanti della tastiera. La differenza fondamentale è che, mentre more permette di farlo solo in avanti premendo Invio, con less è possibile utilizzare i tasti freccia e di pagina per scorrere il testo avanti e indietro, un rigo o una pagina alla volta.

AsteClick - iPod Touch 32gb

Quali sono i comandi per creare un file vuoto?

I sistemi Unix, comprese tutte le distribuzioni GNU/Linux, includono di default il comando touch. Quest'ultimo serve a creare un file vuoto. In pratica, è sufficiente eseguire dalla shell il comando seguente:

touch nome_file

Successivamente è possibile aprire il file appena creato con un qualsiasi editor e scrivere al suo interno. Nel momento in cui, invece, oltre a creare il file si decidesse di iniziare a scriverne subito il contenuto, il comando da eseguire è:
cat > nome_file

Così facendo, non solo si crea il file, ma è anche possibile scrivere il suo contenuto fino a quando non si preme la combinazione di tasti Ctrl+D.
Qual è il sistema più rapido per cercare un file?

I moderni motori di ricerca per il desktop o Desktop Search Engine come Google Desktop Linux, Tracker o Recoll, non sono gli unici programmi in grado di cercare rapidamente un file all'interno del file system. GNU/Linux, infatti, dispone di alcuni tool predefiniti per effettuare questo tipo di operazioni anche dalla riga di comando. Uno di questi è find. Ad esempio, supponiamo di voler cercare il file test.txt all'interno della directory root (/). In questo caso, il comando find va usato nel modo seguente:

find / -name text.txt -print

Ovviamente è possibile sostituire la directory root con qualsiasi altra per indicare un punto specifico del file system dove eseguire la ricerca. Un altro comando ancora più semplice da utilizzare è locate:
locate test.txt
Quest'ultimo è molto più veloce di find, ma prima di usarlo bisogna aggiornare il suo archivio eseguendo, da utente root, il comando updatedb. Tale comando non va eseguito ogni volta che si usa locate, ma solo quando si vuole effettuare una nuova indicizzazione del contenuto del disco. Questa, in genere, è necessaria solo quando si effettua qualche cambiamento nel file system. Ad esempio, creazione di file e directory, installazioni di nuovi programmi, ecc. Insomma, si modifica il contenuto del disco aggiungendo nuovi file.

AsteClick - TomTom One Europe
Perché bisogna inserire ./ prima del nome per eseguire alcuni programmi?

Ogni volta che si esegue un comando dalla shell, a meno che non si indichi il percorso completo dove questo è posizionato all'interno del file system, il sistema effettua una veloce ricerca per individuarlo. Tale ricerca prende in considerazione tutte le directory contenute nella variabile di ambiente PATH (per visualizzarne il contenuto basta eseguire il comando echo $PATH). È ovvio che, nel momento in cui l'eseguibile non è presente in nessuna delle directory contenute in PATH, il comando non può essere avviato. In questo caso, per eseguire il programma i metodi sono due.

Il primo, come abbiamo detto, consiste nell'indicare il percorso completo, ad esempio per eseguire il programma prova, presente, ad esempio, nella nostra home, il comando diventa /home/nome_utente/prova. Il secondo metodo consiste nell'accedere alla directory che contiene il programma (in questo caso cd /home/nome_utente) ed eseguirlo con ./prova. In pratica, in quest'ultimo caso, non essendo il programma contenuto nei percorsi contenuti nella variabile PATH, è stato necessario indicare che si trova nella directory corrente, cioè quella in cui ci troviamo. Infatti, il . (punto) serve per indicare al sistema di cercare l'eseguibile nella directory corrente il simbolo / completa il percorso. È comunque possibile evitare di inserire ogni volta i caratteri ./, indicando la direcory corrente nella variabile PATH:

PATH=.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
export PATH

In questo modo abbiamo aggiunto anche la directory corrente tra i percorsi degli eseguibili, quindi possiamo avviare qualsiasi programma, da qualunque posizione senza inserire ./ prima del nome, ma solo se questo è presente nella directory in cui ci troviamo.

Posso installare un nuovo modulo senza ricompilare tutto il kernel?

Tutte le distribuzioni GNU/Linux installano di default alcuni kernel “precompilati”, che possiamo definire generici, allo scopo di garantire la massima compatibilità con le configurazioni hardware più diffuse. Ovviamente, tali kernel vengono installati con un numero limitato di componenti (driver hardware o altro), alcuni dei quali compilati staticamente, cioè inseriti direttamente nel kernel, quindi sempre disponibili, mentre altri compilati dinamicamente, cioè sotto forma di moduli, da caricare manualmente all'occorrenza.

Questo sistema consente di ottenere, almeno in teoria, kernel più leggeri, senza troppe parti in eccesso. Purtroppo, però, quando si tratta di componenti hardware particolari o del supporto per protocolli poco utilizzati, tali moduli possono non essere presenti, quindi, prima di poterli utilizzare è necessario compilarli e installarli separatamente. A questo punto le strategie sono due: inserirli direttamente nel kernel o installarli come moduli separati. Nel primo caso, ovviamente, bisogna ricompilare nuovamente l'intero kernel, nel secondo è necessario solo eseguire i comandi previsti per la compilazione dei moduli, procedendo nel modo seguente. Per prima cosa, se non presenti, bisogna installare i sorgenti del kernel in uso.

Per scoprire la versione esatta basta eseguire il comando uname -r. I sorgenti possono essere installati utilizzando i pacchetti precompilati per la propria distribuzione, oppure il file dei sorgenti. In quest'ultimo caso, è necessario scaricare il relativo pacchetto dal sito www.kernel.org e scompattarlo in /usr/src/linux, per comodità supponiamo /usr/src/linux-source-2.6.20. A questo punto, entriamo nella nuova directory (cd /usr/src/linux-source-2.6.20) ed eseguiamo il comando make xconfig per effettuare la nuova configurazione.

Per evitare di escludere i moduli utili già in uso e ritrovarci solo con quelli nuovi, ottenendo un sistema non utilizzabile, utilizziamo una configurazione funzionante. Basta accedere al menu File/Load e caricare il file di configurazione presente in /boot: in genere si tratta di un file del tipo config-2.6.XX.X-generic o qualcosa di simile. Dopo averlo caricato, sempre dall'interfaccia grafica individuiamo i componenti da compilare come moduli (indicati dal simbolo a forma di punto) e salviamo il nuovo file da File/Save. A questo punto, possiamo compilarli e installarli:

make modules
make modules_install
depmod -a

Infine, possiamo caricarli nel sistema con modprobe nome_modulo.

468x60
Come si installano i programmi di tipo .bin e .run?

Il software disponibile per GNU/Linux è distribuito in formati differenti, ognuno dei quali necessita di un'installazione particolare. Oltre a quelli più diffusi, sorgenti, .deb, .rmp, .tgz e alcuni specifici per distribuzioni minori, spesso i programmi vengono forniti sotto forma di pacchetti .run o .bin. In questo caso si tratta di software precompilati, con integrate staticamente (cioè già presenti nel pacchetto stesso) le librerie di cui necessitano.

In questi casi, non è necessario alcuna compilazione, tanto meno utilizzare i gestori di pacchetti come Yum, Adept, Synaptic o altro, è sufficiente eseguirli direttamente dalla shell o in alcuni casi tramite un semplice doppio clic sul file. La parte restante della procedura, in genere, avviene mediante procedure guidate grafiche o testuali. Supponiamo di disporre del file software.bin o software.run (la procedura è identica in entrambi i casi). Per prima cosa, anche se non sempre, bisogna rendere il file eseguibile:

chmod u+x software.run

A questo punto è sufficiente avviare l'installazione con il comando ./software.run e seguire le istruzioni mostrate a video. Lo stesso discorso vale per alcuni pacchetti .sh e il nuovo formato .package.

In quest'ultimo caso, la procedura si differenzia solo per il fatto che, una volta avviata l'installazione, lo script verifica il contenuto del pacchetto e la presenza nel sistema di alcuni software indispensabili (le cosiddette dipendenze) prima di procedere con l'installazione del programma. In caso contrario, scarica da Internet e installa automaticamente tutti quelli mancanti (è solo necessario essere connessi alla rete).

Oltre a questi formati esistono altri sitemi di distribuzione del software, sempre tramite pacchetti precompilati. Ad esempio, software come Opera, Firefox, Thunderbird, SeaMonkey e molti altri, sono disponibili sotto forma di archivi compressi contenenti il software già compilato. Basta scompattarli ed eseguire un file, nel cado di Thunderbird, si tratta dello script thunderbird: in alcuni casi non è neppure necessaria una vera e propria installazione.

A cosa serve il file di dispositivo /dev/null?

Il file di dispositivo /dev/null se aperto in lettura corrisponde ad un file vuoto, mentre in scrittura può essere paragonato ad una sorta di buco senza fondo. In pratica tutto quello che viene inviato al suo interno è perduto per sempre.

Qual è allora la sua utilità. Questa caratteristica particolare lo render molto utile all'interno di alcuni script, nei quali non è necessario che i comandi eseguiti producano output da inviare agli utenti. Eseguendo, ad esempio, il comando seguente
ls /bin > /dev/null
non otterremo nulla come risultato, perché il risultato è stato rediretto (simbolo >) /dev/null e quindi perso. Attenzione: in questo caso non si perdono i file ma solo l'output del comando. È possibile verificare il contenuto vuoto del file utilizzando il comando seguente:
cat /dev/null
Come non verrà mostrato nulla a schermo.

Ultimi post pubblicati




160X600.gif

Vacanze    TUI.it

Universo Linux



Luca Soraci

Luca Soraci

Ubuntu giunge alle nostre orecchie solo perché è stato mutuato come nome per un sistema operativo di successo; lo abbiamo sentito nei discorsi di Mandela, del vescovo Tutu, ed è uno dei concetti fondanti di quel movimento di rinascimento che vuole far fiorire il continente africano al di sopra delle difficoltà attuali.

Nessun commento:

Posta un commento

Powered by Blogger.