comandi - linux terminal



Come cancellare la cronologia degli ultimi 10 comandi nella shell? (8)

I comandi seguono

  511  clear
  512  history
  513  history -d 505
  514  history
  515  history -d 507 510 513
  516  history
  517  history -d 509
  518  history
  519  history -d 511
  520  history

Posso cancellare uno solo per history -d 511 , ma come eliminare gli ultimi 10 comandi e tra una cronologia di 10 comandi usando un singolo comando nella shell?

Possiamo scrivere uno script bash ed eseguirlo per la cancellazione della cronologia?

https://src-bin.com


Answer #1

modificare:

Modificato gli iteratori rinforzati, buona chiamata. Inoltre, chiama questa funzione con un iteratore inverso.

Probabilmente puoi fare qualcosa del genere:

#!/bin/bash
HISTFILE=~/.bash_history   # if you are running it in a 
                           # non interactive shell history would not work else
set -o history
for i in `seq $1 $2`;
do
    history -d $i
done
history -w

Dove evocerai in questo modo:

./nameOfYourScript 563 514

Si noti che non ho inserito alcun errore durante il controllo dei limiti. Lo lascerò come esercizio al lettore.

guarda anche questa domanda


Answer #2

Combinare le risposte dall'alto:

history -w vi ~/.bash_history history -r


Answer #3

Hai provato a modificare direttamente il file di cronologia:

~/.bash_history

Answer #4

Innanzitutto, digita: history e annota la sequenza dei numeri di riga che desideri rimuovere.

Per cancellare le righe da diciamo dalla riga 1800 alla 1815, scrivi quanto segue nel terminale:

$ for line in $(seq 1800 1815) ; do history -d 1800; done

Se si desidera eliminare la cronologia per il comando di eliminazione, aggiungere +1 per 1815 = 1816 e cronologia per quella sequenza + il comando di eliminazione verrà eliminato.

Per esempio :

$ for line in $(seq 1800 1816) ; do history -d 1800; done

Answer #5

Una semplice funzione può uccidere tutto per numero (anche se si tratta di errori)

kill_hist() {
    for i in $(echo [email protected] | sed -e 's/ /\n/g;' | sort -rn | sed -e 's/\n/ /;')
    do
            history -d $i;
    done
}
kill_hist `seq 511 520`
# or kill a few ranges
kill_hist `seq 1001 1010` `seq 1200 1201`

Answer #6

cronologia -c cancellerà tutte le cronologie.


Answer #7
for h in $(seq $(history | tail -1 | awk '{print $1-N}')  $(history | tail -1 | awk '{print $1}') | tac); do history -d $h; done; history -d $(history | tail -1 | awk '{print $1}')

Se si desidera eliminare 10 righe, è sufficiente modificare il valore di N a 10.


Answer #8
for x in `seq $1 $2`
do
  history -d $1
done




terminal