여러 DB 파일을 전달하여 찾는 방법은 무엇입니까?

여러 DB 파일을 전달하여 찾는 방법은 무엇입니까?

locate다음과 같이 여러 데이터베이스 파일을 명령 에 전달하고 싶습니다 .

locate -d ~/.a_locate.db:~/.b_locate.db: -Ai file_to_find

하지만 나에게 다음과 같은 오류가 발생합니다.

locate: can not stat () `~/.b_locate.db': No such file or directory

위치 지정 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

-d, --database DBPATH 기본 데이터베이스를 DBPATH로 바꿉니다.

DBPATH는 :-구분된 데이터베이스 파일 이름 목록입니다. 여러 --database 옵션이 지정된 경우 결과 경로는 개별 경로를 연결한 것입니다.

"별도의 연결"이 무엇을 의미하는지 잘 모르겠습니다. 제가 뭘 잘못하고 있는 걸까요? 전체 경로( /home/user/.b_locate.db)를 제공하려고 시도했는데 작동했습니다. 누군가 이 동작을 설명할 수 있나요?

(저는 mlocateArch Linux에서 패키지를 사용하고 있습니다)

답변1

두 번째는 ~확장되지 않았습니다.

locate -d "${HOME}/.a_locate.db:${HOME}/.b_locate.db:" -Ai file_to_find

대신, 또는 이것이 zsh이므로,

locate -d $HOME/.a_locate.db:$HOME/.b_locate.db: -Ai file_to_find

그 이유는 ~/쉘 단어의 시작 부분에서만 확장되기 때문입니다. 쉘 단어는 공백으로만 끝납니다(이 경우 실제 규칙은 훨씬 더 복잡합니다). ~/foo:~/bar는 로 시작하는 단어이므로 ~/선두는 ~홈 디렉토리로 확장되지만 ~중간에는 특별한 것이 없으므로 여전히 물결표입니다. 할당의 오른쪽에는 한 가지 예외가 있습니다. in 은 PATH=~/foo:~/bar할당 기호 뒤와 오른쪽의 a 뒤에 확장됩니다 ~/.=:

관련 정보