ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 찾기 - locate / whereis / which / find 차이점2
    2024년 4분기의 도전/칼리리눅스 2024. 9. 9. 22:03
    728x90
    반응형

    지난번에 '찾기' 를 할 수 있는 명령어(?) 에 대해서 기록했다. 

    https://letoileestla.tistory.com/160

     

    chatgpt는 무섭다...하지만 피할 수 없는 변화지.

    locate와 whereis는 파일을 찾기 위해 사용되는 두 가지 서로 다른 명령어입니다. 두 명령어의 동작 방식이 달라서 발생하는 이 문제를 설명하겠습니다.locate 명령어:locate는 시스템에 저장된 데이

    letoileestla.tistory.com

    그러고 나서 파일을 생성하는 것을 다시 복습했는데 

    cat hackingskills
    // hackingskills 파일의 내용이 표현
    
    cat> hackingskills
    // hackingskills 파일을 생성하고, 해당 내용을 입력할 수 있음.

     

    문제는 해당 파일을 만들고 나서 locate / whereis / which / find 로 검색해봤는데 결과 값이 locate/ find 만 나오는 것이다.

    아니 도대체 왜? 나는 파일을 만들었는데 그 결과 값은 어떤 명렁에서는 나오고 또 다른 명렁에서는 안 나오는 것인가? 

     

    구글 검색을 해볼까 하다가...어제 사용한 chatgpt가 떠올랐고...이제는 그 위력을 반가워 해야할지 기뻐해야할지 모를 존재가 되었는데 역시나 내가 알고 싶은 대답을 해주었다. 

     

    //인용// 

    좋은 질문입니다! `locate`, `find`, `whereis`, `which`는 모두 파일을 찾기 위한 명령어지만, 각 명령어의 기능과 동작 방식이 다릅니다. 아래에 각 명령어의 특징과 왜 결과가 다를 수 있는지를 설명해드릴게요.

    1. `locate`
    - **기능**: `locate`는 파일 시스템의 데이터베이스를 검색하여 파일을 찾습니다. 이 데이터베이스는 주기적으로 업데이트되며, 일반적으로 `/var/lib/mlocate/mlocate.db` 같은 위치에 저장됩니다.
    - **동작**: `locate` 명령어를 사용하면 데이터베이스에서 파일을 찾아 빠르게 결과를 반환합니다.
    - **장점**: 매우 빠르며, 최신 상태의 파일을 찾기 어려울 수 있습니다(데이터베이스 업데이트가 필요할 때).

    2. `find`
    - **기능**: `find`는 실제 파일 시스템을 직접 검색하여 파일을 찾습니다.
    - **동작**: 검색 조건을 지정하여 실제 파일 시스템을 탐색하기 때문에 실시간으로 최신 상태의 파일을 찾을 수 있습니다.
    - **장점**: 파일 시스템의 현재 상태를 반영하므로, 가장 최신의 파일을 찾는 데 유용합니다.

    3. `whereis`
    - **기능**: `whereis`는 특정 명령어의 바이너리, 소스 코드, 매뉴얼 페이지 등을 찾기 위해 사용됩니다.
    - **동작**: 일반적으로 시스템 명령어와 관련된 파일을 찾는 데 사용됩니다. 예를 들어 `whereis ls`는 `ls` 명령어와 관련된 파일의 위치를 찾습니다.
    - **장점**: 시스템 명령어의 위치를 찾는 데 최적화되어 있습니다.

    4. `which`
    - **기능**: `which`는 명령어가 실행될 위치(경로)를 찾습니다.
    - **동작**: `$PATH` 환경 변수에 설정된 경로를 기준으로 명령어를 검색합니다.
    - **장점**: 주로 실행 파일의 위치를 확인하는 데 사용됩니다.

     왜 결과가 다른가?
    - **파일 위치**: `cat > hackingskills`로 생성한 파일은 사용자가 지정한 경로에 존재하지만, `whereis`와 `which`는 시스템 명령어 및 실행 파일만 검색합니다. 그러므로 `hackingskills` 파일은 이러한 명령어로 찾을 수 없습니다.
    - **명령어의 목적**: `locate`와 `find`는 일반적인 파일을 찾기 위해 사용되며, 파일이 저장된 경로를 기준으로 검색합니다. 반면 `whereis`와 `which`는 명령어와 실행 파일을 찾는 데 특화되어 있습니다.

    따라서 `hackingskills` 파일을 찾고자 한다면 `locate`나 `find`를 사용해야 하고, `whereis`와 `which`는 시스템 명령어와 관련된 파일을 찾는 데 사용해야 합니다.

    //인용끝// 출처 : chatgpt

     

     

    반응형
Designed by Tistory.