Seek in the Kornshell

Searching for shell builtins to speedup Nanoblogger, we stumbled across a very charming and nice way to implement a tail function in the Kornshell.

This works in KSH93 and newer.

The new redirection operators, <# and ># are used to seek. For example,

<# (( EOF-36 ))

will seek to 36 bytes before the end-of-file. You can apply this along with any redirection so that

cat < file <# (( 80 ))

will cat the file starting from offset 80. The value of $(n<#) is the current offset on file descriptor n.

The current syntax can be extended to add other seek options like SEEK_HOLE, by using,

<# (( HOLE ))

to seek to the next hole.


See also