sabato 16 aprile 2011

Un modo alternativo per leggere la storia.

Quando digitiamo un comando nel terminale, il nome della stesso non si perde, ma viene memorizzato in un file che si trova nella nostra home e che si chiama .bash_history.



Il fatto che il nome del comando resti, è una grande cosa. Ci evita, in pratica, di digitare più volte lo stesso comando (che può essere più o meno articolato e quindi difficile da ricordare).

In un precedente post (qui) avevamo detto, tenuto conto anche dei contributi dei commenti, che, per cercare un comando nella history list, si può ricorrere:
1. Ai tasti direzionali Su e Giù
2. Alla combinazione Ctrl+R

Con questo post voglio aggiungere un altro metodo, che trovo veramente gratificante. :)

Se digito

$ history > Scrivania/filehistory

vado a creare, sulla scrivania, un file di testo contenente l'elenco degli ultimi 500/1000 comandi (a seconda delle impostazioni nel file .bashrc)

La creazione di questo file mi permette di visionare, in totale relax, i comandi digitati.

Eccone un esempio
   .............
   54  sudo apt-get purge openoffice*.*
   55  sudo add-apt-repository ppa:libreoffice/ppa
   56  sudo apt-get update
   57  sudo apt-get upgrade
   58  sudo apt-get install libreoffice-l10n-it
   59  sudo apt-get install libreoffice
   60  sudo apt-get install libreoffice-gnome
   61  sudo apt-get install language-support-writing-it
   ..............

Come possiamo notare, la lista è composta da due parti, da un numero e dal comando.

Poniamo il caso che voglia eseguire nel terminale il comando n. 57

ricorrendo al metacarattere "!", mi basta digitare

$ !57

Ciao :)

15 commenti:

  1. Bella dritta! Non conoscevo/ricordavo il comando history :D

    RispondiElimina
  2. @Mattux
    Penso che sia un modo soft per rivedersi tutti i comandi lanciati :D

    RispondiElimina
  3. > "un file di testo contenente l'elenco degli ultimi 500/1000 comandi"
    Ci puoi scrivere la biografia del terminale :)

    RispondiElimina
  4. @Idl3
    Meglio di no, mi denuncerebbe per diffamazione e uso improprio. :D

    RispondiElimina
  5. Se vuoi leggere tutti i comandi salvati puoi fare così:

    $ cat .bash_history | nl | less

    Ti ricordo anche che di default i comandi salvati sono 500. Il comando history ti visualizza 500 comandi. Ogni volta che scrivi un comando nuovo, quello vecchio verrà tolto dalla pila.

    Guarda un po' qui

    http://toshidex.org/2010/04/19/bash-history/

    :)

    RispondiElimina
  6. @Lightuono
    Avevo già modificato il file .bashrc.
    Ti volevo chiedere un'altra cosa. L'altro giorno ho aggiunto, sempre nel file .bashrc, la variabile
    HISTTIMEFORMAT in modo di avere anche la data dei vari comandi. Ho aggiunto la seguente riga

    export HISTTIMEFORMAT="%d.%m.%Y %H:%M:%S

    Il problema è che bash non la interpreta bene: Tutti i comandi presentano la stessa data. Come faccio a risolvere questo inconveniente?

    Se risolvi questo quesito, avrai in dono una fornitura di vino (tre litri al mese) per un anno. :D

    RispondiElimina
  7. @Bit3Lux

    Secondo me puoi incominciare a darmi la fornitura di vino :D :D ahhahahahah.

    Prova a scrivere così, senza l'export:

    HISTTIMEFORMAT=" [ %D - %T ] "

    Provalo e fammi sapere ;)

    RispondiElimina
  8. @Lightuono
    Niente, mi da sempre la stessa data.

    Vedi

    126 [ 04/18/11 - 16:54:16 ] sudo update-grub2
    127 [ 04/18/11 - 16:54:16 ] sudo update-initramfs -u
    128 [ 04/18/11 - 16:54:16 ] sudo gedit /etc/default/grub
    129 [ 04/18/11 - 16:54:16 ] sudo gedit /etc/initramfs-tools/modules
    130 [ 04/18/11 - 16:54:16 ] sudo update-grub2
    131 [ 04/18/11 - 16:54:16 ] sudo update-initramfs -u
    132 [ 04/18/11 - 16:54:16 ] sudo apt-get clean
    133 [ 04/18/11 - 16:54:16 ] sudo apt-get autoclean

    Non so perchè. :(

    RispondiElimina
  9. Momento momento momento. La nuova data la setterà ogni volta che digiti un comando nuovo. Per tutti quelli vecchi lui imposterà l'ultima data impostata con histfileformat.

    Se tu hai modificato il file alle 16:54, tutti i comandi vecchi registrati su bash_history verrano visti con quella data. Solo i comandi nuovi verranno registrati con l'esatta data di esecuzione del comando.

    Fai una prova a dare qualche comando e dopo lanciare history. Vedrai la differenza ;)

    Per il momento momento ti consiglio di guardare questo divertentissimo video :)

    http://www.youtube.com/watch?v=DTJddx-zgw8

    RispondiElimina
  10. @Lightuono
    Ma LOL ahahahahhahaha

    Come al solito volevo l'impossibile :D

    La fornitura di vino sarà decurtata di 5 mesi e 27 giorni.
    Prendere o lasciare. XD

    RispondiElimina
  11. XD XD XD XD XD XD XD è possibile avere anche una bottiglia di grappa stagionata?

    RispondiElimina
  12. @Lightuono
    Si,ma solo se mi porti tre forme di "pepato" XD :D

    RispondiElimina
  13. Si può fare! Domani parlo con il pecoraio di fiducia e ti farò sapere ;)

    RispondiElimina