보호된 파일로 데이터를 전송하는 Bash 기능

보호된 파일로 데이터를 전송하는 Bash 기능

.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

관련 정보