![Blog Images](/media/blog/리얼리눅스_블로그_메인_2_9glaO2o.png)
리눅스기초 / 쉘 스크립트 마스터 미리보기-find 명령어 "특정 키워드가 들어간 파일명 찾기"
쉘 스크립트 마스터 커리큘럼을 소개해 드립니다.
리눅스 기초 부분쉘 스크립트 내용이 둘 다 들어있습니다
그래서 이전에 리눅스 온라인 수업의 기초수업의 내용이 일부 이제 같이 포함이 좀 되어 있어요.
저희가 이제 서버엔지니어를 타겟팅 해서 수업이 구성이 되어 있기 때문에
예를 들어서 임베디드 리눅스 라든지 엔지니어가 해야 되는 그런 작업이라든지 그런 내용들보다는 서버를 운영하는 사람에 있어서 조금 더 기초적으로 알아야 되는 내용들이 주로 구성이 되어 있다. 라고 보시면 되겠고요
기본적으로 리눅스에 대한 이해도 virtualbox 시스템 그리고 터미널 많이 쓰게 되는데 터미널이나 이나 콘솔이런거 제대로 구분못하고 GUI랑 CLI 같은 거 어떤 게 장단점인지 이런 것 구분못하시는 분들이 많이 계시거든요
이런것들도 다 철저하게 공부한다고 보시면 되겠고요
리눅스 안에서 파일 다루는 것들 그리고 시스템을 이해를 하고
전반적으로 시스템 확인하는 것들에 대해서도 간략하게 알아볼 예정입니다
그리고 이제 리눅스 안에서 다뤄야 되는 어떤 능력 시중에서 서버엔지니어 있어서 정말 필수적이겠죠
그게 바로 쉘 스크립트를 작성할 수 있는 능력입니다
왜 그러냐면 명령을 입력해서 동작을 시키는 것도 굉장히 중요하지만
그런 부분들을 자동화 시켜 우리가 작업하는 부분들을 자동화 시키고
조금 더 생산성을 높일 수 있는 좋은 작업이기 때문에 스크립트 능력은 굉장히 중요해요
기본 문법부터 시작을 해 여러가지 실전사례들을 좀 얘기를 하면서
그냥 단순히 문법만 배우고 나서 끝나는 게 아니라 어떤 실전사례의 적용을 했을 때 스크립트가 되게 잘 적용이 될 수 있을까 이런 것들 같이 생각하면서 스크립트를 같이 짜보고 구성하는 실습위주의 커리큘럼으로 구성이 되어 있습니다
보시면은 Find 가지고 /하면은 루트 폴더부터 찾는 거예요
그러니까 모든 폴더를 기준으로 전부 다 서치 하는 겁니다
근데 여기서 name라는 옵션을 주고 만약에 htop라고 말하죠
htop h부터 시작해가지고 P로 끝나는 그 단어로 된 파일명으로 찾는 거예요
그런데 이렇게 하는 게 아니라 만약에 우리가 *을 붙이고
여기가 *을 붙이면 이 키워드가 포함된 파일을 찾는다고 보시면 되겠습니다
이해가 되시죠?
그래서 그런 식으로 찾아주시면 돼요
그래서 명령을 입력을 해보면요
이렇게 htop 이라는 키워드가 들어간 파일들을
여기서 뭔가 접근 권한이 없다던가
오류가 나는 경우에는 이런 식으로 Permission denied라든지 에러메시지가 날 수가 있어요
그래서 이런 부분들에 대해서 내가 보고 싶지 않다
이러면은 여기다 dev/null 식으로 적어주시면 되거든요
근데 이제 이게 정확하게 어떤 뜻인지는 이야기하려면
당연히 파일I/O에 대해서 좀 알아야 되고 파일 디스크립트 넘버에 대해서 이해를 해야 되고 좀 알아야 할 것들이 많이 있습니다
근데 이제 여기서 우리는 지금 실용적으로 외워 줄 수밖에 없어요
자 일단은 모든 파일들은요
세 가지를 파일을 오픈하고 있어요 모든 프로세스들은요
세 가지 파일을 오픈하고 있습니다
쉘 이라고 하는 프로그램도 마찬가지로 세개를 오픈하고 있는데요 스탠다드 인풋 아웃풋
에러라고 해서 파일 디스크립트 넘버로는 0,1,2 열고 있습니다
그래서 이 2번이 에러메시지가 출력되는 공간이라고 보시면 되겠고요
그 메시지 내용을 dev/null 넣었기 때문에 보이지 않겠다
그래서 에러 메시지를 생략하고 보겠다 라는 의미가 되요
그래서 이거를 자세하게 이해하고 싶다면 사실은 이제 파일 디스크립트 넘버라든지 이런 부분들을 조금 깊게 들어가야 되는데 이거는 이제 우리 클래스에서는 다루지 않고 이제 중급반이라든지 나중에 시스템 핵심 정리 진행을 할 때 좀 자세하게 좀 다뤄보도록 하겠습니다.
우선은 실용적으로 활용해주시면 되겠고요
에러메시지 없이 htop 키워드가 들어간 파일들을 찾아내는 방법입니다
이렇게 find명령으로 할 수가 있겠고요
find명령어랑 굉장히 유사한데요 locate라는 명령어가 있어요
한번 해볼까요 locate htop했을 때 속도가 완전히 다른 거 느껴지시나요?
굉장히 빠르죠! locate가 굉장히 빠르기 때문에 심플하게 locate find 명령어 locate가 빠르니까 locate 써야겠다 간편하고 빠르니까 그러면은 이렇게 생각할 수 있단 말이죠
그러면 find를 왜 쓸까?
우분투에서는요 사용자 편의적인 명령어들이 많이 있어요
근데 그 중에 하나가 locate라고 보시면 되겠고요
locate 같은 경우에는 그냥 키워드를 입력하면
키워드가 포함된 파일을 빠르게 찾아내게 됩니다.
근데 이제 내부적으로 데이터베이스를 유지하고 있어요.
그래서 그 데이터베이스의 정보를 기준으로 출력을 해준다라고 보시면 되거든요 그렇기 때문에 좀 빠르게 찾아 줄 수는 있겠지만 좀 새로 만들어진 파일은 DB에 적용이 안 되어 있을 수 있기 때문에 그럴 때는 놓치는 경우가 생길 수 있어요
그건 이따가 한번 실습을 해보면 좋을 것 같고요
그래서 한 가지 더 차이점을 말씀을 드리면 일단은 find라는 명령어보다
locate가 좀 더 빠른 건 맞지만 find가 세부적으로 쓸 수 있는
옵션들이 굉장히 많아요
예를 들어서 이제 파일타입이 일반파일 인지 디렉토리 인지를 구별한다든가
그리고 또 파일을 찾았을 때 그 파일에 대한 어떤 사이즈를 기준으로
필터링을 건다든가 그리고 찾고 나서 어떤 명령어를 입력할 건지
이거보다 훨씬 더 많은 명령어들이 옵션들이 존재를 하거든요
그래서 세부적으로 할 수 있는 게 굉장히 다양하다고 보시면 됩니다
그런 부분들이 어떤 게 있을까요? 라는 걸 이제 궁금하시다면
일단 당연히 man 페이지를 기준으로 이제 탐색을 해 볼 수 있겠고요
man 페이지를 기준으로는 물론 이제 좀 친절하게 우리가 바로바로 쓸 수 있게 끔 나와 있는 예제들이 없을 수 있기 때문에 이럴 때는 당연히 좀 구글링을 통해서 예제에 따라서
어떻게 하면 사람들이 이런 케이스 저런 케이스를 이제 find옵션을 통해서 해결을 할까?
이런 것들을 좀 찾아보면서 많이 경험을 할 수밖에 없어요
그래서 우리가 모든 옵션들 모든 디테일하게 응용하는 사람들에게서 다
이제 우리가 훈련할 수는 없기 때문에 이런 것들을 찾아나가는 방향이라도
이제 우리가 알고 있게 되면 우리가 이제 수업이 끝나고
나서도 많이 내공을 쌓을 수 있겠죠