To proto, že echo
je spuštěn jako root, ale shell ve skutečnosti provádí přesměrování. Aby to fungovalo, musíte vytvořit nový shell:
sudo -- sh -c "echo test >> /etc/hosts"
Edit:Neviděl jsem fakt, že >
přesměrovává díla; Nedokážu to vysvětlit.
Spíše než spuštěním echo přes přesměrování, které bude spuštěno jako váš aktuální uživatel, ne jako root, protože echo se spouští ve vašem příkladu, použijte tee, jak navrhuje Steve Buzonas
echo 'test' | sudo tee -a /etc/hosts
Sudo je nyní aplikováno na příkaz tee. '-a' se připojí k souboru
Tím bude také výstup T na standardní výstup. Pokud nechcete, aby se ve vašem terminálu zobrazovalo „test“, přidejte také:> /dev/null
na konec tohoto řádku.
Emulace dalších displejů
Jak hromadně přejmenovat soubory s neplatným kódováním nebo hromadně nahradit neplatné kódované znaky?