Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2018-12-05 14:33:40

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Duplikaty w historii poleceń ZSH

Czy orientuje się może ktoś jak sprawić, by te same polecenia nie trafiały do pliku historii shell'a ZSH? Technicznie rzecz biorąc, obecnie mam taką konfigurację, że jeśli to samo polecenie zostanie wpisane parę razy pod rząd, to tylko jedno z nich jest rejestrowane. Jeśli zacznę wpisywać dwa rózne polecenia na zmianę, to każde z nich zostanie zapisane w historii i w ten sposób plik będzie miał całą masę zduplikowanych poleceń. Nie ma jakiejś opcji by te same polecenia (znak w znak) były zapisywane w historii tylko raz?

Offline

 

#2  2018-12-05 16:09:11

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Duplikaty w historii poleceń ZSH

Rzuć okiem tutaj:
https://github.com/mattjj/my-oh-my-zsh/blob/master/history.zsh

Pozdro

Ostatnio edytowany przez Jacekalex (2018-12-05 16:30:04)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2018-12-05 16:49:39

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Duplikaty w historii poleceń ZSH

No właśnie coś mi to nie działa. Bo niby mam:

Kod:

setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate.

Ale nie usuwa tych wcześniejszych.

Ostatnio edytowany przez morfik (2018-12-05 16:49:54)

Offline

 

#4  2018-12-05 16:52:59

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Duplikaty w historii poleceń ZSH

Zmienne zazwyczaj nie generują skutków wcześniejszych, przed ich zdefiniowaniem.
Spróbuj:

Kod:

setopt HIST_SAVE_NO_DUPS

W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2018-12-05 17:24:33

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Duplikaty w historii poleceń ZSH

To chyba nie działa tak jak wszyscy myślą że powinno. Niech się odezwie ktoś kto nie ma duplikatów w historii, wszystko jedno czy bash czy zsh. xD

Offline

 

#6  2018-12-06 22:15:20

  thalcave - prawie jak admin

thalcave
prawie jak admin
Skąd: odległa galaktyka
Zarejestrowany: 2007-05-17

Re: Duplikaty w historii poleceń ZSH

setopt append_history           # append history
setopt hist_ignore_all_dups        # ignore duplicates in history
setopt hist_ignore_space        # do not save commands with leading space
setopt hist_no_functions        # do not save functions in history
setopt hist_no_store            # do not save history command in history[/quote]
To są wszystkie moje ustawienia historii i duplikatów nie posiadam.


linux register user: 484281
"[i]It's great to be here. It's great to be anywhere[/i]"
[b]Keith Richards[/b]

Offline

 

#7  2018-12-07 01:13:05

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Duplikaty w historii poleceń ZSH

Chyba już wiem o co chodzi.

Generalnie to winny jest najwyraźniej timestamp w pliku historii — za niego odpowiada [b]extended_history[/b] . Do tego dochodzi [b]share_history[/b] , który zapisuje każde wykonane polecenie od razu do pliku bez czekania na zamknięcie terminala, ale on wymusza [b]extended_history[/b]. Z kolei bez [b]share_history[/b] wydawane polecenia w jednym okienku nie są widoczne w historii w drugim okienku, co trochę ssie. xD Jeśli się nie używa share_history to trzeba jechać na append_history

Jak plik historii nie ma timestampu, to duplikaty są usuwane jak tylko się wprowadzi jakieś polecenie, które było w historii i wyjdzie się z terminala. Niemniej jednak, jak ma się dwa różne terminale odpalone i w obu sesjach wyda się takie samo polecenie, to wtedy trafią do historii duplikaty ale wciąż mogą zostać one usunięte, gdy przy pojedynczej sesji się wyda zduplikowane polecenie.

Póki co plik historii skurczył się z 1M do 500K. Więc jakoś będę musiał przywyknąć do tej nowej konfiguracji. xD

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.012 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00099 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.220.97.161' WHERE u.id=1
0.00062 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.220.97.161', 1732376500)
0.00064 SELECT * FROM punbb_online WHERE logged<1732376200
0.00058 SELECT topic_id FROM punbb_posts WHERE id=322196
0.00005 SELECT id FROM punbb_posts WHERE topic_id=30758 ORDER BY posted
0.00054 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30758 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00490 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30758 ORDER BY p.id LIMIT 0,25
0.00093 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30758
Total query time: 0.00944 s