W tej linii:
tr a A < /etc/hosts | sort -r |pr -d > /etc/hosts
jaki byłby oczekiwany wynik? Wiem, że małe litery „a” zmieniłyby się na wielkie litery „A”, ale co dalej? Czy oryginalny plik zostałby zastąpiony, ponieważ przekierowanie prowadzi do tej samej nazwy pliku?
shell
io-redirection
tr
tdharrison
źródło
źródło
bash: /etc/hosts: Permission denied
błąd (zakładając, że twoja powłoka to bash), chyba że używasz tego jakoroot
./etc/hosts
jest zwykle zapisywalny tylko przez root. Jeśli prowadzisz to jakoroot
(czego naprawdę nie powinieneś), dostaniesz puste,/etc/hosts
jak wyjaśnił Michael Homer.Odpowiedzi:
Oczekiwany wynik to pusty
/etc/hosts
plik.Przekierowanie
> /etc/hosts
następuje i obcina plik, zanim programy zaczną działać itr
zacznie czytać z pliku.Aby zapisać dane wyjściowe
/etc/hosts
, możesz albo pracować z kopią pliku (lub później przenieść plik wyjściowy na miejsce), albo użyćsponge
polecenia z moreutils , które wchłonie standardowe dane wejściowe i zapisze w pliku:W takim przypadku każda litera „a”
/etc/hosts
zostanie zastąpiona literą „A”, wszystkie linie zostaną posortowane w odwrotnej kolejności zgodnie z ustawieniami regionalnymi , pusta linia zostanie wstawiona między każdą linią , a wynik zostanie wstawiony/etc/hosts
.Przydatne mogą być również:
źródło