.bashrc
쓰기 금지된 파일에 데이터를 전달하는 작업을 단순화하는 함수를 만들고 싶습니다 .
function pipe {
sudo bash -c "$1"
}
아쉽게도 주문은
pipe echo something > /etc/importantfile
여전히 권한 거부라고 표시됩니다. 어떻게 고쳐야 합니까?
답변1
모든 것을 하나의 매개변수로 전달하고 싶을 수도 있습니다:
function pipe {
sudo bash -c "$@"
}
pipe 'echo something > /etc/importantfile'
답변2
이는 > 셸에서 해석되기 때문입니다. 실행 중인 명령은 리디렉션을 인식하지 못하므로 이를 함수에 인수로 전달할 수 없습니다. 즉, >가 sudo
실행되기 전에 실행됩니다.
당신이 할 수 있는 일은 save라는 명령을 사용하는 것입니다:
save() {
sudo tee "$@" >/dev/null
}
echo something | save /etc/importantfile