백엔드 개발자는 리눅스 환경에 익숙해야 합니다.
그러나 처음부터 리눅스 명령어를 능숙하게 사용하기가 쉽지 않지요
그래서 이번 포스팅에서는 백엔드 개발자가 필수로 알아야 하는
명령어들을 정리해보려고 합니다.
저는 여기에 저장해 두고 필요할 때마다 이 글을 열어서 서적처럼 보려고 합니다.
리눅스명령어
#pwd 현재위치출력
pwd는 print work directory의 약자로 작업 중인 디렉터리를 보여줍니다.
$ pwd
/Users/ubuntu
#ls 현재 디렉터리 내의 파일과 디렉터리 출력
list segments의 약자로 현재 디렉터리의 파일과 디렉터리를 보여줍니다.
보통 단독으로 잘 사용하지 않고 옵션과 함께 사용됩니다.
- ls-l : 파일들의 상세 정보를 보여준다.
- ls-a : 숨심 파일 표시
- ls-t : 최신파일부터 표시
- ls-rt : 오래된 파일부터 표시
- ls-F : 파일을 표시할 때 파일의 타입을 나타내는 문자열을 표시(/디렉터리, *실행파일, @심볼릭링크)
- ls-R : 하위 디렉터리의 내용까지 표시
※심볼릭링크(symbolic Link)란
단순히 원본파일을 가리키도록 링크만 연결시켜둔 것으로 윈도우의 바로가기파일이라고 생각하면
이해가 쉽습니다.
원본파일을 가리키기만 하고 있으므로 원본파일의 크기와 무관하며
원본파일이 삭제되어 존재하지 않을 경우에 빨간색으로 깜빡거리면서 링크파일의 원본파일이 없다는 것을
알려줍니다.
#cd 디렉터리 이동
change directory의 약자로 디렉터리 이송 시 사용하는 명령어입니다.
- cd~ : 홈디렉터리로 이동
- cd.. : 상위 디렉터리로 이동, cd../../ 같은 식으로 여러 단계를 한 번에 이동이 가능
- cd/dir : 절대 경로를 지정해서 이동
- cd- : 바로 전의 디렉터리로 이동
#mkdir 디렉터리 생성
make directory의 약자로 디렉터리를 만들 때 사용합니다.
-p 옵션으로 하위 디렉터리까지 한 번에 생성할 수 있습니다.
$ mkdir exampleTest
$ mkdir-p dir1/exampleTest
#cp 파일 또는 디렉터리 복사
copy의 약자입니다. 파일 또는 디렉터리를 복사할 때 사용합니다.
-R 옵션을 사용하면 하위 디렉터리까지 모두 복사가 가능합니다.
# source를 target으로 복사하기
$ cp source target
# target 파일이 이미 있는 경우 덮어쓰기
$ cp -f source target
# 디렉터리를 복사할 때 사용. 하위 디렉터리도 모두 복사하기
$ cp -R sourceDir targetDir
#mv 파일 또는 디렉터리 이동
move의 약자입니다. 파일 또는 디렉터리의 위치를 옮길 때 사용합니다.
혹은 이름을 변경할 때도 사용할 수 있습니다.
자주 사용하는 옵션
- -b : 파일이름이 이미 존재하면 백업파일을 만든다.
- -i : 파일이름이 이미 존재하면 사용자에게 덮어쓰기 여부를 묻는다.
- -f : 파일이름이 이미 존재하면 강제로 덮어쓰기 한다.
- -n : 파일이름이 이미 존재하면 덮어쓰기를 하지 않는다.
- -r : 하위 디렉터리까지 모두 이동한다.
- -v : 이동 진행 상태를 출력한다.
# text1 이름을 text2로 변경
$ mv text1 text2
# text1을 상위 디렉터리로 옮김
$ mv text1 ../
# text1을 /ubuntu 이하 디렉터리로 옮김
$ mv text1 /ubuntu/
#rm 파일 또는 디렉터리 삭제
remove의 약자입니다.
파일 또는 디렉터리를 삭제할 때 사용합니다.
-f 옵션을 붙이면 삭제할 건지 다시 묻지 않고 바로 삭제합니다.
# test1을 삭제
$ rm test1
# 디렉터리 dir1을 삭제. 삭제 시 확인을 함
$ rm -r dir1
# 디렉터리 dir1을 삭제. 삭제 시 확인 안 함
$ rm -rf dir1
# txt로 끝나는 모든 파일을 삭제할지 물어보면서 삭제
$ rm -i *.txt
# 현재 디렉토리에 있는 모든 파일을 바로 삭제합니다, 디렉토리는 삭제하지 않습니다.
$ rm -f *
#cat 파일 내용을 확인
catenate의 약자입니다.
파일의 내용을 확인할 때 사용합니다.
# test.txt 파일의 내용을 확인
$ cat test.txt
#touch 빈 파일을 생성
파일의 날짜와 시간을 수정하는 명령어이지만, 빈파일을 생성하기 위해 자주 사용됩니다.
옵션 없이 사용하면 서버시간으로 최근사용한시간(access time)과 최근변경시간(modification time)을 변경합니다.
-t 옵션을 사용하면 서버의 시간인이 아닌 지정된 시간으로 파일의 날짜 시간 정보를 변경한다.
#0Byte의 빈 파일을 만든다
$ touch newFile
#여러파일 동시에 만들기
$ touch newFile1 newFile2 newFile3
#echo 문자열 화면에 표시
리눅스 운영체제에서 문자열 또는 텍스트를 터미널에 출력하는 명령어입니다.
일반적으로 쉘스크립트, 배치파일에서 상황을 알리는 문자열을 출력할 때 사용됩니다.
-n : 마지막에 따라오는 개행 문자를 출력하지 않는다.
-e : 문자열에서 백슬래시와 이스케이프문자를 이용부호(' ')로 묶어 인식하도록 한다.
-E : 문자열에서 백슬래시와 이스케이프문자를 비활성화한다. (default)
--help : echo명령어 사용법을 출력한다.
$ echo "Hello World"
Hello World
#ss 네트워크 상태확인
socket statistics의 약자입니다.
네트워크 상태를 확인하는데 사용합니다.
- -a : 모든 포트 확인
- -t : TCP포트 확인
- -u : UDP포트 확인
- -l : LISTEN상태 포트확인
- -p : 프로세스 표시
- -n : 호스트, 포트, 사용자명을 숫자로 표시
#nc 서버의 포트 확인
netcat의 약자입니다.
TCP/UDP 프로토콜을 사용하는 네트워크 환경에서 상대 서버의 포트가 열렸는지 확인하거나
직접 서가 되어 원격 서버에서 접속이 가능한지 확인하는 용도로 사용합니다.
- -u : udp 연결
- -p : 소스 포트 지정
- -l : LISTEN모드로 포트 띄움
- -z : 단순 포트 스캔만 진행
- -v : 더 많은 정보 확인
$ nc [option] [host] [port]
#which, whereis, locate 명령어 위치 확인
which는 해당 명령어가 어느 경로에 있는지 위치를 찾아줍니다.-a : 검색 가능한 모든 경로에서 해당 명령어를 찾습니다.
$ which find
/bin/find
$ which -a find
/bin/find
/user/bin/find
where는 명령어의 실행파일위치, 소스위치, man페이지파일의 위치를 찾아줍니다.
$ whereis find
find: /bin/find /usr/bin/find /usr/share/man/man1/find.1.gz
locate는 다양한 패턴의 파일들을 찾고자 할 때 사용됩니다.
-n [숫자] : 특정패턴에 해당하는 파일들 중 지정한 개수만큼 검색합니다.
$ locate *.bnk
$ locate -n 10 *.bnk
#tail 파일의 마지막 부분 확인
파일의 마지막 부분을 보여줍니다.
tail과 상반되는 의미로 head 명령어도 있으며, 사용법은 같습니다.
- -n [숫자] : 파일의 마지막 라인부터 숫자만큼의 라인수를 보여줍니다.
- -n + [숫자] : 숫자로 지정한 라인부터 보여줍니다.
- -c [숫자] : 마지막 라인부터 숫자로 지정한 바이트 수만큼 보여줍니다.
- -f : Ctrl + c로 중단하기 전까지 지정한 파일의 마지막에 라인이 추가되면 계속 출력해서 보여줍니다.
# 파일의 마지막 라인부터 숫자만큼의 파일의 라인 수를 보여주기
$ tail -n {숫자} {파일경로}
# 숫자로 지정한 라인부터 보여주기
$ tail -n +{숫자} {파일경로}
# 파일의 마지막 라인부터 숫자로 지정한 바이트 수 만큼 보여주기
$ tail -c {숫자} {파일경로}
# Ctrl + C로 중단하기 전까지 지정한 파일의 마지막에 라인이 추가되면 계속 출력하기
$ tail -f {파일경로} :
#find 파일이나 디렉터리 찾기
파일이나 디렉터리를 찾는데 사용하는 명령어입니다.
# 확장자 명으로 찾기
$ find {디렉터리} -name '*.bak'
# 디렉터리를 지정해 찾기
$ find {디렉터리} -path '**/검색 시 사용하는 디렉터리명/**.*.js'
# 파일명을 패턴으로 찾기
$ find {디렉터리} -name '*패턴*'
# 파일명을 패턴으로 찾되 특정 경로는 제외하기
$ find {디렉터리} -name '*.py' -not -path '*/site-packates/*'
# 파일을 찾은 다음 명령어 실행하기
$ find {디렉터리} -name '*.ext' -exec wc -l {} \;
# 최근 7일간 수정된 파일을 찾고 삭제하기
$ find {디렉터리} -daystart -mtime -7 -delete
# 0바이트인 파일을 찾고 삭제하기
$ find {디렉터리} -type f -empty -delete
#ps 현재 실행 중인 프로세스 목록과 상태 확인
# 실행 중인 모든 프로세스를 보여주기
$ ps aux
# 실행 중인 모든 프로세스를 전체 커맨드를 포함해 보여주기
$ ps auxww
# 특정 문자열과 매칭되는 프로세스 찾기(grep은 바로 다음에 나옵니다)
$ ps aus | grep {패턴}
# 메모리 사용량에 따라 정렬하기
$ ps --sort size
#kill 프로세스 종료
프로세스를 종료시키는 명령어입니다.
# kill에서 사용할 수 있는 시그널 표시하기
$ kill -l
# 프로세스 죽이기 SIGTERM(terminate)
$ kill 프로세스ID
# 백그라운드 잡 종료시키기
$ kill {잡ID}
# 프로세스 강제 종료
$ kill -9 | KILL 프로세스ID
#alias 명령어 별칭 만들기
자주 사용하는 명령어가 길다면 alias를 사용해 별칭을 만들어 간단하게 사용할 수 있습니다.
# 모든 alias 표시하기
$ alias
# alias 만들기
# 예) alias ll="ls -al"
$ alias 단어="명령"
# cd ../..을 cd …으로 줄여 쓰기
# cd ../../../은 cd ….으로 가능
$ alias ...=../..
$ alias ....=../../..
$ alias .....=../../../..
$ alias ......=../../../../..
# alias 삭제하기
$ unalias 단어
#vi / vim 편집기 열기
기본적으로 리눅스에 설치되어 있는 텍스트에디터입니다.