回答:
いいえ。ファイル全体を参照するか、目的のファイルの一部をコピーする必要があります。
はい、少なくともLinuxではある程度の制限はありますが(ある程度)可能です。
この方法は、ファイルのサブセットにマップする読み取り/書き込みループデバイスを作成することです。
例えば:
#!/bin/bash
for ((i=0;i<10000;i++)); do
printf "%7d\n" $i
done >/var/tmp/file
losetup -v -f -o 512 --sizelimit 512 /var/tmp/file
losetup -a
head -2 /var/tmp/file
echo ...
tail -2 /var/tmp/file
echo ===
head -2 /dev/loop0
echo ...
tail -2 /dev/loop0
printf "I was here" > /dev/loop0
grep here /var/tmp/file
losetup -d /dev/loop0
出力:
loop device: /dev/loop0
/dev/loop0: [0808]:136392 (/var/tmp/file), offset 512, size 512
0
1
...
9998
9999
===
64
65
...
126
127
I was here 65
オフセットとサイズの両方がブロックサイズ(512バイト)の倍数でなければならないと思います。
ループデバイスを作成してアクセスするには、おそらくルートになる必要があります。
シンボリックリンクが必要な場合、ループデバイスを指すシンボリックリンクを作成できます。
reiserfsの計画で登場した「他の作者以外に」「ファイルとしてのディレクトリ」のアイデアを実装するファイルシステム上で(ファイルの一部を指す通常のシンボリックリンクを作成する)可能性がありますが、reiserfsの実装実装が引き起こした問題が気に入らなかった。