Chcę zrobić:
echo "something" >> /etc/config_file
Ponieważ jednak tylko użytkownik root ma uprawnienia do zapisu tego pliku, nie mogę tego zrobić. Ale następujące też nie działa.
sudo echo "something" >> /etc/config_file
Czy istnieje sposób na dołączenie do pliku w takiej sytuacji bez konieczności otwierania go za pomocą sudo
edytora, a następnie ręcznego dodawania nowej zawartości?
linux
command-line
sudo
hsribei
źródło
źródło
ls
ze ścieżką do katalogu pokazuje pliki, alels
ze wzorem pliku nie?Odpowiedzi:
Użyj
tee -a
(lubtee --append
) zsudo
Więc twoje polecenie staje się
Zaletami
tee
nadrzędnego wykonywania Bash z uprawnieniami administracyjnymi sąźródło
tee
ma-a
flagę dołączającą.echo "output" | sudo tee -a file > /dev/null
jeśli chcesz pominąć wyjście konsoli.Przekierowanie jest wykonywane w bieżącej powłoce. Aby wykonać przekierowanie z podwyższonymi uprawnieniami, musisz uruchomić samą powłokę z podniesionymi uprawnieniami:
źródło
Poproś sudo o odrodzenie podpowłoki:
W tym przykładzie sudo uruchamia „sh” z resztą jako argumentami.
(jest to pokazane jako przykład na stronie podręcznika sudo)
źródło
Zwykle używam powłoki TUTAJ z sudo tee -a . Coś w stylu:
źródło
Moim zdaniem najlepsze w tym przypadku jest dd:
źródło
Może występować problem z sudo i przekierowaniem. Zamiast tego użyj edytora tekstu, aby dodać linię.
Możesz zamiast tego spróbować su
źródło
su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile'
powinno działać. skoro nie ma nic, co powłoka mogłaby omyłkowo rozwinąć w arg, aby uzyskać echo, należy zacytować całe polecenie.To nie zadziała, próbujesz przekierować (używając
>>
) wyjście sudo. To, co naprawdę chcesz zrobić, to przekierować wyjścieecho
. Sugeruję po prostu użyć swojego ulubionego edytora i ręcznie dodać ten wiersz/etc/profile
. Ma to tę dodatkową zaletę, że można sprawdzić, czy/etc/profile
już ustawionoJAVA_HOME
.źródło
Użyj ex -way:
i zamień na
FOO
swoją zmienną, aby dołączyć.W niektórych systemach (takich jak OS X)
/etc/profile
plik ma 444 uprawnienia, więc jeśli nadal otrzymujesz odmowę , sprawdź najpierw i popraw je:następnie spróbuj ponownie.
źródło