GNU/Linux >> Tutoriels Linux >  >> Linux

Est-ce un Uuoc (utilisation inutile de chat) de rediriger un fichier vers un autre ?

Si je veux rendre le contenu de file2 correspondre au contenu de file1 , je pourrais évidemment simplement exécuter cp file1 file2 .

Cependant, si je veux conserver tout à propos de file2 sauf le contenu - propriétaire, autorisations, attributs étendus, ACL, liens physiques, etc., etc., alors je ne voudrais pas exécuter cp .* Dans ce cas, je veux juste afficher le contenu de file1 dans file2 .

Il semble que ce qui suit le ferait :

< file1 > file2

Mais ça ne marche pas. file2 est tronqué à rien et non écrit. Cependant,

cat < file1 > file2

fait travail.

Cela m'a surpris que la première version ne fonctionne pas.

La deuxième version est-elle un UUOC ? Existe-t-il un moyen de le faire sans invoquer de commande, simplement en utilisant des redirections ?

Remarque :Je suis conscient que l'UUOC est plus un argument pédant qu'un véritable anti-modèle.

*Comme tniles09 l'a découvert, cp va fonctionne en fait dans ce cas.

Réponse acceptée :

cat < file1 > file2 n'est pas un UUOC. Classiquement, < et > faire des redirections qui correspondent aux duplications de descripteurs de fichiers au niveau du système.
Les duplications de descripteurs de fichiers en elles-mêmes ne font rien (enfin, > les redirections s'ouvrent avec O_TRUNC , donc pour être précis, les redirections de sortie tronquent le fichier de sortie). Ne laissez pas le < > les symboles vous confondent. Les redirections ne déplacent pas les données :elles attribuent des descripteurs de fichier à d'autres descripteurs de fichier.

Dans ce cas, vous ouvrez file1 et affectez ce descripteur de fichier au descripteur de fichier (<file1 ==0<file1 ) et file2 et affectez ce descripteur de fichier au descripteur de fichier 1 (>file2 ==1>file2 ).

Maintenant que vous avez deux descripteurs de fichiers, vous avez besoin d'un processus pour pelleter les données entre les deux, et c'est ce que cat est pour.


Linux
  1. Comment copier ou cloner des autorisations d'un fichier à un autre sous Linux

  2. Copier les dernières N-lignes d'un fichier à un autre ?

  3. Est-il possible d'utiliser / dans un nom de fichier ?

  4. Recherche du contenu d'un fichier dans un autre fichier

  5. Comment ajouter le contenu de plusieurs fichiers dans un seul fichier

Commande Cat sous Linux

Explication des types de système de fichiers Linux, lequel devez-vous utiliser

Outil pour obtenir les lignes d'un fichier qui ne sont pas dans un autre ?

Comment copier un fichier d'un autre répertoire vers celui en cours ?

Comment rediriger un domaine vers un autre domaine localement ?

Copier un fichier volumineux d'un serveur Linux à un autre