Sujet : Re: [ksh93] defunct 'fc' command?
De : janis_papanagnou+ng (at) *nospam* hotmail.com (Janis Papanagnou)
Groupes : comp.unix.shellDate : 01. Jul 2024, 17:54:18
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v5ujfb$152jc$1@dont-email.me>
References : 1 2
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
On 01.07.2024 15:00, Geoff Clare wrote:
Janis Papanagnou wrote:
I noticed that 'fc' doesn't seem to work on my Limux platform (neither
with ksh93u+ nor with ksh93u+m). Usually I use that built-in command
only as 'fc -l' (to list the history entries), and omitting the '-l'
should execute these commands. Alas, 'fc <from> <to>' doesn't work;
for example
>
$ fc -l 1013 1015
1013 ls X
1014 ls Y
1015 ls Z
$ fc 1013 1015
15
^C
?
^Z[1] + Stopped fc 1013 1015
$ kill %%
[1] + Terminated fc 1013 1015
>
>
Is that an issue in my environment (or on my platform), or a bug?
It's an issue with your expectation.
(Actually my [inappropriate] environment setting; see below.)
By default, fc starts an editor.
Presumably you don't have FCEDIT set, as your output shows the default
editor (ed) was used; it was ed that wrote the "15" and the "?".
Argh! - Yes, you are right. I was confident that I had a sensible
definition, but I see that FCEDIT=/bin/ed and it didn't appear
to me that what I got was an 'ed' prompt. - Thanks!
If you just want the commands executed, you can specify an editor
that does nothing:
fc -e true 1013 1015
fc -e : 1013 1015
This is a nice code pattern.
Or, if you only want to execute one command, you can use -s (without
specifying a substitution).
I had tried this before and got an inconsistent error message (-e
instead of -s) when [inappropriately] trying for a range
$ fc -s 1071 1073
ksh: fc: -e - requires single argument
so I haven't followed that path further.
This is all POSIX standard stuff.
Janis