Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: do not write certain commands to history file



On 25 August 2010 22:36, Eric Smith <es@xxxxxxxxxxxx> wrote:
>
> --
> - Eric Smith
> Mikael Magnusson said:
>> On 25 August 2010 21:26, Eric Smith <es@xxxxxxxxxxxx> wrote:
>> > Oh zsh seers,
>> >
>> > What is the way to match certain words in commands so that they
>> > are not written to the history file (but might possibly remain in the
>> > buffer history which does not worry me much)?
>> >
>> > (I saw a thread on history encryption, seems a bit heavy handed).
>>
>> Remaining in the history buffer and writing to the history file seems
>> to be linked together. You can however use the zshaddhistory()
>> function to exclude things based on shellcode.
>>
>> zshaddhistory() {
>>   [[ $1 != "display ~/pron/*" ]]
>> }
>>
>
> Thanks Mikael. If it is not in the buffer I do not care.
> But I cannot work your example.
>
> Found this below in a config file somewhere and thought I could
> adapt it.  I want to exclude all commands that have "foobar"
> anywhere in them, as the command or in the arg list.
> Quick hack did not work.  All lines are still written to
> the history file.
>
> zshaddhistory() {
>    local line=${1%%$'\n'}
>    local cmd=${line%% *}
>
>    [[ ${#line} -ge 5
>        && ${cmd} != "rm"
>        && ${cmd} != (l|l[sal])
>        && ${cmd} != (c|cd)
>        && ${cmd} != (m|man)
>        && ${arg} != (*foobar*)
>    ]]
> }

Just doing zshaddhistory() { [[ $1 != *foobar* ]] } should be enough.
(and works for me).

-- 
Mikael Magnusson



Messages sorted by: Reverse Date, Date, Thread, Author