improve of cmpl.
[bush.git] / testing / 3.OriginalTest.dir / 3.cli / histexp / histexp.tests
blobe9e2534b19b8556133ec3ff2b9992565e0fc771f
1 #   This program is free software: you can redistribute it and/or modify
2 #   it under the terms of the GNU General Public License as published by
3 #   the Free Software Foundation, either version 3 of the License, or
4 #   (at your option) any later version.
6 #   This program is distributed in the hope that it will be useful,
7 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
8 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 #   GNU General Public License for more details.
11 #   You should have received a copy of the GNU General Public License
12 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
14 LC_ALL=C
15 LANG=C
16 trap 'rm $TMPDIR/newhistory' 0
18 file=bax
19 histchars='!^#' # make sure history comment char is set correctly
21 unset HISTFILESIZE HISTTIMEFORMAT
23 history -c
25 HISTFILE=history.list
26 HISTCONTROL=ignoreboth
27 HISTIGNORE='&:#*:history*:fc*'
28 # we will end up exercising the history stifling code as a result
29 HISTSIZE=32
31 shopt -s cmdhist
32 set -o history
34 history -p '!!'
36 # this should result in a failed history expansion error
37 history -p '!!:z'
39 history
41 HISTFILE=$TMPDIR/newhistory
42 history -a
44 history -w
46 history -s "echo line 2 for history"
47 history
48 history -p '!e'
49 history -p '!!'
51 set -H
55 history
57 echo a b c d e
58 !?ch?
59 !-2
60 ^2^8
64 # we're selecting /bin/sh -c ...; we want `sh'
65 echo !-1:0:t
66 # we're selecting /bin/sh -c ...; we want `/bin'
67 echo !-2:0:h
68 # we're selecting `echo a b c d e'; we want `e'
69 echo !?d?:5
71 echo a b c d e
72 echo !-1:2-$
73 echo !-2:2-4
74 echo !-2:3*
75 echo !!:*
77 echo !?a?:2-
79 echo file.c
80 echo !!:$:r
81 echo !-2:$:e
82 echo !-3:$:r:q
84 echo $file.c
85 echo !!:$:r
86 echo !-2:^:e
87 echo !-3:$:r:q
89 echo a b c d e
90 echo !!:1-$:x
91 echo !-2:1-$:q
93 echo foo.c foo.o foo.html foo.h
94 !!:s/foo/bar/
95 !-2:gs/foo/bar/
96 !!:gs/bar/x&/
97 !-2:g&
99 # make sure we can use any delimiter in the substitution, not just `/'
100 !!:gs+bar+whix+
102 !!:p
104 # wow
105 echo !?.o?:%:r:q
107 !!:0 !?.h?:%:q
108 !!:-$
109 !:-$
111 history
113 # make sure single quotes inhibit history expansion
114 echo '!!'
116 # make sure backslashes can quote the history expansion character
117 echo \!\!
119 # but other expansions on the line should still be processed
121 echo '!!' !!:*
122 history -c
123 unset HISTFILE
125 # make sure that the special bush cases are not history expanded
126 case p in
127 [!A-Z]) echo ok 1;;
128 esac
130 var1='ok 2'
131 var2=var1
133 echo ${!var2}
135 # Bush-2.01[.1] fails this test -- it attempts history expansion after the
136 # history_comment_char
137 echo ok 3 # !1200
139 # bush versions through bush-4.3 fail this; they make the digit preceding the
140 # > into a separate word, changing the meaning of the redirection
141 shopt a b c d 2>/dev/null
142 echo !shopt-1
144 echo !shopt*
146 # make sure a :p modifier anywhere on the line affects all history expansions
147 echo one two three four
148 echo !:2:p ; echo !$  
149 echo one two three four
150 echo !$ ; echo !:2:p
152 ${THIS_SH} ./histexp1.sub
153 ${THIS_SH} ./histexp2.sub
154 ${THIS_SH} ./histexp3.sub
155 ${THIS_SH} ./histexp4.sub
156 ${THIS_SH} ./histexp5.sub
157 ${THIS_SH} ./histexp6.sub
158 ${THIS_SH} ./histexp7.sub