<,> 및 >>는 명령의 입력 / 출력 리디렉션에 사용됩니다.이 기능은 셸에서 제공하는 기능입니다 (예 : bash). 따라서 입력과 같은 명령 sudo cat > /var/www/info.php
을 입력하면 파일을 열려고합니다./var/www/info.php
해당 파일을 표준 출력으로 sudo
명령에 제공합니다. sudo
를 발동을 것을이 쉘에 의해 처리되기 때문에 출력이 콘솔로 이동하거나 파일로 재 지정 여부를 명령도 인식하지 못합니다.
명령을 입력 한 쉘이 로그인 쉘이거나 사용자 ID가있는 터미널에서 실행중인 다른 쉘인 경우, 루트가 아닌 사용자 ID와 동일한 권한을 갖습니다.
따라서 귀하의 경우 cat 명령은 루트로 실행되지만 출력을 복사 /var/www/info.php
하는 것은 정상적인 사용자로 실행되는 쉘에 의해 시도되며, 예상대로 실패합니다.
이러한 상황에 대한 해결 방법은 다음 tee
명령 을 사용하는 것입니다 .
sudo tee /var/www/info.php
이것은 콘솔에 입력 된 모든 텍스트를 ^ D까지 매개 변수로 지정된 파일에 넣는 의도 된 효과를 갖습니다.
바람직하지 않은 부작용 중 하나 tee
는 출력을 stdout으로 반향하므로 각 줄을 입력하고 Enter 키를 누르면 tee
사본이 다시 출력됩니다. 이를 피하기 위해 다음 변형을 사용할 수 있습니다.
sudo tee /var/www/info.php > /dev/null
터미널에서 자세한 정보를 얻을 tee
수 있습니다 info tee
.