이 명령에서 sudo를 어디에 입력해야 합니까? [복사]

이 명령에서 sudo를 어디에 입력해야 합니까? [복사]

중복 가능성:
쓰기 권한이 없는 파일로 표준 출력을 리디렉션합니다.

echo "some words" >> /etc/apt/source.list

permission denied

sudo echo "some words" >> /etc/apt/source.list

또한 거부된 권한을 반환합니다.

그러다가 추가 연산자가 또 다른 명령일 수도 있고 그 앞에 sudo를 넣어야 한다고 생각해서 시도해 보았습니다.

echo "some words" >> sudo /etc/apt/source.list

또한 거부된 권한을 반환합니다.

이 작업을 어떻게 수행해야 합니까?

답변1

sudo sh -c 'echo "some words" >> /etc/apt/source.list'

sudo echo "some Words" >> /etc/apt/source.list가 작동하지 않는 이유는 sudo가 'echo' 명령을 리디렉션하는 대신 권한을 높이기 때문입니다.

>> 리디렉션을 사용하면 현재 쉘이 파일을 생성/추가하게 됩니다. 쉘에 이 작업을 수행할 권한이 없기 때문에 실패합니다.

내 대답이 작동하는 이유는 sudoed된 새 셸에서 전체 프로세스(에코 및 리디렉션)를 실행하고 있기 때문입니다. sh -c ...새 셸을 호출하고 하위 셸에 지정된 명령을 실행합니다. 앞의 sudo를 사용하면 하위 쉘이 상승된 권한으로 실행됩니다.

두 번째 sudo 예는 sudo를 실행하려면 명령이 필요하지만 사용자가 전달하는 명령이 아니기 때문에 의미가 없습니다. 이제 로컬 디렉토리에 "some Words"가 포함된 sudo라는 파일이 있을 것입니다. 꼭 삭제해주세요 :-)

답변2

echo "some words" | sudo tee -a /etc/apt/source.list > /dev/null

-a"파일에 추가"에 사용됩니다. tee는 일반적으로 대상 파일을 덮어씁니다. 바라보다 man tee.

답변3

고양이를 사용하는데 문제가 있나요?

sudo cat >> /etc/apt/source.list
some words
^D

하지만 저는 Daniel Says 티셔츠를 즐겨 입어요 :-)

답변4

echo "some words" | sudo cat >> /etc/apt/source.list 

관련 정보