Answers:
不能。您必须引用整个文件,或者必须复制文件中感兴趣的部分。
是的,至少在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字节)的倍数。
您可能需要是root用户才能创建和访问循环设备。
如果需要符号链接,则可以创建一个指向循环设备的符号链接。
在文件系统上可能会实现(创建指向文件一部分的普通符号链接),该文件系统将实现“文件作为目录”的想法,该想法(与其他作者一起)出现在reiserfs的计划中,但是reiserfs的实现不喜欢的实施引起的问题。