tr a A </ etc / hosts | sort -r | pr -d> / etc / hosts


9

Dans cette ligne:

tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts 

quel serait le résultat attendu? Je sais que «a» en minuscule se changerait en «A» en majuscule, mais quelle est la prochaine étape? Le fichier d'origine serait-il écrasé puisque la redirection est vers le même nom de fichier?


Vous devriez obtenir une bash: /etc/hosts: Permission deniederreur (en supposant que votre shell est bash), sauf si vous l'exécutez en tant que root. /etc/hostsest normalement accessible en écriture uniquement par root. Si vous exécutez cela comme root(ce que vous ne devriez vraiment pas), vous obtiendrez un vide /etc/hostscomme l'explique Michael Homer.
— arielf

Réponses:


17

Le résultat attendu est un /etc/hostsfichier vierge .

La redirection > /etc/hostsse produit et tronque le fichier avant que les programmes ne démarrent et ne trcommencent à lire le fichier.

Pour écrire la sortie dans /etc/hosts, vous pouvez soit travailler avec une copie du fichier (ou déplacer votre fichier de sortie en place par la suite), soit utiliser la spongecommande de moreutils , qui absorbera l'entrée standard et écrit dans un fichier:

tr a A < /etc/hosts | sort -r | pr -d | sponge /etc/hosts

Dans ce cas, chaque "a" dans /etc/hostssera remplacé par "A", toutes les lignes seront triées en sens inverse en fonction de votre environnement local , une ligne vierge sera insérée entre chaque ligne , et le résultat sera placé dans /etc/hosts.


Vous pouvez également trouver utile:


1
Merci beaucoup d'avoir clarifié ce à quoi je dois m'attendre avec la façon dont il a été écrit et comment il pourrait être écrit pour obtenir le résultat escompté.
— tdharrison

moreutils est une super suite d'outils
— Robert Riedl
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.