GNU/Linux >> Tutoriels Linux >  >> Linux

L'écho au descripteur de fichier écrase le fichier ?

J'ai du mal à comprendre ce qui se passe lorsque j'essaie d'écrire dans un descripteur de fichier ? Il semble écraser le contenu d'origine ? Est-ce un comportement attendu ?

J'ai reproduit cela dans l'exemple ci-dessous :

$ 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 ...

Réponse acceptée :

Parce que vous n'aviez fait aucune lecture sur le descripteur 88, la position de recherche actuelle était "0", et donc l'écriture a eu lieu à ce point.

Si, à la place, vous aviez lu le fichier avant cela, des ajouts se produisent :

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

Linux
  1. Rediriger le contenu d'un fichier vers la commande "echo" ?

  2. Comment nettoyer les extensions de fichiers ?

  3. La fête ?

  4. Mv écrase le fichier en lecture seule sans invite ?

  5. Comment un script shell évite-t-il le Sigpipe qui serait causé par l'utilisation d'un descripteur de fichier fermé ?

Introduction au système de fichiers Linux

Utilisation du fichier de configuration SSH

Le fichier Hosts sous Linux

Comment faire écho dans le fichier

Erreur dans la console Linux :Impossible d'obtenir un descripteur de fichier faisant référence à la console

À quoi sert $# dans Bash