[Linux] 리눅스 기본 명령어 총정리

2020. 8. 27. 04:26Programming/Linux

리눅스의 명령어

  • 내장 명령어 : 기본적으로 셸에서 제공하는 명령어
  • 외부 명령어(유틸리티) : 사용자의 편의를 위해 시스템에서 제공하는 외부 프로그램으로, 일반적으로 셸이 외부에 별도의 실행파일로 제공된 프로그램의 내용을 메모리로 로드해서 수행
  • 리눅스는 본(bourne)셸과 C셸(csh)의 장점만 가져온 bash(Bourne Again Shell) 사용



기본 명령어 사용

  • 날짜 및 시간 확인

    $ date
    # 2020년 4월 2일 목요일 오후 00시 00분 00초
  • 시스템 정보 확인

    $ hostname
    # eunjeong
    $ uname
    $ uname -a
  • 사용자 정보 확인

    $ whoami
    # eunjeong
    $ who
  • 패스워드 변경

    $ passwd
  • 화면 정리

    $ clear
  • 온라인 매뉴얼

    $ man ls    # ls에 대한 설명 보기
    $ man 3 printf    # C언어 printf에 대한 설명 보기
  • 명령어에 대한 간단한 설명

    $ whatis ls
    # ls - list directory contents



사용자 계정 관리

  • 슈퍼유저(superuser) : 시스템을 관리할 수 있는 사용자. 계정명은 root.

  • 슈퍼유저로 로그인

    $ su root
  • 사용자 추가/삭제

    $ useradd [옵션] [사용자명]    # 사용자 추가
    $ passwd [사용자명]        # 비밀번호 변경
    $ userdel [사용자명]    # 사용자 삭제
  • 그룹 추가/삭제

    $ groupadd [그룹명]    # 가용 id 중 500 이상 가장 낮은 id로 그룹 생성
                          # 기존에 있던 그룹의 마지막 번호 다음 번호를 gid로 할당
    $ groupadd -g [gid] [그룹명]    # 특정 gid로 그룹 생성
    $ groupadd -r [그룹명]    # 시스템 그룹. 0~499 중 사용 가능한 가장 높은 id 할당
    $ groupdel [그룹명]    # 그룹 삭제



파일과 디렉터리

  1. 파일의 종류

    • 일반 파일 : 데이터를 가지고 있으면서 디스크에 저장된다. ex) 텍스트 파일, 이진 파일
    • 디렉터리 또는 폴더 : 파일을 계층적으로 조직화하는 데 사용되는 일종의 특수 파일로, 디렉터리 내에 파일이나 서브디렉터리 등이 존재
    • 장치 파일 : 물리적인 장치에 대한 내부 표현으로, 키보드(stdin), 모니터(stdout), 프린터 등도 파일처럼 사용
    • 심볼릭 링크 파일 : 어떤 파일을 가리키는 또 하나의 경로명을 저장하는 파일

 

  1. 디렉터리 명령어 기초

    • 현재 작업 디렉터리의 절대 경로 출력

      $ pwd    # print working directory
    • 디렉터리 이동

      $ cd [경로명]    # change directory

      경로를 지정하지 않으면 홈 디렉터리로 이동하며, 경로명에 .. 을 입력하면 뒤로 가기

    • 명령어의 경로 확인

      $ which [명령어]

      명령어의 절대 경로를 보여준다. ex) /bin/ls

    • 디렉터리 리스트

      $ ls (혹은 $ dir) [-aslFR] 디렉터리* 파일*

      -a : 숨겨진 파일을 포함하여 모든 파일을 리스트한다. (all)
      -s : 파일의 크기를 K 바이트 단위로 출력한다. (size)
      -l : 파일의 상세 정보를 출력한다. (long)
      -F : 파일의 종류를 표시하여 출력한다. (*: 실행파일, /:디렉터리, @:심볼릭링크)
      -R : 모든 하위 디렉터리들을 리스트한다. (Recursive)

    • 디렉터리 생성

      $ mkdir [-p] 디렉터리*

      -p : 필요한 경우에 중간 디렉터리를 자동으로 만들어준다.

    • 빈 디렉터리 삭제

      $ rmdir 디렉터리*    # 빈 디렉터리만 삭제 가능



파일 내용 출력

  1. 간단한 파일 만들기

    • gedit : GNOME이 제공하는 GUI 기반 문서 편집기

      $ gedit [파일이름] &
    • cat

      $ cat > 파일명

      파일이 없으면 새로 만들어 표준 입력 내용을 모두 파일에 저장한다. ^D로 종료.

    • touch

      $ touch 파일명

      파일 크기가 0인 이름만 있는 빈 파일을 만들어준다.

 

  1. 파일 내용 보기

    • 파일 내용 보기

      $ cat [-n] 파일*

      파일(들)의 내용을 그대로 화면에 출력한다. 파일을 지정하지 않으면 표준입력 내용을 그대로 화면에 출력한다.

      -n : 몇 줄을 보여줄건지 설정

    • 페이지 단위로 파일 내용 보기

      $ more 파일+

      파일(들)의 내용을 페이지 단위로 화면에 출력한다.

    • 파일 앞부분, 뒷부분 보기

      $ head [-n] 파일*
      $ tail [-n] 파일*
    • 단어 세기

      $ wc [-lwc] 파일*        # word count

      파일에 저장된 줄(-l), 단어(-w), 문자(-c)의 개수를 세서 출력한다.
      파일을 지정하지 않으면 표준 입력 내용을 대상으로 한다.



파일 관리

  1. 파일 이동 및 이름 변경

    $ mv [-i] 파일1 파일2    # 파일1의 이름을 파일2로 변경
    $ mv 파일 디렉터리    # 파일을 디렉터리로 이동
    $ mv 파일1 ... 파일n 디렉터리 # 파일1~n을 디렉터리로 이동
    $ mv 디렉터리1 디렉터리2    # 디렉터리1의 이름을 디렉터리2로 변경

    -i : 대화형 옵션. 이동 대상 파일과 이름이 같은 파일이 존재하면 덮어쓰기를 안내해준다.

 

  1. 파일 삭제

    $ rm [-i] 파일+
    $ rm [-ri] 디렉터리

    -r : 디렉터리 아래의 모든 것을 삭제한다. (recursion)



링크

  • 기존 파일에 대한 또 하나의 새로운 이름

    $ ln [-s] 파일1 파일2    # 파일1에 대한 새로운 이름으로 파일2를 만들어준다.
    $ ln [-s] 파일1 디렉터리    # 파일1에 대한 링크를 디렉터리에 같은 이름으로 만든다.

    -s : 심볼릭 링크 옵션

 

  1. inode
    • 리눅스(유닉스) 파일 시스템에서 사용되는 자료 구조. 모든 파일과 디렉터리는 inode를 한개씩 가지고 있으며, 여기에는 해당 파일의 허가권, 소유권, 파일의 실제 위치 등 중요한 정보들이 들어있다.
    • inode가 모여있는 공간을 inode block이라고 하며, inode block이 차지하는 공간은 매우 작으며, 실제 데이터가 저장되는 block이 디스크의 대부분을 차지한다.

 

  1. 링크의 종류
    • 하드 링크 : 기존 파일에 대한 새로운 이름으로, 실제로 기존 파일과 동일한 inode를 직접적으로 가리켜 구현한다. 따라서 원본 파일이 사라지더라도 데이터만 살아있다면 원본 파일에 접근이 가능하다.
    • 심볼릭 링크(소프트 링크) : 실제 파일의 경로명을 저장하고 있는 일종의 특수 파일로, 이 경로명이 다른 파일에 대한 간접적인 포인터 역할을 한다. 특정 데이터에 접근할 때, 심볼릭 링크를 통해 접근할 경우 다시 원본 파일을 가리키게 되므로 원본 파일이 사라질 경우 해당 데이터에 접근이 불가능하다.



접근 권한 및 파일 속성

권한 파일 디렉터리
r 파일에 대한 읽기 권한 디렉터리 내에 있는 파일 읽을 수 있는 권한
w 파일에 대한 쓰기 권한 디렉터리 내에 파일을 생성하거나 삭제할 수 있는 권한
x 파일에 대한 실행 권한 디렉터리 내로 탐색을 위해 이동할 수 있는 권한
  • 소유자(owner) / 그룹(group) / 기타(others)로 구분하여 관리
    ex) rwx r-x r-x : 순서대로 소유자 권한, 그룹의 권한, 기타 사용자 권한

 

  1. 접근 권한 변경

    $ chmod [-R] [접근권한] 파일 혹은 디렉터리

    -R : 지적된 디렉터리 아래의 모든 파일과 하위 디렉터리에 대해서도 접근권한 변경

 

  1. 접근권한 표현

    • 8진수 : 권한이 있으면 1, 없으면 0으로 표시해 숫자로 나타낸다.
      ex) 777 - rwxrwxrwx, 700 - rwx------, 644 - rw-r--r--
    • 기호 : 사용자범위 [u|g|o|a]+ 연산자 [+|-|=] 권한 [r|w|x]+
      ex) chmod g+w,o+rw file.txt
      : 해당 파일의 그룹에는 쓰기, 기타 사용자에게는 읽고 쓰는 권한을 부여

 

  1. 파일 속성 변경

    • 소유자 변경

      $ su    # 주로 슈퍼유저 권한을 요구한다.
      $ chown 사용자 파일    # change owner
      $ chown [-R] 사용자 디렉터리

      -R : 디렉터리 아래의 모든 파일과 하위 디렉터리에 대해서 소유자를 변경한다.

    • 그룹 변경

      $ chgrp 그룹 파일
      $ chgrp [-R] 그룹 디렉터리
    • 최종 수정 시간 변경

      $ touch 파일

      파일의 최종 사용 시간 및 최종 수정 시간을 현재 시간으로 변경한다.