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.