[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. withtouch
).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 이다.
그렇기 때문에 정리를 하기엔 양이 정말 많을 것이라고 생각이 드니 차차 공부해 가야겠다.
Leave a comment