일관되게 실행되도록 여러 줄을 붙여넣습니다.

일관되게 실행되도록 여러 줄을 붙여넣습니다.

다음은 모든 것을 실행하는 방식으로 터미널에 붙여넣고 싶은 매우 간단한 코드 조각의 예입니다.

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할 수도 있습니다 .)-yupdateupgrade

답변2

sudo apt upgrade명령 사이에 충분한 시간이 경과하면 sudo apt install -y build-essentialsSUDO는 비밀번호를 다시 묻는 메시지를 표시합니다.

콘솔에 텍스트를 붙여넣기 때문에 다음 줄에서는 비밀번호에 대한 SUDO 프롬프트를 STDIN으로 허용합니다. 라인이 비밀번호와 일치하지 않으면 인증이 실패하고 build-essentials라인이 실행되지 않습니다.

관련 정보