쉘 스크립트를 통해 여러 명령을 실행하는 방법에 대해 궁금했습니다.
예를 들어, 그것을 시험해보기 위해 .desktop을 .sh에 연결하여 모든 업데이트 코드를 실행하므로 입력 할 필요가 없습니다. 여러 개가 아닌 .sh를 통해 단일 명령을 실행하는 방법을 알고 있습니다.
어쨌든?
답변
정말 간단합니다-명령을 분리해야합니다. 예를 들면 다음과 같습니다.
#!/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를 통해 업데이트를 실행하려면 소프트웨어 센터를 그대로 사용하십시오.
답변
@Wilf의 탁월한 답변에 몇 가지 요점을 추가하면,
어떤 이유로 든 원하는 경우 autostart
paralell 에서 명령을 실행할 수 있습니다. 예를 들어 OpenBox 용 스크립트는 다음과 같습니다.
#!/bin/bash
nitrogen --restore &
tint2 &
tilda
을 사용하여 배경 이미지를 설정하고 nitrogen
, 패널 tint2
을 시작하고, Quake3 스타일 드롭 다운 콘솔을 tilda
동시에 시작합니다. 다음 프로그램을 시작하기 전에 프로그램을 완료하지 않아도되는 경우에 유용합니다. 아니하는 경우 apt-get update
및 apt-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 upgrade
후 apt-get update
되어 완성 에 관계없이 결과 만. 따라서 예를 들어 네트워크 오류로 업데이트가 종료 되더라도 업그레이드는 계속 실행됩니다.
;
부호를 사용하여 한 줄로이 작업을 수행 할 수도 있습니다 apt-get update ; apt-get upgrade
. 이 솔루션은 이러한 특정 명령에 최적 이 아니지만 다른 상황에서는 유용 할 수 있습니다.
하나의 빠른 최종 요점은 다음을 포함하는 줄을 끊을 수도 있습니다 &&
.
command_1 &&
command_2
이것은와 동일합니다 command_1 && command_2
.