리눅스 명령어 학습 및 실습
업데이트:
- 연구주제 : 리눅스 명령어 학습 및 실습
- 연구목적 : 리눅스 개발 환경에서의 숙련도 향상
- 연구일시 : 2020년 1월 2일 09:00~17:00
- 연구자 : 이재환 ljh951103@naver.com
- 연구장비 : HP EliteDesk 800 G4 TWR, WSL, AWS LightSail
- 관련연구 : AWS, Linux, Unix, Ubuntu, OS
서론
터미널이란 사전적으로 끝을 의미한다. 이 의미를 컴퓨터에 빗대어 보면 데이터를 송신하는 출발점, 또는 데이터를 수신하는 목적지가 될 수 잇다. 따라서 리눅스에서 사용하는 터미널은 명령을 내려 컴퓨터를 제어하는 곳이다.
리눅스 명령어는 굉장히 방대하게 퍼져있다. 그럼 현업에서 실제로 자주 사용하는 명령어들을 실제로 익하고 실습하여 보자.
본론
passwd [옵션] [계정]
- 사용자 계정의 패스워드를 등록하거나 변경하는 경우 이용하는 명령어이다.
- 슈퍼 유저는 다른 유저의 패스워드도 변경 가능하다.
옵션
- -S : 계정의 상태를 표시한다.(PS : 정상, NP : 패스워드가 없음, LK : Lock상태 혹은 NP 상태)
- -d : 계정의 패스워드를 삭제한다. 패스워드 없이 로그인이 가능해진다.
- -l : 계정을 Lock 상태로 변경한다.
- -u : 계정의 Lock 상태를 해제한다.
ls [옵션] [파일명]
- 현재 디렉토리 내의 파일과 디렉토리 정보를 출력한다.
- 윈도우 cmd 창의 ‘dir’과 같은 명령이다.
- [옵션]에는 -를 붙여 아래와 같은 옵션을 부여 할 수 있으며 두 개 이상의 옵션도 가능하다.
- [파일명]에는 파일명이나 디렉토리명을 적을 수 있다
옵션
- -a : 디렉토리에 있는 모든 파일들(.으로 시작하는 파일 포함)을 출력한다.
- -i : 파일의 아이노드(inode, 색인번호) 번호를 출력한다.
- -h : 파일 크기를 사람이 보기 쉬운 단위로 출력한다.(k : 킬로바이트, m : 메가바이트)
- -l : 파일의 다양한 정보(상세정보)를 함께 출력한다.(소유자, 권한, 크기, 날짜)
- -m : 파일을 쉼표로 구분하여 가로로 출력한다.
- -s : kb 단위의 파일 크기를 출력한다.
- -t : 최근 생성된 시간 순으로 파일을 출력한다.
- -F : 파일 종류 별로 파일 끝에 특수 문자 표시.(일반파일 : 표시없음, 실행파일 : *, 디렉토리 : /, 심볼링크 : @, FIFO파일 : |, 소켓파일 : =)
- -R : 지정한 디렉토리 아래에 있는 하위 디렉토리와 파일들을 포함하여 출력한다.
- -S : 파일 크키가 큰 순서대로 출력한다.
- -help : 도움말을 출력한다.
cd [디렉토리명]
- Change Directory.
- 디렉토리를 이동할 때 사용한다.
옵션
- cd [엔터], cd ~, cd ~/, cd $HOME : 사용자의 홈 디렉토리로 이동한다.
- cd . : 현재 디렉토리로 이동한다.
- cd / : 최상위 디렉토리로 이동한다.
- cd $변수명 : 변수에 지정된 경로로 이동한다.
- cd ~계정명 : 입력한 사용자의 홈디렉토리로 이동한다.
- cd - : 이전 경로로 이동한다.
cd [옵션] [원본파일명] [대상파일명/디렉토리명]
- 윈도우 cmd의 ‘copy’ 명령과 같다.
- 하나 이상의 [원본파일]을 [대상파일]이나 [디렉토리]로 복사한다.
- [원본파일명]에는 하나 이상의 파일을 지정할 수 있다.
옵션
- -i : 파일 복사 시, 동일한 파일명이 있을 경우 사용자에게 덮어 쓸 것인지 물어본다.
- -f : 동일한 파일명이 있을 경우에도 강제로 지우고 복사한다.
- -p : 원본 파일 소유주, 그룹, 권한, 시간 정보들이 그대로 보존되어 복사한다.
- -r : [원본파일명]이 경로일 경우, 그 경로에 있는 모든 하위 디렉토리들을 포함하여 모두 복사한다. 일반 파일일 경우는 그냥 복사한다.
- -u : 복사 대상이 이미 존재하며 파일의 날짜가 같거나 더 최신이면 복사하지 않는다.
mkdir [옵션] [파일명]
- 새로운 디렉토리를 생성한다.
- 읽기 권한(Write Permission)이 허용되어야만 디렉토리를 생성할 수 있다.
옵션
- -m : 디렉토리의 권한을 지정한다.(기본값 : 755) ex) mkdir -m 700 dir -> dir 디렉토리의 권한을 700으로 설정하여 생성한다.
- -p : 생성하려는 디렉토리의 상위 디렉토리가 없는 경우 상위 디렉토리까지 같이 만든다.
rmdir [옵션] [파일명]
- 빈 디렉토리를 제거한다.
- 읽기 권한(Write Permission)이 허용되어야만 디렉토리를 삭제할 수 있다.
옵션
- -p : 상위 경로도 삭제한다.
rm [옵션] [파일이름]
- Remove.
- 파일이나 디렉토리를 삭제할 때 사용한다.
옵션
- -i : 파일이나 디렉토리가 삭제될 때마다 확인한다.(y : 삭제, n : 취소)
- -f : 사용자에게 확인하지 않고 삭제한다.
- -v : 각각의 파일 지우는 정보를 자세하게 모두 보여준다.
- -r : 해당 디렉토리의 하위 디렉토리까지 모두 삭제
*** r 을 제외하고는 디렉토리를 제외한 파일만 삭제가 가능하다.
mv [옵션] [원본파일] [대상파일]
- 파일의 이름이나 위치를 변경할 때 사용한다.
옵션
- -f : 이동할 위치에 파일 이름이 겹치면 강제로 이동한다.
- -i : 이동할 위치에 파일 이름이 겹치면 사용자에게 물어본다.
find [디렉토리] [옵션]
- 파일을 이름, 수정 날짜, 소유주, 허가 등을 기준으로 검색하게 해준다.
옵션
- -empty : 비어있는 파일을 찾는다.
- -user [사용자명] : 지정한 사용자가 소유하고 있는 파일을 찾는다.
- -group [그룹명] : 지정한 그룹이 소유하고 있는 파일을 찾는다.
- -nouser : 소유주가 없는 파일을 찾는다(사용자 계정을 삭제했을 경우 사용자가 생성한 파일들을 남기는 경우가 있다).
- -nogroup : 소유그룹이 없는 파일을 검색한다.
- -name [파일명] : 지정한 패턴을 갖는 파일을 찾는다(파일명 또는 확장명을 기준으로 검색한다).
- -newer [파일명] : [파일명]보다 최근에 생성된 파일을 찾는다.
- -anewer [파일명] : [파일명]보다 최근에 읽기(접근)가 수행된 파일을 찾는다.
- -cnewer [파일명] : [파일명]보다 최근에 상태가 변경(수정)된 파일을 찾는다.
- -perm [권한] : 권한과 일치하는 파일을 찾는다.
- -type [파일타입] : [파일타입]에 맞는 파일을 찾는다. [파일타입]은 아래와 같다.
- d : 디렉토리(Directory)
- c : 캐릭터 특수 파일(Character Device)
- f : 일반파일(File)
- b : 블록 특수 파일(Block Device)
- l : 심볼릭 링크(Link)
- p : 파이프(Pipe)
- s : 소켓(Socket)
- -atime [+n/-n/n] : 최근 n일 이전에 access된 파일을 찾는다(Access Time).
- +n : n일 전부터 접근하지 않은 파일
- -n : n일 동안 접근한 파일
- n : n일 전에 접근한 파일
- -ctime [+n/-n/n] : 파일의 퍼미션(권한)을 마지막으로 변경한 파일을 찾는다(Changed Time).
- +n : n일 전부터 퍼미션을 변경하지 않은 파일
- -n : n일 동안 퍼미션을 변경한 파일
- n : n일 전에 퍼미션을 변경한 파일
- -mtime [+n/-n/n] : data를 마지막으로 수정한 파일을 찾는다.(Modified Time).
- +n : n일 전부터 수정하지 않은 파일
- -n : n일 동안 수정한 파일
- n : n일 전에 수정한 파일
- -size : 저장한 파일 크기로 파일을 찾는다.
- -depth : 별도로 지정할 필요가 없으며 서브 디렉토리까지 찾는 옵션이다.
- -mount : 다른 파일 시스템의 디렉토리는 검색하지 않는다.
- -prune : 서브 디렉토리로 내려가지 않고 현재 디렉토리에서만 검색한다.
- -samefile [파일명] : 링크된 파일을 찾는다(하드 링크).
- -lname “*이름” : 링크된 파일을 찾는다(심볼릭 링크).
- -inum [inode번호] : inode 번호로 파일을 찾는다.
head [-count] [파일이름], tail [-count] [파일이름]
- head [-count] [파일이름] : 첫 번째 라인부터 number 라인까지 출력한다. 설정하지 않을 경우 10번째 라인까지 출력한다.
- tail [-count] [파일이름] : 마지막 라인부터 number 라인까지 출력한다. 설정하지 않을 경우 10번째 라인까지 출력한다.
- tail -f [파일이름] : 실시간으로 파일에 추가되는 내용을 확인한다. 보통 log파일을 관찰할 때 자주 사용한다.
cat [옵션] [파일이름]
- 파일의 내용을 볼 수 있는 명령어이다.
- cat > [파일이름] 형태로 명령어를 작성했을 경우, 파일 생성 및 데이터 입력도 가능하다.
*** 파일 저장 : Ctrl + d, 파일 종료 : Ctrl + z - cat [파일명] | more : 엔터키를 입력할 때마다 한 줄씩 내려가면서 확인이 가능하다.
- cat [파일명] | less : 화살표 위, 아래키로 페이지 올림, 내림이 가능하다.
- more과 less 상태에서 q를 누르면 종료가 된다.
옵션
- -n : 파일을 출력할 때, 라인에 번호를 붙여 출력한다.
- -b : 공백 외의 글자가 있는 라인에 번호를 붙여 출력한다.
gzip [옵션] [파일명]
- 리눅스에 설치되어 있는 기본 압축 프로그램이다. *** gzip 명령어를 찾을 수 없다고 나온다면, ‘apt-get install gzip’ 으로 설치하면 된다.
- 리눅스에서 사용하는 압축 프로그램이다.
- 속도나 압축률 면에서 상당히 좋은 프로그램이다.
- 파일을 압축할 경우 사용하는 명령어이다.
- 압축된 파일은 .gz라는 확장자를 갖는다.
- 성공적으로 압축이 수행되었을 경우, 압축을 수행한 원본 파일은 삭제된다.
옵션
- -d : 압축을 해제한다(Decompress).
- -f : 압축을 하거나 해제할 때, 같은 이름의 파일이 존재할 경우 덮어쓰기 한다.
- -l : 압축 파일의 정보를 보여준다.
- -r : 압축 파일의 디렉토리까지 압축을 수행한다.
tar [옵션] [파일명]
- 여러 파일을 하나로 묶을 경우 사용되는 명령어이다.
- 확장자는 .tar 이다.
옵션
- -c : 파일을 tar로 묶어 생성한다.
- -x : 기존의 tar파일의 압축을 해제할 경우 사용한다.
- -v : 압축할 때나 압축을 해제할 때, 과정을 화면으로 출력한다.
- -f : 파일 이름을 지정한다.
- -C : 파일 경로를 지정한다.
- -z : gzip으로 압축하거나 해제한다.
kill [시그널 번호/시그널 이름] [프로세스]
- 특정 프로세스에 특정한 Signal을 보내는 명령어이다.
- 보통 실행중인 프로세스를 종료시키고자 할 때 사용한다.
- 가끔 중지시킬 수 없는 프로세스가 발생하는 경우가 있는데, 이때 강제 종료 시키기 위해 kill 명령어를 사용한다.
옵션
- -i : 프로세스 종료 전 사용자에게 물어본다.
- -v : 진행 현황을 확인 할 수 있다.
- -w : 지정한 프로세스들이 모두 종료 될 때까지 종료 시도를 한다.
su [-] [사용자ID]
- 다른 사용자 계정으로 서브 쉘을 생성하는 명령어이다.
- 현재 계정을 로그아웃 하지 않고 다른 계정으로 전환 할 때 사용한다.
- su는 ‘Super User’가 아니며 ‘Substitute User’를 의미한다.
- su만 입력했을 경우, su root와 같다.
옵션
- -c : 쉘을 실행하지 않고 주어진 명령만 수행한다.
- -, -l, -login : 지정한 사용자의 환경변수를 적용해 로그인한다.
- -s : 지정된 쉘로 로그인한다.
shutdown [옵션] 시간 [메시지]
- halt, init과 함께 시스템을 종료하는 명령어 중 하나이다.
- [메시지]를 통해 현재 접속 중인 모든 사용자에게 시스템이 종료된다는 메시지를 보낼 수 있다.
옵션
- -r : 시스템 종료 후 재 부팅한다.
- -h : shutdown이 완료된 후 시스템을 종료한다.
- -c : 진행 중인 shutdown 명령어를 취소한다.
- -k : 경고 메시지만 출력하고 실제로는 shutdown 하지 않는다(‘Just Kidding’의 의미).
결론
리눅스의 방대한 명령어 가운데 주요 명령어 또한 굉장히 많다. 모든 명령어를 실습해보지는 못했지만 대략적인 의미는 많이 배우게되었다. 손이 머리보다 반응할 때 까지 열심히 해보아야겠다!
향후과제
리눅스를 활용한 개발을 할 때, 적극적으로 다양한 명령어를 활용하여 개발을 진행하겠다.
참고자료
https://pamooochim.blogspot.com/2015/10/blog-post.html https://bddung.tistory.com/2 http://www.rcy.co.kr/xeb/tool/10477
Writer: Jae-Hwan Lee
댓글남기기