GNU/Linux >> Tutoriels Linux >  >> Linux

Rediriger vers le même fichier que le fichier source traité par la commande ?

Cette question a déjà des réponses ici :Les opérateurs de redirection ouvrent-ils toujours les descripteurs de fichiers en parallèle ?

(2 réponses)
Fermé il y a 6 ans.
  1. La redirection n'est pas autorisée ici. Est cat ne permettant pas ? Mais la redirection
    n'est-elle pas indépendante de toute commande exécutée avec elle ?

    $ cat bk > bk
    cat: bk: input file is output file
    
  2. Pourquoi la redirection suivante vide-t-elle le fichier :

    $ less  bk > bk
    

    awk fonctionne également de la même manière que less en matière de redirection. awk est celui avec lequel j'ai effectivement trouvé le problème, alors que les exemples ci-dessus n'ont aucun sens

En général, quelle est la bonne façon d'utiliser la redirection ?

Réponse acceptée :

Le problème est que la redirection de sortie tue le fichier avant less est même démarré :

open("file", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1)                        = 1
close(3)                          = 0
execve("/usr/bin/less", ["less", "-WNS", "file"], [/* 102 vars */]) = 0

La redirection de sortie normale écrase le fichier. Le O_TRUNC (voir man 2 open ) supprime le contenu du fichier.


Linux
  1. Comment utiliser la commande Tar sous Linux

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

  3. Pipes et redirection sous Linux - expliqués !

  4. Comment ajouter la sortie à un fichier ?

  5. Comment rediriger la sortie de system() vers un fichier ?

Comment utiliser la commande Linux diff

Commande de source bash

Comment rediriger la sortie de la commande shell

Afficher le contenu d'un fichier dans la ligne de commande Linux

Comment utiliser la commande Gzip sous Linux ?

La commande de déplacement de fichier Linux - simplifiée !