본문 바로가기

Linux/Linux

Linux에서 파일 찾기, 환경 변수

반응형
SMALL

안녕하세요 ! 오늘은 리눅스에서 여러분들이 원하는 파일이 있을 때 이를 찾는 방법을 공부할 예정입니다.

어디있니?

파일의 경우 2가지로 분류가 가능합니다. 실행 파일(명령을 저장하고 있는 파일)과 데이터를 저장하고 있는 파일로요. 저희는 파일의 종류와 상관없이 파일을 찾는 방법 하나와 실행 파일을 찾는 방법 하나를 알아보려합니다.

 

파일을 찾는 간단한 방법은 아래 명령어입니다.

locate [파일 이름]

locate *.log #.log가 붙은 모든 파일의 위치를 표시해줍니다.

locate의 경우 directory를 찾아주지 않습니다. 오로지 파일을 찾아줍니다. 이 파일은 데이터베이스에서 찾기 때문에, directory를 뒤져서 찾는것보다 속도가 빠릅니다. locate가 사용하는 데이터베이스를 mlocate라고 부릅니다.

 

directory에서 찾는 명령어도 존재합니다.

# 현재 디렉토리 내에서 파일이름으로 찾기
find . -name hello.txt

# 루트 디렉토리 내에서 파일이름으로 찾기
find / -name *.log

# file type만 찾기 (hello.txt라는 directory가 있더라도 출력이 되지 않습니다)
find . -type f -name hello.txt

# file type 중 hello.txt를 찾아서, rm -f(묻지도 따지지도말고)를 실행시킵니다.(execute = 실행하다) {}는 '나머지 명령어가 실행되면'이라는 뜻
find . -type f -name "hello.txt" -exec rm -f {} \;

directory를 뒤져서 찾기 때문에 locate보다 속도가 느릴 수 있지만, 현재 상태를 포함해서 가져오기 때문에 주로 쓰이는 명령어입니다.


그렇다면 이제 실행파일을 찾아주는 명령어를 알아보도록 합시다.

# ls 실행 명령어 파일이 어디에 있는지 알려줍니다.
whereis ls

# 마찬가지입니다.
whereis rm
man whereis

위 명령어를 실행해보면 whereis 명령어가 실행될 때 $PATH에서 찾는 것을 알 수 있습니다. $PATH 디렉토리는 뭘까요?

 

사실 우리가 ls라는 명령어를 어느 위치에서 실행해도 다 실행이 됩니다. 사실 ls라는 명령어 위치는 /bin/ls에 있음에도 불구하고요.

 

그러면 이게 어떻게 가능한 것일까요? 그 비밀이 $PATH 변수에 있습니다. 기본적으로 $PATH는 변수이지만, Linux 자체에 내장된 변수입니다. $PATH가 변수이면, 이 변수에 어떤 것이 담겨져 있을까요? 바로 '경로'입니다.

#이 명령어로 $PATH 변수에 어떤 것이 담겨져 있는지 확인 가능합니다.
echo $PATH

즉, ls라고 명령을 입력하면, 운영체제는 $PATH에 담겨있는 directory를 검색해서 그 directory에 ls라는 실행파일이 존재하는지를 찾습니다. 그렇게 ls라는 명령어를 발견하면, 이를 실행합니다.

 

어떤 명령어를 실행했을 때, 그 명령어가 어디에 위치하는지 전체경로를 안 적어도 되는 이유가 $PATH 덕분이고 이러한 변수를 환경 변수라고 합니다.

 

$PATH 값을 변경도 가능합니다.


이상 Linux에서 파일 찾기였습니다. ^_^

반응형
LIST

'Linux > Linux' 카테고리의 다른 글

Linux 백그라운드 실행, 멀티태스킹  (0) 2020.03.13
Linux에서 프로세스 모니터링하기  (0) 2020.03.13
Shell은 무엇일까요?  (0) 2020.03.10
IO Redirection - output  (0) 2020.03.09
명령어로 file을 다운 받기 - wget  (0) 2020.03.08