Hello,

I have this long command line which I keep changing multiple instances
of host names in it:

# rm -f redo-afn2-dev.out; ./redo.sh afn2-dev & jobs -x tail --pid
%./redo.sh -F -n +0 redo-afn2-dev.out

I use CentOS 5 and Bash as my interactive shell.

The problem is that just *sometimes* (most of the time it's in the
history already so no need) I want to use the last such sequence and
replace all the host name occurances by another host.

Using history substitution, I can do something like:

# !rm:gs/afn2/portal2/

and get it done.

But the problem is that in order to do this, I need to search for the
last relevant command in the history, which I use "incremental search
backwards" for (Ctrl-R).

But once the wanted command is the current one - I can't use the
history substitution on it.

I found that I can refer to the current command with "!#:", so it'll look like:

# rm -f redo-afn2-dev.out; ./redo.sh afn2-dev & jobs -x tail --pid
%./redo.sh -F -n +0 redo-afn2-dev.out!#:gs/afn2/portal2/

Then I can type M-C-e (alt-control-e) to copy the command line as it
was typed so far into another version with the history substitution
done on it, BUT - that leaves me with two copies of the line:

# rm -f redo-afn2-dev.out; ./redo.sh afn2-dev & jobs -x tail --pid
%./redo.sh -F -n +0 redo-afn2-dev.outrm -f redo-afn1-dev.out;
/redo.sh afn1-dev & jobs -x tail --pid %./redo.sh -F -n +0
redo-afn1-dev.out

(notice the "...dev.outrm -f..." in the middle of that last line).

Does anyone know how can I achieve the same effect without having to
go back to the middle of the line and carefully remove the "old" copy?

Maybe a way to tell the shell - "ok, I like the command I found, just
make it the last in the history without executing it", something that
can be done with history-substitution ":p" modifier, then I can get
back to using "!!:gs///".

I couldn't find a solution in bash's manual or FAQ.

I'd rather have something usable from the interactive command line and
not a script since such a typing trick can come handy in multiple
situations, the above is just an example.

Thanks,

--Amos

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to