Bash Notes
bash notes
uno script semplice per prendere appunti, scritto in bash
Mi sono reso conto di aver bisogno di un modo semplice per prendere appunti e, poiché le altre soluzioni disponibili non soddisfacevano le mie esigenze, ho deciso di scrivere il mio script.
Si tratta di un semplice script bash, l’unica dipendenza (per ora) è jq.
Ecco tutte le funzioni disponibili:
|
|
Tutte le funzionalità di base sono presenti e funzionanti; probabilmente necessita di qualche rifinitura e di alcuni test, quindi, se volete provarlo, fatemi sapere cosa ne pensate.
Impostazioni
Quando lo eseguite per la prima volta, notes.sh creerà tutti i file necessari per il suo funzionamento.
Per impostazione predefinita, la directory verrà popolata in ~/.local/share/bash-notes.
Se volete modificare le impostazioni predefinite, potete esportare un file di configurazione utente eseguendo:
|
|
E avrete tutte le vostre impostazioni in ~/.config/bash-notes.rc. Questo file verrà caricato ogni volta che eseguite lo script.
Potete modificare tutte queste impostazioni modificando il file:
|
|
La maggior parte sono piuttosto autoesplicative; l’unica che potrebbe richiedere chiarimenti è TERM_OPTS, che viene utilizzata per impostare la finestra del terminale in cui verrà eseguito l’editor durante la scrittura della nota.
È necessario prestare particolare attenzione quando si specificano le opzioni; nel mio caso, utilizzando alacritty, l’opzione che consente di eseguire un software nella finestra appena creata è -e, quindi devo specificarla come ultima opzione.
Funzionalità
bash-notes può:
- scrivere una nuova nota
--add="Your note title"o, in breve,-a"Your note title" - modificare una nota esistente
--edit=[note ID], versione breve-e[note ID] - eliminare una nota
--delete=[note ID]o-d[note ID] - eliminare tutte le note
--delete=allo-dall - elencare le note esistenti
--listo-lin forma abbreviata - visualizzare una nota
--show=[note ID]o-s[note ID].
È anche possibile semplicemente passare [ID nota] come argomento allo script e verrà visualizzata la nota corrispondente.
|
|
L’ID nota viene assegnato quando viene creata la nota ed è così che si fa riferimento alla nota nel programma.
Elenco semplice vs. “colorato”
L’opzione --plain o -p, in forma abbreviata, determina come viene formattata l’output dello script. Ecco un esempio dell’elenco di tutte le note:
|
|
Ed ecco lo stesso elenco con l’opzione “plain”:
|
|
Al momento è solo una prova di concetto, ma l’idea è di utilizzare un output più interessante, magari utilizzando il markup, e di semplificarlo in modalità “plain”. In fin dei conti, è ancora un progetto in corso. L’opzione “plain” deve precedere tutte le altre opzioni, altrimenti non funzionerà. Cercherò di risolvere questo problema in futuro.
Mi piacerebbe implementare una sorta di funzionalità di ricerca, ma devo ancora studiare la questione.
Backup
A partire dalla versione 0.3, questo script può anche gestire i backup di tutte le vostre note. Potete specificare una cartella di backup con:
|
|
e lo script creerà la directory se non esiste e farà il backup di tutti i vostri dati, incluso il file rc, se ne avete creato uno.
Se volete ripristinare un backup, potete farlo con:
|
|
E lo script si occuperà di ripristinare tutto al suo posto.
Installazione
Basta copiare lo script nella vostra cartella $PATH e renderlo eseguibile. Ecco un esempio:
|
|
Adattatelo alle vostre esigenze.
La prima volta che eseguite lo script, questo si occuperà di creare tutti i file e le cartelle necessari nelle directory standard.
Debugging
Se lo script non funziona per qualche motivo, potete attivare il debugging eseguendo lo script in questo modo:
|
|
E potrete quindi controllare tutto ciò che è accaduto nel file di log all’indirizzo /tmp/debug_bash-notes.log.
Visione
Ok, forse “visione” è un termine un po’ pretenzioso, ma ho scritto questo script per utilizzarlo nel mio flusso di lavoro quotidiano con rofi e i3wm. Adatterò il suo funzionamento per soddisfare al meglio questa mia esigenza.
Ci sono ovviamente alcune cose che mi piacerebbe aggiungere, ma il mio obiettivo principale è che funzioni nel modo in cui ho inteso utilizzarlo.
COSA FARE
- aggiungere un modo per cercare le note
aggiungere un modo per visualizzare una nota senza eseguire vim(fatto nella versione 0.3)- supporto per markdown?
- forse implementare una funzione di esportazione che crei il file HTML o PDF dalla nota (pandoc??)
- scrivere uno script di completamento bash per abilitare il completamento automatico nella shell
- altre idee potrebbero nascere […]
Collaborazione
Significherebbe molto ricevere un feedback, patch se vi sentite di contribuire. Non mi aspetto molto, dato che si tratta di un progetto personale, ma sentitevi liberi di interagire quanto volete.
ChangeLog
- v0.3 - gestione dei backup. Alcuni miglioramenti dell’interfaccia utente
- creazione e ripristino dei backup di tutte le note e delle impostazioni.
- visualizzazione delle note utilizzando la variabile PAGER predefinita o definendo il proprio programma.
- v0.2 - implementato il debugging
- ora è possibile generare un file di log di debug nel caso in cui qualcosa non funzioni
- v0.1 - primo upload pubblico
- tutte le funzionalità principali sono presenti e funzionanti
Responsabile
- danix - sono solo io, in realtà…