찾기 명령이 특정 위치로 이동하여 검색하도록 하려면 어떻게 해야 합니까? [복사]

찾기 명령이 특정 위치로 이동하여 검색하도록 하려면 어떻게 해야 합니까? [복사]

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. 액세스하려면 확장 프로그램을 사용하세요.cdzshcdautopushdcd +2cd -2$dirstack~2~+2~-2

관련 정보