스크립트의 전체 DIRSTACK을 나열하기 위해 "dirs"를 어떻게 얻나요?

스크립트의 전체 DIRSTACK을 나열하기 위해 "dirs"를 어떻게 얻나요?

내 테스트 스크립트:

#!/bin/bash
dirs -p >> work_note.txt

10개 디렉터리 스택에서 상위 1개만 반환할 수 있으며 명령줄에서 dirs -p또는 dirs -v명령줄을 실행하면 전체 스택을 가져옵니다.

내가 놓친 부분에 대한 조언이나 지식을 주시면 대단히 감사하겠습니다.

노트 나의 주요 목표는 터미널에서 무엇을 했는지 기억할 수 있도록 DIRSTACK을 파일에 기록하는 로그아웃 프로세스를 만드는 것입니다. 나는 보통 여러 개의 터미널을 실행하고 있습니다.

답변1

이는 DIRSTACK지역 변수이며 스크립트, 서브쉘, 서브프로세스 등에 전달되지 않습니다. .bashrc스크립트 대신 함수에 로드를 사용하는 것이 좋습니다 .

답변2

나는 이 트릭을 사용하여 모든 세션에서 디렉터리 스택을 검색합니다. 저는 파일로 저장하곤 했어요. 다른 터미널로 가져오기/내보내기도 가능

.bashrc에 이 함수를 정의하세요.

stackd () 
{ 
    SAVEIFS=$IFS;
    IFS=$(echo -en "\n\b");
    builtin cd $@ && builtin pushd "$PWD" > /dev/null;
    dirs -l -p >> $HOME/.iostackd/dirstack && sort -u -o $HOME/.iostackd/dirstack $HOME/.iostackd/dirstack > /dev/null;
    IFS=$SAVEIFS
}

별칭을 통해 buitin 'cd'를 오버로드하세요.

alias cd='stackd "$1"'

관련 정보