/ / как да огранича броя на елементите от историята в bash? [затворен] - linux, bash

как мога да огранича броя на елементите от историята в bash? [затворен] - linux, bash

в неотдавнашно чуруликане съм видял, че е казано, че в историята има повече пароли, отколкото в /etc/shadow - въпросът е: как да огранича броя на елементите в историята, тъй като не го използвам толкова често?

Отговори:

6 за отговор № 1

Това се контролира от HISTSIZE и HISTFILESIZE вградени променливи на обвивката. Цитиране на документацията в man bash:

HISTSIZE - Броят на командите, които трябва да запомните вистория на командите (вижте ИСТОРИЯ по-долу). Ако стойността е 0, командите не се записват в списъка с историята. Числовите стойности, по-малки от нула, водят до всяка команда се записват в списъка с историята (няма ограничение). Обвивката задава стойността по подразбиране на 500, след като прочете всички стартиращи файлове.

HISTFILESIZE - Максималният брой линии, съдържащи се висторически файл. Когато на тази променлива е присвоена стойност, файлът с историята се съкращава, ако е необходимо, за да не съдържа повече от този брой редове, като се премахне най-старите записи. Файлът с историята също се съкращава до този размер, след като го напише, когато обвивката излезе. Ако стойността е 0, файлът с историята се съкращава до нулев размер. Не-числови стойности и числови стойности стойностите, по-малки от нула, инхибират срязването. Черупката задава стойността по подразбиране на стойността на HISTSIZE след прочитане на всички стартови файлове.


~/.bashrc е подходящо място за задаване на тези стойности. Те не се нуждаят от износ, тъй като те са вътрешни за черупката:

HISTFILESIZE=25

... ще се справят добре, не export е необходимо.


4 за отговор № 2

Можете да ограничите броя на елементите в историята, като добавите този ред към файла си ~ / .bashrc:

# remember the last 1000 commands in history
HISTSIZE=1000

Някои допълнителни параметри на историята на bash, които може да ви се сторят интересни:

# Limit the size of the ~/.bash_history file
HISTFILESIZE=2000

# append to the history file, don"t overwrite it
shopt -s histappend

# Avoid duplicate entries
export HISTCONTROL=ignoredups:erasedups

От командния ред можете също да влезете в режим за търсене на история като натиснете Control + R. Когато започнете да пишете, търсенето в историята ще предложи елементи.

Освен това, ако използвате history Можете да изпълнявате елементи по номер (напр. !99 ще изпълни 99-та команда в историята). !! ще изпълни и последната изпълнена преди това команда.

Много програми са добри за запазване на паролите от историята. Ако обаче забележите запис, който искате да изтриете, можете да го направите по следния начин:

# say we start with an empty bash command history
bash-3.2$ history
1  history


# enter a command that requires a password
bash-3.2$ sudo rm -i some_file
Password:
# accidentally ^C and type your password
# into the prompt and hit enter
bash-3.2$ secret_password
bash: secret_password: command not found


# your password is now there for all to
# see in your bash history
bash-3.2$ history
1  history
2  sudo rm -i some_file
3  secret_password
4  history


# first option to fix it, delete the numbered entry from
# history and write to your ~/.bash_history file
bash-3.2$ history -d 3
bash-3.2$ history -w


# entry 3 will be removed entirely from your command history
bash-3.2$ history
1  history
2  sudo rm -i some_file
3  history
4  history -d 3
5  history -w
6  history


# the second option is to clear the entire history
# and write the changes to disk
bash-3.2$ history -c
bash-3.2$ history -w


# it"s now pretty obvious that your history has been
# scrubbed clean, but at least your password is history!
bash-3.2$ history
1  history -w
2  history

източник за горния пример: http://rawsyntax.com/blog/learn-bash-remove-commands-from-your-history/


1 за отговор № 3

Задаване на размера на файла с история като:

HISTFILESIZE=1024

Деактивиране на историята с:

HISTFILESIZE=0