Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 40 |
Nodes: | 6 (1 / 5) |
Uptime: | 21:43:22 |
Calls: | 291 |
Files: | 910 |
Messages: | 76,667 |
Posted today: | 1 |
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?
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.
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 "?".
If you just want the commands executed, you can specify an editor
that does nothing:
fc -e true 1013 1015
fc -e : 1013 1015
Or, if you only want to execute one command, you can use -s (without specifying a substitution).
This is all POSIX standard stuff.
On 01.07.2024 15:00, Geoff Clare wrote:
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.
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.
Yes, you can't give a range with -s (which is why I wrote "if you only
want to execute one command" above).