Bash 스크립트를 작성하거나 자동으로 vi를 열고 문서를 편집하는 방법은 무엇입니까?

Bash 스크립트를 작성하거나 자동으로 vi를 열고 문서를 편집하는 방법은 무엇입니까?

기본적으로 이 프로세스를 자동화하기 위해 bash 스크립트를 작성하고 싶습니다.

vi filename.sh

(vi를 사용하여 "filename.sh"를 엽니다.)

다음 두 줄을 추가합니다.

export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}

그리고 이 변경사항을 저장하세요

:wq!

기본적으로 자동화를 위해 이를 젠킨스 파일에 추가하고 싶습니다.

답변1

vi정의에 따르면 이는 시각적 편집기입니다.

이 경우에는 다른 방법을 사용하는 것이 좋습니다.

이 줄만 추가하려면 다음을 수행하세요.

cat >> filename.sh <<'EOF'
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
EOF

파일이 아직 존재하지 않는 경우에도 작동합니다.

처음에 이러한 줄을 추가하려면 ed줄 기반 편집기를 사용할 수 있습니다.

ed filename.sh <<'EOF'
1i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w
q
EOF

이는 ed행이 라인 1에 삽입됨을 나타냅니다. .라인의 단일 지점은 입력의 끝을 나타내므로 삽입이 여기서 중지됩니다. 마지막으로 파일이 기록되고( w) 편집 세션이 종료됩니다( q).

파일이 아직 존재하지 않더라도 ed(이 경우 위의 예를 사용함 cat) 다음을 사용할 수 있습니다.

ed filename.sh <<'EOF'
i
export GRADLE_HOME=/opt/gradle/gradle-5.2.1
export PATH=${GRADLE_HOME}/bin:${PATH}
.
w filename.sh
q
EOF

i주요 차이점은 아직 줄이 없기 때문에 insert 명령으로 줄 번호를 전달할 필요가 없다는 것입니다. 그런 다음 w새 파일인 write 명령에 파일 이름을 전달합니다.

sed잘 작동하지만 이러한 유형의 작업에서는 ed사용하기가 더 쉽고 진행 상황을 읽는 것이 더 쉽습니다.

답변2

자동 스크립팅을 사용할 수 있습니다ed

좋다 ed < edit.sed filename.pdf

더 자세히 알아보려면 다음을 방문하세요.이것지도 시간.

답변3

나는 @wurtel이 제안한 방식대로 할 수도 있지만, 어떤 이유로든 정말로 하고 싶다면, 다음을$HOME/.vimrc 파일:

function AddVars()
    let line1 = "export GRADLE_HOME=/opt/gradle/gradle-5.2.1"
    let line2 = "export PATH=${GRADLE_HOME}/bin:${PATH}"
    call append(line('$'), line1)
    call append(line('$'), line2)
    write
    exit
endf

그럼 전화해다음과 같이 -c 옵션을 사용하십시오. vi filename.sh -c "call AddVars()"

관련 정보