.sh를 실행하여 여러 명령 실행


9

쉘 스크립트를 통해 여러 명령을 실행하는 방법에 대해 궁금했습니다.

예를 들어, 그것을 시험해보기 위해 .desktop을 .sh에 연결하여 모든 업데이트 코드를 실행하므로 입력 할 필요가 없습니다. 여러 개가 아닌 .sh를 통해 단일 명령을 실행하는 방법을 알고 있습니다.

어쨌든?

답변:


10

정말 간단합니다-명령을 분리해야합니다. 예를 들면 다음과 같습니다.

#!/bin/bash
sudo apt-get update
sudo apt-get upgrade

패키지 목록을 업데이트 한 다음 패키지를 업데이트합니다. 또 다른 가능성은 이것입니다 (아마도 &&는 upgrade명령 update이 성공적으로 종료 되면 명령을 실행할 수 있기 때문에 더 좋습니다 ) :

#!/bin/bash
sudo apt-get update && sudo apt-get upgrade

패키지 목록을 업데이트하고 패키지 자체를 업데이트하는 명령을 실행해야합니다. 텍스트 파일 (예 : updatescript홈 디렉토리)에 저장해야합니다 . 그런 다음 다음을 실행하여 실행 가능하게 만들 수 있습니다.

 chmod +x ./updatescript

또는 파일을 마우스 오른쪽 버튼으로 클릭하고 속성에서 실행 파일로 만들면됩니다.

터미널에서 이것을 사용하여 실행하십시오.

 ./updatescript

노트):

명령 -y과 함께 사용할 수 있는 옵션 ( )이 upgrade있으므로 패키지를 업그레이드하기 전에 프롬프트하지 않습니다. apt-get어리석은 일이나 원하지 않는 일을 할 수 있기 때문에 패키지를 업그레이드하기 전에 무엇 을하고 있는지 확인하는 것이 좋습니다 . 이와 같은 옵션에 대한 자세한 정보는를 실행하여 찾을 수 있습니다 man apt-get.

또한 업데이트하는 내용을 확인한 다음 실행할 수 있으므로 터미널을 사용하여 스크립트를 실행하는 것이 더 이상적입니다. GUI를 통해 업데이트를 실행하려면 소프트웨어 센터를 그대로 사용하십시오.


5

@Wilf의 탁월한 답변에 몇 가지 요점을 추가하면,

어떤 이유로 든 원하는 경우 autostartparalell 에서 명령을 실행할 수 있습니다. 예를 들어 OpenBox 용 스크립트는 다음과 같습니다.

#!/bin/bash

nitrogen --restore &
tint2 &
tilda

을 사용하여 배경 이미지를 설정하고 nitrogen, 패널 tint2을 시작하고, Quake3 스타일 드롭 다운 콘솔을 tilda동시에 시작합니다. 다음 프로그램을 시작하기 전에 프로그램을 완료하지 않아도되는 경우에 유용합니다. 아니하는 경우 apt-get updateapt-get upgrade하지만!

통지 &각 라인의 끝에 기호. 그러면 셸이 해당 프로세스를 백그라운드로 분기하고 실행을 계속합니다. 그것에서 다르다 방법 참고 &&기본적으로 인 and, 기호 command_1 && command_2실행됩니다 command_1하고 성공을 종료하는 경우에만 다음 실행 command_2하면서, command_1 & command_2첫 번째에 이어 두 번째로 권리를 시작합니다.


또한 다음과 같이 명령을 스택하여 직렬로 실행할 수 있습니다.

#!/bin/bash

apt-get update
apt-get upgrade

이것은 실행 apt-get upgradeapt-get update되어 완성 에 관계없이 결과 만. 따라서 예를 들어 네트워크 오류로 업데이트가 종료 되더라도 업그레이드는 계속 실행됩니다.

;부호를 사용하여 한 줄로이 작업을 수행 할 수도 있습니다 apt-get update ; apt-get upgrade. 이 솔루션은 이러한 특정 명령에 최적 이 아니지만 다른 상황에서는 유용 할 수 있습니다.


하나의 빠른 최종 요점은 다음을 포함하는 줄을 끊을 수도 있습니다 &&.

command_1 &&
command_2

이것은와 동일합니다 command_1 && command_2.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.