C++ 프로젝트의 헤더를 준비 중이고 find
다른 헤더 파일을 가져오기 위해 포함 옵션을 사용하기로 결정했습니다. 올바른 경로를 나열하려면 다음과 같이 사용해야 합니다 cd
.
cd 'PATH/TO/HEADER/FILE'
find ../../../
그래야만 헤더 파일에 붙여넣기를 복사할 헤더 디렉토리 목록을 얻을 수 있습니다. 그 후에는 다음을 수행해야 합니다.
cd 'PATH/TO/MY/PROJECT'
프로젝트 경로로 다시 전환하십시오.
자주 사용하기 불편한데 해당 디렉토리로 자동으로 "점프"하여 검색하도록 명령을 cd
내릴 수 있나요 ? find
매뉴얼 페이지를 읽었지만 알아낼 수 없습니다.
find PATH/TO/HEADER/FILE
의도적으로 경로 이름이 ../../../
.
답변1
서브셸에서 실행하면 됩니다 cd
.find
(cd 'PATH/TO/HEADER/FILE' && find ../../..)
이런 방식으로 서브쉘의 현재 작업 디렉토리만 영향을 받습니다.
함수나 스크립트로 만들 수 있습니다. 여기서는 GNU가 사용됩니다 realpath
.
findfrom() (
dir=${1?}; shift
reldir=$(realpath --relative-to="$dir" .) || exit
cd -- "$dir" && find "$reldir" "$@"
)
최신 버전의 GNU에는 명령을 실행하기 전에 작업 디렉터리를 변경하는 / 옵션 env
도 있습니다 .-C
--chdir
env -C PATH/TO/HEADER/FILE find ../../..
cd -
또한 마지막 성공 이전에 있었던 디렉토리로 언제든지 돌아갈 수 있습니다 cd
.
csh 및 Korn과 같은 쉘은 작업 디렉토리 스택도 지원합니다 . 에서는 옵션을 통해 자동으로 스택을 사용 하고 , ... 를 사용하여 스택을 탐색 하거나 배열 또는 , pushd
, 물결표를 사용할 수 있습니다 popd
. 액세스하려면 확장 프로그램을 사용하세요.cd
zsh
cd
autopushd
cd +2
cd -2
$dirstack
~2
~+2
~-2