리눅스 배쉬 스크립트, 단일 명령이지만 여러 줄? –exclude=/media –exclude=/dev

Google을 검색하여 작성한 다음 스크립트가 있으며 Linux 시스템을 아카이브에 백업합니다.

#!/bin/bash
# init

DATE=$(date +20%y%m%d)

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev --exclude=/share/Archive /

이것은 효과가 있지만 스크립트를 여러 줄에 걸쳐 명령을 표시하도록 형식화 할 수 있는지 궁금합니다. 따라서 나중에 쉽게 편집 할 수 있습니다.

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz
--exclude=/proc
--exclude=/lost+found
--exclude=/sys
--exclude=/mnt
--exclude=/media
--exclude=/dev
--exclude=/share/Archive
/

그렇게하면 나중에 읽고 편집하기가 더 쉽습니다. 이런 식으로 Bash 스크립트를 포맷 할 수 있습니까?



답변

각 줄의 끝에 “\”를 추가하기 만하면됩니다.

그래서 당신은 다음과 같이 보일 것입니다 :

tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz \
    --exclude=/proc \
    --exclude=/lost+found \
    --exclude=/sys \
    --exclude=/mnt \
    --exclude=/media \
    --exclude=/dev \
    --exclude=/share/Archive \
    /

몇 가지 단축키

($ HOSTNAME 설정을위한 귀하의 의견 업데이트에 근거)

$HOSTNAME

이를 설정하는 두 가지 옵션 :

  1. HOSTNAME 설정

    HOSTNAME = $ (호스트 이름)

  2. (예를 들어, 명령 치환을 사용 $(command))

    위와 같이 보일 것입니다. 사용하기 전에 명령이 실행되도록합니다.

$DATE

피할 수있는 또 다른 변수는 다음과 같습니다.

$(hostname)_$(date +%Y%m%d).tar.gz \

$ man date 날짜 옵션 형식이 있으며 위는 YYYYmmdd입니다.


답변

백 슬래시를 사용하여 다음 행에서 명령을 계속하십시오.

tar -cvpzf /share/Recovery/Snapshots/$HOSTNAME_$DATE.tar.gz \
--exclude=/proc \
--exclude=/lost+found \
--exclude=/sys  \
--exclude=/mnt  \
--exclude=/media  \
--exclude=/dev \
--exclude=/share/Archive \
/

답변

동일한 명령이지만 각 줄에 주석이있는 경우는 다음과 같습니다.

tar -cvpzf /share/Recovery/Snapshots/$(hostname)_$(date +%Y%m%d).tar.gz `#first comment` \
    --exclude=/proc `#second comment` \
    --exclude=/lost+found `# and so on...` \
    --exclude=/sys \
    --exclude=/mnt \
    --exclude=/media \
    --exclude=/dev \
    --exclude=/share/Archive \
    /