In dieser Zeile:
tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts
Was wäre das erwartete Ergebnis? Ich weiß, dass Kleinbuchstaben 'a' in Großbuchstaben 'A' geändert werden, aber wie geht es weiter? Würde die Originaldatei überschrieben, da die Umleitung auf denselben Dateinamen erfolgt?
shell
io-redirection
tr
tdharrison
quelle
quelle
bash: /etc/hosts: Permission denied
Fehlermeldung erhalten (vorausgesetzt, Ihre Shell ist Bash), es sei denn, Sie führen dies als ausroot
./etc/hosts
ist normalerweise nur von root beschreibbar. Wenn Sie dies so ausführenroot
(was Sie wirklich nicht tun sollten), würden Sie eine leere bekommen,/etc/hosts
wie Michael Homer erklärte.Antworten:
Das erwartete Ergebnis ist eine leere
/etc/hosts
Datei.Die Umleitung
> /etc/hosts
erfolgt und schneidet die Datei ab, bevor die Programme ausgeführt werden undtr
aus der Datei gelesen werden.Um die Ausgabe zu schreiben
/etc/hosts
, können Sie entweder mit einer Kopie der Datei arbeiten (oder Ihre Ausgabedatei anschließend an ihren Platz verschieben) oder densponge
Befehl von moreutils verwenden , der die Standardeingabe aufnimmt und in eine Datei schreibt:In diesem Fall wird jeder „a“ in
/etc/hosts
wird ersetzt mit „A“, werden alle Linien werden in umgekehrter Reihenfolge entsprechend Ihre locale sortieren , wird eine Leerzeile zwischen jeder Zeile eingefügt werden , und das Ergebnis wird in gestellt werden/etc/hosts
.Sie können auch nützlich finden:
quelle