리눅스 명령어 학습 및 실습

업데이트:

  • 연구주제 : 리눅스 명령어 학습 및 실습
  • 연구목적 : 리눅스 개발 환경에서의 숙련도 향상
  • 연구일시 : 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

댓글남기기