# [solved] exit wyjście z konsoli, skrypt i historia poleceń

## Aktyn

Szukam i czytam, i jakoś nie moge wywnioskować z tego nic.

Kiedy robie wyjście z shelu poprzez znane wszystkim polecenie

```
exit
```

Czy nawet graficznie klikając w krzyżyk konsolowy, historia poleceń jest umieszczana w pliku bash_history.

No i teraz szukam czy jest jakiś skrypt odpalany, w tym czasie? Bo wygląda na to że nie.

Docelowo chciałem po prostu by z historii poleceń, usunać niektóre rzeczy takie jak np. mv  :Wink:  albo zduplikowane polecenia.

Jest taki plik bash_logout, ale on zdajesie działa podczas wylogowania. A mnie interesuje coś co zadziała przy każdym exit.

----------

## Garrappachc

Co do niezapamiętywania duplikatów:

~/.bashrc

```
export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups

export HISTCONTROL=ignoreboth

shopt -s histappend
```

----------

## Aktyn

Robiąc tak:

```
export HISTCONTROL=ignoreboth
```

pomija na bierząco spacje oraz zduplikowane ostatnie polecenie. Ale nie w całej historii. Ale fajne.

Robiąc tak:

```
export HISTIGNORE=make:df
```

pomija określone polecenia też już bierzące. Dobre do niektórych poleceń.

Ale to nie rozwiązuje mojego problemu. Wymyśliłem kilka:

1. program który odpali powłoke, zaleta: zawsze po wyjściu z powłoki uaktualniamy historie

2. bardzo dużo wpisów do historii, plus program który przy ładowaniu systemu, (albo/i zamykaniu) po prostu je sprawdzi i wywali.

3. jakieś inne fanaberie z plikami startowymi.

4. fanaberie z "history" w rzeczy samej

Dobrze że, z tego co widze, po wyjściu są tylko dopisywane nowe polecenia.

Na razie może zrobie przepatrzenie pliku przy uruchamianiu systemu. Mam nadzieje że uda się to dać do jakiegoś runlevelu.

.

----------

## SlashBeast

Nie wiem czy nie mogl bys dac trap'a do bashrc ktory przy SIGTERM by czyscil Ci historie.

Dodatkowo zsh ma np. 'setopt hist_ignore_dups'. Bash by default chyba nie zapisuje polecen poprzedzonych spacja tj [[:blank:]].

----------

## Aktyn

O widzisz, nie wiedziałem że jest takie coś jak trap. Ale ten SIGTERM to działa tylko w pracującym shellu. I jakoś nie moge tego złapać.

Ale działa takie jak np. EXIT. Ale potem i tak nadpisuje historie nowymi wartościami.

A nie chce usuwania zawartości historii bo to można zrobić byle jak. Ona się przydaje, tylko mam kupe bezsensownych i nieprzydatnych wpisów.

Ale widze że troche przesadzam z tym kombinowaniem.

Częściowo można robić selekcje przy uruchamianiu terma, powinien program odpalić się przez .bashrc. Jakoś wcześniej mi to do głowy nie przyszło.

I może to wystarczy.

----------

## soban_

Ja to sensownego rozwiazania tez na to nie znalazlem. Jednak dalem to:

```
export HISTSIZE=5000

export HISTCONTROL=ignoredups

export HISTTIMEFORMAT="%h %d %H:%M:%S "
```

I dalem sobie spokoj z historia - przynajmniej widze kiedy dane polecenie bylo wywolane. Oczywiscie z ctrl+r najczesciej korzystam, ale czasami jak grepuje np

```
history | grep cos-tam
```

to widze kiedy cos-tam bylo wywolane i ze np to mi moglo popsuc dana rzecz (patrzac po czasie wywolania polecenia) i ignoredups najbardziej mi pasuje.

----------

## Aktyn

Więc tak zrobiłem jak pisałem, dopisałem sobie mały programik, na razie z małą funkcjonalnością.

Wrzuciłem to do .bashrc i na razie działa.

Można go ściągnąć z mojej strony.

Daty też rozważałem, ale w zasadzie mi nie potrzebne, jeśli chodzi o konto usera. A czasem jak coś robie w konsoli to mam multum tego i w końcu było tego za dużo  :Wink: 

----------

