Ho difficoltà a capire cosa sta succedendo quando provo a scrivere su un descrittore di file? Sembra sovrascrivere il contenuto originale? È un comportamento previsto?
L'ho replicato nell'esempio seguente:
$ echo "The quick brown fox ..." > example.txt
$ echo "The quick brown fox ..." >> example.txt
$ cat example.txt
The quick brown fox ...
The quick brown fox ...
$ exec 88<>example.txt
$ cat example.txt
The quick brown fox ...
The quick brown fox ...
$ echo "jumped" >&88
$ cat example.txt
jumped
ck brown fox ...
The quick brown fox ...
$ echo "jumped" >&88
$ cat example.txt
jumped
jumped
n fox ...
The quick brown fox ...
Risposta accettata:
Poiché non avevi eseguito alcuna lettura del descrittore 88, la posizione di ricerca corrente era "0" e quindi la scrittura è avvenuta a quel punto.
Se, invece, avresti letto il file prima di allora, si verificano le aggiunte:
bash-4.2$ cat <&88
The quick brown fox ...
The quick brown fox ...
bash-4.2$ echo hello >&88
bash-4.2$ cat example.txt
The quick brown fox ...
The quick brown fox ...
hello
bash-4.2$ echo more >&88
bash-4.2$ cat example.txt
The quick brown fox ...
The quick brown fox ...
hello
more