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

Re: do not write certain commands to history file



On Wed, 25 Aug 2010, Eric Smith wrote:

> 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*)
>     ]]
> }

Where are you setting $arg?  Do you mean $line? or are you trying to 
match *foobar* in $argv?

If the latter, you can't just match an array against a pattern (since 
there's no sensible default for whether it's conjunctive or disjunctive 
[any or all]).  I'm not sure of the [[ ]] form offhand, but the (( )) 
form would be:

[[ # what you already have ]] && (( ! $argv[(I)*foobar*] ))

-- 
Best,
Ben



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