[Backend] 기본적인 터미널 명령어 1

Updated:

🖥 기본적인 터미널 명령어 1

[Backend] 터미널 사용방법 에서 터미널 사용방법과 아주 기초적인 명령어를 알아보았다.

오늘은 find, grep, awk 에 대해 알아보려고 한다.


$ find

find 명령어는 단어 그대로 우리가 원하는 파일을 찾아주는 명령어 이다.

SQL 의 쿼리문 처럼 특정 확장자, 특정 사이즈 이상, 디렉토리만 검색 등 정말 다양하고 자세한 조건을 통해 파일을 찾아준다.

하지만 사용 할 줄 모른다면 아무짝에 쓸모 없는 명령어 일 뿐이다. find 는 옵션이 정~말 많다고 하니 중요한 부분만 정리해야겠다.

  • $ find . -name “FILE*“

    find 와 -name 사이의 . 은 현재 디렉토리를 의미한다. 검색하고 싶은 디렉토리를 특정 하고 싶다면 ~/폴더이름 을 사용하자.

    이 명령을 사용하면 파일 이름 중 FILE 을 포함하고 있는 모든 파일을 현재 디렉토리와 하위 디렉토리에서 검색한다.

    이때 * 을 빼주면 정확히 FILE 이름을 가지고 있는 파일만 찾는다.


  • $ find . -name “FILE*” -type d

    뒤에 찾고자 하는 파일 형식을 지정 해 줄 수도 있다. 이 명령은 파일 이름 중 “FILE” 을 포함한 디렉토리만 검색한다.


  • $ find . -name “FILE*” -type f

    이 명령은 파일 이름 중 “FILE” 을 포함한 파일만 검색한다.


  • $ find . -type f -size +10M

    이름을 통해 파일을 검색했다면 크기를 통해 검색을 할 수 도 있다. 단위는 k, M, G, T, P 로 구분하며 +, - 로 이상 이하를 정한다.

    이 명령은 크기가 10M 이상인 파일을 검색한다.


  • $ find . -type f -size +20M -mtime -3d

    크기가 20M 이상인 파일 중에서 3일 이내에 수정 된 적이 있는 파일을 찾는다.

    시간은 s, m, h, d, w (초, 분, 시, 일, 주) 를 의미한다.

    -mtime 은 modify 를 의미하고 -atime 은 access, -ctime 은 change 를 의미한다.

    -mtime, -ctime 의 다른점은 파일 내용의 수정, 파일 상태의 변경이다.

    Yes, “modified file’s data” (mtime) means that the content was modified. This date can be manually changed (e.g. with touch).

    Yes, “changed file’s status” (ctime) means that either the content was changed, or the file’s metadata (permission, owner, etc). This can not be changed manually.

  • $ find . -name “FILE*” -type f -size +10M -exec ls -l {} \;

    -exec 를 통해 명령에 명령을 붙일 수 있다. 약간 서브쿼리 같은 느낌일까..

    이 명령은 -exec 전 까진 똑같지만 이 다음을 보면 $ ls -l 의 명령을 포함하고 있는 것 이다.

    {}find 명령을 통해 가져온 결과를 저장하는 곳 이다.

    만약 검색 결과가 FILE-1, FILE-2, FILE-3 라면 괄호 안에 검색결과가 저장된다. 그리고 $ ls -l 명령을 수행하는 것 이다.

    \;-exec 명령이 모두 끝났다는 것을 의미한다.

    정리하자면 이 명령은 “FILE” 이라는 이름을 포함하며 크기가 10M 이상인 파일을 찾아

    $ ls -l 명령으로 인해 파일의 자세한 정보를 보여준다.


$ grep

파일의 내용이나 터미널의 출력물 중에서 특정 문자열을 찾는데 사용하는 명령이다. 중요도가 리눅스 명령어 중 거의 탑 급이라고 한다..

  • $ grep def *

    현재 디렉토리의 모든 파일에서 def 를 포함하고 있는 라인을 출력한다.

    $ grep def * -r 을 해준다면 하위 디렉토리까지 검색을 한다.


  • $ grep def example.py

    example.py 의 파일에서 def 를 포함하고 있는 라인을 출력한다.


  • $ grep def top.py -A 13

    top.py 파일에서 def 를 포함하고 있는 라인을 출력하고 다음 13번째 라인까지 모두 출력한다

    top.py 의 함수를 출력해서 볼 수 있다.


  • $ grep def example.py -A 10 -n

    위 명령과 똑같지만 -n 을 통해 해당 라인 번호를 보여준다.

    $ grep def * -A 10 -rn 을 해준다면 현재 디렉토리와 하위 디렉토리까지 모두 검색을 한다.


  • $ ps | grep iTerm2

    파일의 내용 뿐 만 아니라 표준입출력에서도 검색을 할 수 있다.


$ awk

awk 는 명령어라고는 하지만 사실 스크립트 언어라고 한다.

때문에 활용도가 엄청나지만 기본적으로는 grep 과 함께 문자를 파싱해서 원하는 결과를 얻는데 사용한다.

  • $ ps | awk ‘{print $1}’

    ps 의 결과에서 첫 번째 열만 출력을 한다. 결국 현재 실행 중인 프로세스의 PID 만 출력을 한다.


  • $ seq 1 10 | awk ‘{s+=$1} END {print s}’

    1부터 10까지의 합을 출력하는 명령이다. 이렇게 정~말 다양하게 응용이 가능한 awk 이다.

    그렇기 때문에 정리를 하기엔 양이 정말 많을 것이라고 생각이 드니 차차 공부해 가야겠다.

📕 참조, 출처


Categories:

Updated:

Leave a comment