| LC_ALL=C |
| LANG=C |
| trap 'rm /tmp/newhistory' 0 |
| |
| file=bax |
| histchars='!^#' # make sure history comment char is set correctly |
| |
| unset HISTFILESIZE |
| |
| history -c |
| |
| HISTFILE=history.list |
| HISTCONTROL=ignoreboth |
| HISTIGNORE='&:#*:history*:fc*' |
| # we will end up exercising the history stifling code as a result |
| HISTSIZE=32 |
| |
| shopt -s cmdhist |
| set -o history |
| |
| history -p '!!' |
| |
| # this should result in a failed history expansion error |
| history -p '!!:z' |
| |
| history |
| |
| HISTFILE=/tmp/newhistory |
| history -a |
| |
| history -w |
| |
| history -s "echo line 2 for history" |
| history |
| history -p '!e' |
| history -p '!!' |
| |
| set -H |
| !! |
| !e |
| |
| history |
| |
| echo a b c d e |
| !?ch? |
| !-2 |
| ^2^8 |
| |
| !2 |
| |
| # we're selecting /bin/sh -c ...; we want `sh' |
| echo !-1:0:t |
| # we're selecting /bin/sh -c ...; we want `/bin' |
| echo !-2:0:h |
| # we're selecting `echo a b c d e'; we want `e' |
| echo !?d?:5 |
| |
| echo a b c d e |
| echo !-1:2-$ |
| echo !-2:2-4 |
| echo !-2:3* |
| echo !!:* |
| |
| echo !?a?:2- |
| |
| echo file.c |
| echo !!:$:r |
| echo !-2:$:e |
| echo !-3:$:r:q |
| |
| echo $file.c |
| echo !!:$:r |
| echo !-2:^:e |
| echo !-3:$:r:q |
| |
| echo a b c d e |
| echo !!:1-$:x |
| echo !-2:1-$:q |
| |
| echo foo.c foo.o foo.html foo.h |
| !!:s/foo/bar/ |
| !-2:gs/foo/bar/ |
| !!:gs/bar/x&/ |
| !-2:g& |
| |
| # make sure we can use any delimiter in the substitution, not just `/' |
| !!:gs+bar+whix+ |
| |
| !!:p |
| |
| # wow |
| echo !?.o?:%:r:q |
| |
| !!:0 !?.h?:%:q |
| !!:-$ |
| !:-$ |
| |
| history |
| |
| # make sure single quotes inhibit history expansion |
| echo '!!' |
| |
| # make sure backslashes can quote the history expansion character |
| echo \!\! |
| |
| # but other expansions on the line should still be processed |
| |
| echo '!!' !!:* |
| history -c |
| unset HISTFILE |
| |
| # make sure that the special bash cases are not history expanded |
| case p in |
| [!A-Z]) echo ok 1;; |
| esac |
| |
| var1='ok 2' |
| var2=var1 |
| |
| echo ${!var2} |
| |
| # Bash-2.01[.1] fails this test -- it attempts history expansion after the |
| # history_comment_char |
| echo ok 3 # !1200 |