https://guide.debianizzati.org/index.php?title=Rimuovere_voci_duplicate_dalla_cronologia_di_Bash&feed=atom&action=history
Rimuovere voci duplicate dalla cronologia di Bash - Cronologia
2024-03-29T09:42:35Z
Cronologia della pagina su questo sito
MediaWiki 1.39.5
https://guide.debianizzati.org/index.php?title=Rimuovere_voci_duplicate_dalla_cronologia_di_Bash&diff=41724&oldid=prev
S3v il 20:11, 18 mar 2017
2017-03-18T20:11:49Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="it">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Versione meno recente</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Versione delle 20:11, 18 mar 2017</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l12">Riga 12:</td>
<td colspan="2" class="diff-lineno">Riga 12:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> <span style="color:red"># Esecuzione di uno script Python per eliminare le righe</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> <span style="color:red"># Esecuzione di uno script Python per eliminare le righe</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # duplicate dal file ~/.bash_history .</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # duplicate dal file ~/.bash_history .</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> python3 "$HOME/scripts/rimuovi_duplicati.py"</span></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins style="font-weight: bold; text-decoration: none;">if [ -f "$HOME/scripts/rimuovi_duplicati.py" ]; then</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> </ins>python3 "$HOME/scripts/rimuovi_duplicati.py"</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> fi</ins></span></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # include .bashrc if it exists</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> # include .bashrc if it exists</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> if [ -f "$HOME/.bashrc" ]; then</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> if [ -f "$HOME/.bashrc" ]; then</div></td></tr>
</table>
S3v
https://guide.debianizzati.org/index.php?title=Rimuovere_voci_duplicate_dalla_cronologia_di_Bash&diff=41723&oldid=prev
S3v il 20:07, 18 mar 2017
2017-03-18T20:07:56Z
<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="it">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Versione meno recente</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Versione delle 20:07, 18 mar 2017</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l5">Riga 5:</td>
<td colspan="2" class="diff-lineno">Riga 5:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>1) Copiare lo script all'interno di un file il cui nome può essere scelto liberamente.<br/></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>1) Copiare lo script all'interno di un file il cui nome può essere scelto liberamente.<br/></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>2) Copiare il file appena creato in una directory della propria home directory.<br/></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>2) Copiare il file appena creato in una directory della propria home directory.<br/></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>3) Modificare il file ".profile" presente nella propria home directory aggiungendovi le <del style="font-weight: bold; text-decoration: none;">seguente </del>righe (in rosso):</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>3) Modificare il file ".profile" presente nella propria home directory aggiungendovi le <ins style="font-weight: bold; text-decoration: none;">seguenti </ins>righe (in rosso):</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> ...</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> ...</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> ...</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> ...</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l24">Riga 24:</td>
<td colspan="2" class="diff-lineno">Riga 24:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Funzionamento ==</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Funzionamento ==</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Lo script viene eseguito ad ogni login dell' utente,<br/></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Lo script viene eseguito ad ogni login dell'utente,<br/></div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>All'interno dello script è presente la variabile "REV" che <del style="font-weight: bold; text-decoration: none;">inizialmente </del>ha il valore "True". Questa variabile determina la riga da mantenere prima che vengano rimosse le altre righe duplicate, nello specifico:</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>All'interno dello script è presente la variabile "REV" che <ins style="font-weight: bold; text-decoration: none;">di default </ins>ha il valore "True". Questa variabile determina la riga da mantenere prima che vengano rimosse le altre righe duplicate, nello specifico:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; True (valore predefinito): rimuove le righe duplicate del file lasciando solo l'ultima occorrenza. Ad esempio:<pre>riga5&#10;riga1&#10;riga3&#10;riga1&#10;riga5&#10;riga6&#10;riga7&#10;riga5</pre>diventa:<pre>riga3&#10;riga1&#10;riga6&#10;riga7&#10;riga5</pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; True (valore predefinito): rimuove le righe duplicate del file lasciando solo l'ultima occorrenza. Ad esempio:<pre>riga5&#10;riga1&#10;riga3&#10;riga1&#10;riga5&#10;riga6&#10;riga7&#10;riga5</pre>diventa:<pre>riga3&#10;riga1&#10;riga6&#10;riga7&#10;riga5</pre></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; False: rimuove le righe duplicate del file lasciando solo la prima occorrenza. Ad esempio:<pre>riga5&#10;riga1&#10;riga3&#10;riga1&#10;riga5&#10;riga6&#10;riga7&#10;riga5</pre>diventa:<pre>riga5&#10;riga1&#10;riga3&#10;riga6&#10;riga7</pre></div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; False: rimuove le righe duplicate del file lasciando solo la prima occorrenza. Ad esempio:<pre>riga5&#10;riga1&#10;riga3&#10;riga1&#10;riga5&#10;riga6&#10;riga7&#10;riga5</pre>diventa:<pre>riga5&#10;riga1&#10;riga3&#10;riga6&#10;riga7</pre></div></td></tr>
</table>
S3v
https://guide.debianizzati.org/index.php?title=Rimuovere_voci_duplicate_dalla_cronologia_di_Bash&diff=41722&oldid=prev
S3v: Nuova pagina
2017-03-18T19:45:18Z
<p>Nuova pagina</p>
<p><b>Nuova pagina</b></p><div>== Introduzione ==<br />
Questo [[script]] Python 3 consente di rimuovere automaticamente le voci duplicate della cronologia di Bash; queste voci corrispondono tipicamente alle righe del file ".bash_history" presente nella propria home directory.<br />
<br />
== Utilizzo ==<br />
1) Copiare lo script all'interno di un file il cui nome può essere scelto liberamente.<br/><br />
2) Copiare il file appena creato in una directory della propria home directory.<br/><br />
3) Modificare il file ".profile" presente nella propria home directory aggiungendovi le seguente righe (in rosso):<br />
...<br />
...<br />
# if running bash<br />
if [ -n "$BASH_VERSION" ]; then<br />
<span style="color:red"># Esecuzione di uno script Python per eliminare le righe<br />
# duplicate dal file ~/.bash_history .<br />
python3 "$HOME/scripts/rimuovi_duplicati.py"</span><br />
# include .bashrc if it exists<br />
if [ -f "$HOME/.bashrc" ]; then<br />
. "$HOME/.bashrc"<br />
fi<br />
fi<br />
...<br />
...<br />
<br />
Notare che in questo caso il file si chiama "rimuovi_duplicati.py" e si trova nella sottodirectory "scripts" all'interno della propria home directory. Adattare entrambi in base alle proprie necessità.<br />
<br />
== Funzionamento ==<br />
Lo script viene eseguito ad ogni login dell' utente,<br/><br />
All'interno dello script è presente la variabile "REV" che inizialmente ha il valore "True". Questa variabile determina la riga da mantenere prima che vengano rimosse le altre righe duplicate, nello specifico:<br />
; True (valore predefinito): rimuove le righe duplicate del file lasciando solo l'ultima occorrenza. Ad esempio:<pre>riga5&#10;riga1&#10;riga3&#10;riga1&#10;riga5&#10;riga6&#10;riga7&#10;riga5</pre>diventa:<pre>riga3&#10;riga1&#10;riga6&#10;riga7&#10;riga5</pre><br />
; False: rimuove le righe duplicate del file lasciando solo la prima occorrenza. Ad esempio:<pre>riga5&#10;riga1&#10;riga3&#10;riga1&#10;riga5&#10;riga6&#10;riga7&#10;riga5</pre>diventa:<pre>riga5&#10;riga1&#10;riga3&#10;riga6&#10;riga7</pre><br />
<br />
== Script ==<br />
<pre><br />
#!/bin/python3<br />
<br />
'''<br />
Script che rimuove le linee duplicate<br />
all'interno del file ~/.bash_history<br />
'''<br />
<br />
from os.path import expanduser<br />
from collections import OrderedDict<br />
<br />
HISTORY_FILE = expanduser("~/.bash_history")<br />
REV = True<br />
<br />
<br />
def load_history_file():<br />
'''<br />
Restituisce una lista contenente le righe del file.<br />
<br />
:return: viene restituita una lista i cui elementi sono le righe del<br />
file contenente la cronologia di Bash, ciascuno termina con '\n'.<br />
:rtype: list<br />
'''<br />
<br />
try:<br />
with open(HISTORY_FILE, "r") as fin:<br />
return fin.readlines()<br />
except (OSError, IOError):<br />
pass<br />
<br />
<br />
def write_to_history_file(**kwargs):<br />
'''<br />
Scrive gli elementi di una lista nel file<br />
(ogni elemento corrisponde ad una riga).<br />
<br />
:param **kwargs: è gestita solo la chiave lines<br />
:type **kwargs: dict<br />
'''<br />
<br />
input_content = kwargs.get("lines")<br />
if input_content:<br />
try:<br />
with open(HISTORY_FILE, "w") as fout:<br />
content_without_dup = remove_dup(input_content)<br />
fout.writelines(content_without_dup)<br />
except (OSError, IOError):<br />
pass<br />
<br />
<br />
def remove_dup(mylist):<br />
'''<br />
Rimuove i duplicati da una lista<br />
<br />
:param mylist: lista da cui eliminare elementi duplicati<br />
:type mylist: list<br />
:return: lista senza duplicati<br />
:rtype: list<br />
<br />
Variabile REV:<br />
viene utilizzata nel caso si voglia eliminare i duplicati<br />
lasciando solo l'ultima occorrenza all'interno del file<br />
(valore True) o solo la prima (valore False).<br />
'''<br />
<br />
if REV:<br />
mylist.reverse()<br />
templist = list(OrderedDict.fromkeys(mylist))<br />
templist.reverse()<br />
return templist<br />
else:<br />
return list(OrderedDict.fromkeys(mylist))<br />
<br />
<br />
def main():<br />
''' Main '''<br />
lines = load_history_file()<br />
write_to_history_file(lines=lines)<br />
<br />
if __name__ == "__main__":<br />
main()<br />
<br />
</pre><br />
<br />
{{Autori<br />
|Autore = [[Utente:S3v|S3v]] 20:45, 18 mar 2017 (CET)<br />
}}<br />
<br />
[[Categoria: Python]]</div>
S3v