다음은 모든 것을 실행하는 방식으로 터미널에 붙여넣고 싶은 매우 간단한 코드 조각의 예입니다.
sudo apt update
sudo apt upgrade
sudo apt -y install build-essential
sudo apt -y install git
sudo apt -y install libxml2-dev # required for some tools using xml files
sudo apt autoremove
불행하게도 build-essential이 미리 설치되지 않으면 sudo apt -y install build-essential
후속 라인만 건너뛰게 됩니다. git이 설치되지 않은 경우에도 마찬가지입니다. git 줄로 실행되고 나머지는 건너뜁니다.
왜 이런 일이 발생합니까? 스크립트 파일을 생성하고 bash를 통해 실행하지 않고 이 문제를 해결할 수 있는 방법이 있습니까?
답변1
여전히 sudo의 자격 증명 캐시 시간 초과 내에 있다고 가정하면(확실하지 않은 경우 sudo -v
코드 조각을 실행하기 전에 새로 고치십시오) apt(-get)는 매우 풍부한 콘솔 애플리케이션이므로 문제가 발생합니다. 무엇이든 물어보면 표준 입력을 소비하게 될 것입니다 -y
.
서브셸에서 전체 코드 조각을 실행하여 이 문제를 해결할 수 있습니다.
프롬프트에서 먼저 a를 입력하고 (
코드 조각을 붙여넣은 다음 닫는 문장을 입력 )
하고 Enter 키를 누릅니다.
이제 갈 시간이다.
코드 조각은 붙여넣은 후 즉시 실행되지 않습니다. 대신 명령줄에서 "대기열에 추가"되어 닫는 대괄호를 기다립니다.
apt-get autoremove
(PS: 시스템에 따라 을 대신 사용해야 할 수도 있고 및 를 사용해야 apt autoremove
할 수도 있습니다 .)-y
update
upgrade
답변2
sudo apt upgrade
명령 사이에 충분한 시간이 경과하면 sudo apt install -y build-essentials
SUDO는 비밀번호를 다시 묻는 메시지를 표시합니다.
콘솔에 텍스트를 붙여넣기 때문에 다음 줄에서는 비밀번호에 대한 SUDO 프롬프트를 STDIN으로 허용합니다. 라인이 비밀번호와 일치하지 않으면 인증이 실패하고 build-essentials
라인이 실행되지 않습니다.