루트 사용자로 파일 끝에 텍스트를 추가하는 방법은 무엇입니까? dns_ip echo -e “” echo -e “The

그래서 나는 라스베리에 대한 설치 스크립트를 만들려고 노력하고 있습니다. 먼저 정적 IP를 제공하는 것입니다.

echo -e "Enter static IP"
read static_ip

echo -e "Enter DNS IP"
read dns_ip

echo -e ""
echo -e "The following settings will be set"

echo -e "\e[32mStatic IP:\e[0m\t${static_ip}"
echo -e "\e[32mDNS IP:\e[0m\t${dns_ip}"

sudo echo "interface wlan0" >> /etc/dhcpcd.conf
sudo echo "static ip_address=${static_ip}/24" >> /etc/dhcpcd.conf
sudo echo "static routers=${dns_ip}" >> /etc/dhcpcd.conf
sudo echo "static domain_name_servers=${dns_ip}" >> /etc/dhcpcd.conf

그러나 그것은 “권한이 거부되었습니다”라고 계속 말하는데, 내가 여기서 뭘 잘못하고 있는지 궁금해하고 있었습니까?



답변

리디렉션 ( >>)은 셸에서 수행됩니다. 당신의 sudo영향 echo만.

이 트릭을 사용할 수 있습니다 :

echo "something" | sudo tee -a /output/file > /dev/null

이 방법으로 tee텍스트를 /output/file적절한 권한으로 추가합니다 .

편집 (응답 코멘트) : tee입력을 전달하고 복제합니다 (일반적으로 곱하기). 이 경우 하나의 사본이 파일로 이동하고 다른 사본이 파이프를 따라 이동합니다. 첫 번째 사본 만 필요하기 /dev/null때문에 두 번째 사본을 콘솔로 표시하지 않도록 리디렉션합니다 . /dev/null사라지는 모든 것 .


답변

리디렉션이 작동하도록 서브 쉘에서 실행해야합니다.

sudo sh -c echo “문자열”>> 파일

[sudo 매뉴얼 페이지에서 : 예제]