histexp.tests   [plain text]


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_expansion_char
echo ok 3 # !1200