Pushd는 어떻게 작동하나요?

Pushd는 어떻게 작동하나요?

Bash가 포함된 Ubuntu 16.04에서는 모든 WordPress 구성 요소(핵심, 번역, 테마, 플러그인)를 업그레이드하는 편리한 방법이 없을 때 문제가 발생했습니다. 다음 코드를 사용하여 문제를 해결했습니다.

cat <<-EOF > /etc/cron.daily/cron_daily
    #!/bin/bash
    drt="/var/www/html"
    for dir in "$drt/*/"; do
        if pushd "$dir"; then
            wp plugin update --all --allow-root
            wp core update --allow-root
            wp language core update --allow-root
            wp theme update --all --allow-root
            rse
        popd
        fi
    done
EOF

제가 묻고 싶은 질문은 사실 다음과 같습니다.

  1. 이 변수는 같은 줄에 있는 별표( )와 어떻게 유사합니까 dir(Bash 인터프리터는 그 안에 있는 각 디렉터리를 나타내는 것을 어떻게 알 수 있습니까?)*dir/var/www/html

  2. pushd- popd여기서 시퀀스(?)는 어떻게 작동하나요? 나는 이것을 "for 루프의 각 반복처럼 $dir 안에 있다면 뭔가를 하라"라고 이해합니다.

답변1

dir 변수는 *같은 줄에서 바로 뒤에 나오는 별표()와 어떻게 유사합니까(Bash 인터프리터는 $dir[반복적으로] 그 안에 있는 각 디렉토리를 나타내는 것을 어떻게 알 수 있습니까 /var/www/html/?

배쉬는 그런거야쉘 볼작동/동작하지만 한 가지를 오해했습니다. dir/*다음을 포함하는 glob입니다.모든 파일모든 디렉토리뿐만 아니라 내에서 dir: POSIX 환경에서 디렉토리는파일 유형pushd, 그러나 이 경우 디렉토리만 for 루프 및 후속 -pairs와 관련됩니다 popd.

pushd- popd여기서 시퀀스(?)는 어떻게 작동하나요? 나는 이것을 " $dirfor 루프와 같은 각 반복 내에서 무언가를 수행하는 경우"로 이해합니다.

pushdpopd"스택"이라는 데이터 구조를 사용하는 한 쌍의 도구입니다 . 스프링 디스펜서를 상상해 보세요.페즈 디스펜서.

만약 너라면푸시Pez 디스펜서 상단에 "알약"을 밀어 넣는 것과 같이 나중에 사용하기 위해 항목을 더미에 넣는 것입니다.

만약 너라면대중 음악사용하거나 참조하기 위해 꺼내는 더미의 항목입니다. 그러면 스택에서 제거됩니다.

작동 방식에 대한 간단한 pushd예를 보려면 이 동작을 살펴보세요 popd.

$ pwd
/home/myuser
$ pushd /etc
/etc ~
$ pwd
/etc
$ pushd /usr/local
/usr/local /etc ~
$ pwd
/usr/local
$ popd
/etc ~
$ pwd
/etc
$ popd
~
$ pwd
/home/myuser

루프 for는 기본적으로 다음과 같이 작동합니다만약에이 디렉터리를 디렉터리 스택에 푸시할 수 있습니다. 그러면 이는 첫째로 디렉터리가 현재 존재하고 둘째로 해당 디렉터리가 이제 현재 작업 디렉터리라는 것을 의미합니다. 작업을 계속한 다음 popd이전 위치로 돌아가 다음 루프 반복을 실행합니다.

관련 정보