리눅스의 특징은 다음과 같이 정리할 수 있다.

  1. 리눅스는 공개 소프트웨어이며 무료로 사용할 수 있다.
  2. 유닉스와 완벽한 호환성을 유지한다.
  3. 서버용 운영체제로 많이 사용된다.
  4. 편리한 GUI 환경을 제공한다.

PART 3. 리눅스의 구조

  • 커널
    : 커널은 리눅스의 핵심으로 프로세스 관리 , 메모리 관리 , 파일 시스템 관리, 장치 관리컴퓨터의 모든 자원을 초기화하고 제어하는 기능을 수행한다.


  • : 리눅스의 사용자 인터페이스로서 사용자와 커널 사이의 중간자 역할을 담당하는 특별한 프로그램이다.
    셸은사용자가 입력한 명령을 해석하여 커널에 넘겨준다. 그러면 커널이 명령의 수행 결과를 돌려주고
    셸은 다시 사용자가 이해할 수 있는 형태로 바꿔 출력한다.
    리눅스는 배시셸(Bash Shell)을 기본으로 사용한다.

  • 응용프로그램
    : 리눅스는 각종 프로그래밍 개발 도구, 문서 편집 도구, 네트워크 관련 도구 등 매우 다양한 응용 프로그램을 제공한다.


PART 4. 리눅스 명령어 사용법

  • exit 명령을 사용한 접속 해제
user1@myubuntu:~$
  • Ctrl + D를 사용한 접속 해제
user1@myubuntu:~$ ^d    -> ctrl + D

PART 5. 명령의 구조와 사용

  • 리눅스에서 사용하는 명령의 기본 구조는 다음과 같다.
    - 명령의 구조
    • 형식 : 명령 [옵션][인자]
    • 명령 : 리눅스를 사용하기 위해 입력하는 명령에는 date, man, ls, cp, mv 등 수백 가지가 있다.
    • 옵션 : 옵션을 사용하여 명령의 세부 기능을 선택할 수 있다. 리눅스의 기능을 풍부하게 하는 중요한 특징으로, 명령에 따라 옵션이 있는 경우도 있고 없는 경우도 있다. 옵션은 - 나 -- 기호로 시작하며 영문 소문자나 대문자로 구성된다. 명령에 따라 어떤 옵션이 있고 그 기능이 무엇인지는 해당 명령의 사용법을 참조해야햔다.
    • 인자 : 인자는 명령으로 전달되는 값이며 주로 파일명이나 디렉터리명이 사용된다. 명령에 따라 인자가 없을수도 있고, 각 명령에 필요한 인자도 각기 다르므로 사용법을 참조해야 한다.
  • 명령만 사용한 경우
    - 다음은 ls 명령어만 사용한 경우다.
user1@myubuntu:~$ ls
-> 출력 : Applications               aiXcoder
Desktop                    dev
Documents                  java_error_in_studio.hprof
Downloads                  package-lock.json
Library                    package.json
Movies                     scikit_learn_data
Music                      test.mv.db
Pictures                   test.trace.db
Public                     workspace

각자 컴퓨터의 저장 된 디렉토리가 다르므로 출력되는 디렉토리들이 다를 수 있다.

  • 명령과 옵션을 사용한 경우
    - 다음은 ls 명령과 함께 -a 라는 옵션을 사용한 경우다.
user1@myubuntu:~$ ls -a
  • 명령과 인자를 사용한 경우
    - 다음은 ls 명령과 함께 /tmp 라는 인자를 사용한 경우다. 명령의 출력 결과는 다를 수 있다.
user1@myubuntu:~$ ls /tmp
  • 명령, 옵션, 인자를 사용한 경우
    - 다음은 ls 명령과 함께 -a라는 옵션과 /tmp 라는 인자를 사용한 경우다.
user1@myubuntu:~$ ls -a /tmp

PART 6. 기본 명령의 사용법

리눅스의 기초 명령 사용법을 연습해보자.

  • date 명령어
    - date 명령은 다음과 같이 현재 날짜와 시간을 출력한다.
    • 기능 : 날짜와 시간을 출력한다.
user1@myubuntu:~$ date
2023년 6월 21일 수요일 20시 14분 33초 KST
  • clear 명령어
    - 다음과 같이 clear 명령을 입력하면 현재 보이는 화면이 깨끗이 지워지고 커서가 화면의 왼쪽 상단으로 이동한다. clear 명령에는 옵션이나 인자가 없다.
    • 기능 : 화면을 지운다.
user1@myubuntu:~$ clear
  • man 명령어
    - man 명령은 리눅스가 제공하는 각종 명령의 사용법을 자세히 보여준다. 명령의 옵션이나 인자 등 명령 사용법을 자세히 알고 싶을 때 매우 유용하다.
    • 기능 : 명령 사용 방법을 화면에 출력한다.
user1@myubuntu:~$ man

<참고>

  • 이러한 방법으로 명령을 할 경우 clear에 대한 명령의 자세한 사용법을 알 수 있다.
user1@myubuntu:~$ man clear
  • passwd 명령어
    - 리눅스에 접속하려면 로그인 ID와 비밀번호가 필요하다. 로그인 ID는 사용자가 변경할 수 없으며 시스템 관리 권한을 가진 특별한 사용자 (root)만 변경할 수 있다. 이와 달리 비밀번호는 필요에 따라 직접 변경할 수 있는데, 이때 사용하는 명령이 바로 passwd이다.
    • 기능 : 사용자 계정의 비밀번호를 변경한다.
user1@myubuntu:~$ passwd

PART 7. 리눅스의 파일과 디렉터리

01. 파일의 종류

리눅스에서 파일은 사용 목적에 따라 일반 파일, 디렉터리, 심볼릭 링크, 장치 파일로 구분할 수 있다.

  • 일반파일
    - 일반 파일은 데이터를 저정하는데 주로 사용된다. 각종 텍스트 파일, 실행 파일, 이미지 파일등 리눅스에서 사용하는 대부분의 파일은 일반 파일에 해당한다. 텍스트 파일은 파일 내용을 확인하는 명령으로 내용 확인이 가능하며, 문서 편집기를 사용하여 내용을 보거나 편집할 수 있다.
  • 디렉터리
    - 리눅스에서는 디렉터리도 파일로 취급한다. 디렉터리 파일에는 해당 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 정보가 저장된다.
  • 심볼릭 링크
    - 심볼릭 링크는 원본 파일을 대신하도록 원본 파일을 다른 파일 명으로 지정한 것으로, 윈도의 바로가기 파일과 비슷하다고 보면 된다.
  • 장치 파일
    - 리눅스에서는 하드디스크나 키보드 같은 각종 장치도 파일로 취급한다. 장치파일은 리눅스 시스템에 부착된 장치들을 관리하기 위한 특수 파일이다. 리눅스 시스템에서 각종 장치 관리하기 위해 시스템 관리자는 해당 장치 파일에 접근해야 한다. 대부분의 장치 파일은 /dev 디렉터리 아래에 위치한다.
    리눅스 명령 중에 파일의 종류를 확인하는 file 이라는 명령이 있다.
user1@myubuntu:~$ file .profile

02. 디렉터리의 계층 구조

윈도에서 파일을 폴더로 구분하여 관리하는 것처럼 리눅스에서도 수많은 파일을 관리하기 위해 디렉터리를 사용한다. 리눅스에서는 파일을 호율적으로 관리하기 위해 디렉터리를 계층적으로 구성하는데 이를 트리 구조 라고 한다. 리눅스에서도 모든 디렉터리의 출발점은 루트(root) 디렉터리이다. 루트 디렉터리는 / 로 표시한다.

<그림>은 리눅스 디렉터리 계층 구조의 일부를 나타낸 것이다. 최상단에 루트 디렉터리 (/)가 잇고, 그 아래에 etc, usr, home, tmp 같은 디렉터리가 있다. 이 디렉터리들 아래에는 다시 디렉터리나 파일이 있다. 이렇게 디렉터리 아래에 있는 디렉터리를 하위 디렉터리 또는 서브 디렉터리 라고 부르는데 여기서는 서브 디렉터리라고 부를 것이다.
예를 들어서 <그림>에서 lib 디렉터리는 usr 디렉터리의 서브 디렉터리이고, usr 디렉터리는 루트 디렉터리의 서브 디렉터리다.

02-1. 디렉터리의 주요 기능

디렉터리기능
dev장치파일이 담긴 디렉터리이다.
home사용자 홈 디렉터리가 생성되는 디렉터리이다.
mediaDVD/CD나 USB 같은 외부 장치를 연결(마운트라고 함)하는 디렉터리다.
opt추가 패키지가 설치되는 디렉터리다.
rootroot 계정의 홈 디렉터리다. 루트(/) 디렉터리와 다른 것이므로 혼동하지 않도록 한다.
sys리눅스 커널과 관련된 파일이 있는 디렉터리다.
usr기본 실행 파일과 라이브러리 파일, 헤더 파일등 많은 파일이 있다. 참고로 usr는 'Unix System Resource'의 약자이다.
boot부팅에 필요한 커널 파일을 가지고 있다.
etc리눅스 설정을 위한 각종 파일을 가지고 있다.
lost+found파일 시스템에 문제가 발생하여 복구할 경우 , 문제가 되는 파일이 저장되는 디렉터리로 보통은 비어있다.
mnt파일 시스템을 임시로 마운트하는 디렉터리다.
proc프로세스 정보등 커널 관련 정보가 저장되는 디렉터리다.
run실행 중인 서비스와 관련된 파일이 저장 된다.
srvFTP나 Web 등 시스템에서 제공하는 서비스의 데이터가 저장된다.
tmp시스템 사용 중에 발생하는 임시 데이터가 저장된다. 이 디렉터리에 있는 파일은 재시작 하면 모두 삭제된다.
var시스템 운영 중에 발생하는 데이터나 로그등 내용이 자주 바뀌는 파일이 주로 저장된다.

작업 디렉터리

리눅스에 로그인 하여 사용하다보면 디렉터리를 이동하게 된다. 이때 현재 사용 중인 디렉터리를 작업 디렉터리 또는 현재 디렉터리라고 한다. 이는 .(마침표)로 표시하며, 작업 디렉터리의 위치는 pwd 명령으로 확인할 수 있다.

user1@myubuntu:~$ pwd
/Users/user1

홈 디렉토리

홈 디렉터리는 각 사용자에게 할당된 디렉터리로 처음 사용자 계정을 만들 때 지정된다. 사용자는 자신의 홈 디렉터리 아래에 파일이나 서브 디렉터리를 생성하며 작업할 수 있다. 홈 디렉터리는 ~(물결표) 표시한다. ex) user1 계정의 홈 디렉터리를 나타내려면 '~user1'이라고 하면 된다.

03. 절대 경로명과 상대 경로명

리눅스 파일 시스템에서 디렉터리 계층 구조에 있는 특정 파일이나 디렉터리의 위치를 나타내는 것을 경로명(path name)이라고 한다.

경로명에서 각 경로를 구분하는 구분자로는 /를 사용한다.

경로명에서 가장 앞에 있는 /는 루트 디렉터리를 뜻하지만 경로명 중간에 있는 /는 구분자다.

ex) /usr/bin/ls에서 맨 앞의 /는 루트 디렉터리를 의미하고, 중간에 있는 / 두 개는 디렉터리명과 파일명을 구분하는 구분자다.

경로명에는 절대 경로명과 상대 경로명이 있다.

절대 경로명은 항상 루트 디렉터리부터 시작하고 상대 경로명은 현재 디렉터리를 기준으로 시작한다.

따라서 상대 경로명은 현재 어느 디렉터리에서 작업 중이냐에 따라 매번 달라질 수 있다.


절대 경로명

  • 반드시 /로 시작한다.
  • 루트 디렉터리부터 시작하여 특정 파일이나 디렉터리의 위치에 이르기까지 중간에 있는 모든 디렉터리의 이름을 표시한다.
  • 특정 위치를 가리키는 절대 경로명은 항상 동일하다.

상대 경로명

  • / 이외의 문자로 시작한다.
  • 현재 디렉터리를 기준으로 서브 디렉터리로 내려가면 그냥 서브 디렉터리명으로 시작한다.
  • 현재 디렉터리를 기준으로 상위 디렉터리로 가려면 .. (마침표 두 개)로 시작한다.
  • 상대 경로명은 현재 디렉터리가 어디냐에 따라 달라진다.

Q. 다음 표의 디렉터리 계층 구조를 기준으로 다음 경로명을 알아보자 현재 디렉터리는 user1 이라고 가정한다.

디렉터리/파일절대 경로명상대 경로명
/cd /cd ..
homecd /homecd ../home
tmpcd /tmpcd ../tmp
libcd /libcd ../lib
lscat /usr/bin/lscat ../usr/bin/ls

04. 파일과 디렉터리 이름의 규칙

파일과 디렉터리 이름을 정하는 규칙과 예

규칙

  • 파일과 디렉터리의 이름에는 /를 사용할 수 없다. /는 경로명에서 구분자로 사용하기 때문이다.
  • 파일과 디렉터리의 이름에는 알파벳, 숫자, 하이픈(-), 언더스코어(_), 마침표(.)를 사용할 수 있다.
  • 파일과 디렉터리 이름에는 /를 제외한 특수문자를 사용할 수 있으나 >, |, :, &와 공백문자의 사용은 피하는 것이 좋다.
  • 파일과 디렉터리의 이름의 영문은 대문자와 소문자를 구별하여 다른 글자로 취급한다.
  • 파일과 디렉터리의 이름이 .(마침표)로 시작하면 숨김 파일로 간주한다.
  • 파일 이름에는 널 문자("\0")를 사용하지 않는다.

ex)

  • 좋은이름 : game.txt, hello.c, test, sample11
  • 나쁜이름 : &game, *dir, my home.game\
  • 사용할 수 없는 이름 : myhome\, \test, bad\game

05. 디렉터리 관련 명령어

5.1. 현재 디렉터리 확인

  • 현재 디렉터리를 확인하는 명령어pwd(print working directory)이다.
    -pwd
    • 기능 : 현재 디렉터리의 위치를 확인한다. 즉 현재 디렉터리의 절대경로를 확인한다.
    • user1 계정으로 로그인 하면 현재 디렉터리는 user1 계정의 홈 디렉터리가 된다.
      user1@myubuntu:~$ pw  
      /home/user1

5.2. 디렉터리 이동

  • 리눅스에서는 다른 사용자의 다른 사용자의 접근을 막아놓은 디렉터리를 제외하고는 어느 디렉터리든 이동할 수 있다.
    파일이나 서브 디렉터리를 생성하는 것은 홈 디렉터리나 권한이 부여된 디렉터리에서만 가능하다.
    현재 디렉터리에서 다른 디렉터리로 이동할 때cd(Change Directory) 명령어를 사용한다.
    • cd
      • 기능 : 지정한 디렉터리로 이동한다.
      • 형식 : cd [디렉터리]
      • 사용 예 : cd, cd /tmp, cd 다운로드

설명 : cd 명령과 함께 이동하고자 하는 목적지 디렉터리를 저장하면 해당 디렉터리로 이동한다.

이동할 디렉터리의 경로명은 절대 경로명이나 상대 경로명을 사용 가능하다.

다음의 예로는 /tmp 디렉터리로 이동한 것으로 절대 경로명을 사용했다.
이동한 뒤 현재 디렉터리가 바뀌었는지 pwd 명령으로 확인한다.

user1@myubuntu:~$ cd /tmp
user1@myubuntu:~/tmp$ pwd
/tmp

5.3. 디렉터리 내용 확인

  • 디렉터리에 있는 파일이나 서브 디렉터리 등 디렉터리의 내용을 보는 명령어는
    ls(list) 명령이다.
    • ls
      - 기능 : 디렉터리의 내용을 출력한다.
      - 형식 : ls [옵션][디렉터리(파일)]
      - 옵션
      -a : 숨김 파일을 포함하여 모든 파일의 목록을 출력한다.
      -d : 디렉터리 자체의 정보를 출력한다.
      -i : 첫 번째 행에 inode 번호를 출력한다.
      -l : 파일의 상세 정보를 출력한다.
      -A : .(마침표)와 ..(마침표 두 개)를 제외한 모든 파일 목록을 출력한다.
      -F : 파일의 종류를 표시한다.(*: 실행파일, /: 디렉터리, @: 심볼릭링크)
      -L : 심볼릭 링크 파일의 경우 원본 파일의 정보를 출력한다.
      -R : 하위 디렉터리의 목록까지 출력한다.
      - 사용 예) : ls, ls-F, ls-al /tmp
      #### 옵션이나 디렉터리를 지정하지 않고 ls 명령을 사용하면 현재 디릭터리의 내용을 출력한다.
      ```
      user1@myubuntu:~$ ls
      공개 다운로드 문서 바탕화면 비디오 사진 음악 템플릿 
      ```

      5.3.1. 숨김 파일 확인하기 : -a 옵션

      - 리눅스에서는 파일명이나 디렉터리명이 .(마침표)로 시작하면 숨김 파일이 된다.
      이 숨김 파일은 ls 명령ㅇ만 사용해서는 보이지 않는다. 
      숨김 파일을 확인하려면 -a(all) 옵션을 지정해야한다. user1 계정의 홈 디렉터리에 어떤 숨김 파일이     있는지 확인 해보도록 하자.
      
      
      ➜  ~ ls -a
      .                                          .m2                                        .zshrc.swm
      ..                                         .matplotlib                                .zshrc.swn
      .CFUserTextEncoding                        .node_repl_history                         .zshrc.swo
      .	DS_Store                                  .npm                                       .zshrc.swp
      .TranslationPlugin                         .oh-my-zsh                                 Applications
      .Trash                                     .pyenv                                     Desktop
      .android                                   .python_history                            Documents
      .bash_profile                              .sonarlint                                 Downloads
      .bash_profile .txt                         .viminfo                                   Library
      .config                                    .vscode                                    Movies
      .emulator_console_auth_token               .vscode-cli                                Music
      .gitconfig                                 .zcompdump-Bin's MacBook Air-5.9           Pictures
      .gradle                                    .zcompdump-정우빈의 MacBook Air-5.8.1      Public
      .h2.server.properties                      .zcompdump-정우빈의 MacBook Air-5.9        Virtual Machines.localized
      .ideavimrc                                 .zprofile.save                             aiXcoder
      .ipython                                   .zsh_history                               dev
      .jenv                                      .zsh_sessions                              test.mv.db
      .keras                                     .zshenv.swp                                workspace
      .lesshst                                   .zshrc
      .local                                     .zshrc.save 
          ```
      위의 예시를 보면 .bashrc를 비롯해 숨김 파일이 많다는 것을 알 수 있다.
      대부분 사용자 계정의 환경 설정 파일이나 응용 프로그램의 환경 설정 파일이다.
      현재 디렉터리를 나타내는 .(마침표)와 상위 디렉터리를 나타내는 ..(마침표 두 개)도 확인할 수 있다.
      이 숨김 파일일들은 홈 디렉터리가 생성될 때 자동으로 만들어지며 리눅스 종류에 따라 다를 수 있다.
      (방금 보여진 결과 화면은 본인의 MAC환경이다.)

5.3.2 파일의 종류 표시하기 : -F 옵션

  • 앞에서 출력 된 ls 명령이나 ls -a 명령의 결과를 보면 어느 것이 파일이고 어느 것이 디렉터리인지 구분하기 어렵다.
    GUI에서 아이콘을 사용하여 파일의 종류를 구분하는 것처럼 ls 명령도 -F 옵션을 사용하면 파일의 종류를 구분하는 기호가 표시된다. 파일명 뒤에 /가 붙으면 디렉터리, @가 붙으면 심볼릭 링크, *가 붙으면 실행 파일을 의미하고, 아무 표시도 없으면 일반 파일이다. 다음 예를 보면 홈 디렉터리에 기본적으로 들어 있는 파일이 모두 디렉터리임을 알 수 있다.
    (방금 보여진 결과 화면은 본인의 MAC환경이다.)
➜  ~ ls -f
.                                          Desktop                                    dev
..                                         Library                                    .zshrc.swp
.TranslationPlugin                         .matplotlib                                .keras
.zshrc.save                                .lesshst                                   .npm
.config                                    .zcompdump-정우빈의 MacBook Air-5.8.1      Documents
Music                                      .emulator_console_auth_token               .pyenv
.bash_profile .txt                         test.mv.db                                 .vscode
.zcompdump-정우빈의 MacBook Air-5.9        aiXcoder                                   .m2
.DS_Store                                  .node_repl_history                         .bash_profile
.zcompdump-Bin's MacBook Air-5.9           .android                                   .oh-my-zsh
.CFUserTextEncoding                        Public                                     .zshrc.swm
.vscode-cli                                .ideavimrc                                 Downloads
.zshrc.swo                                 Virtual Machines.localized                 .python_history
.zshrc                                     .zshenv.swp                                .gitconfig
.local                                     .sonarlint                                 .zprofile.save
Pictures                                   Movies                                     .viminfo
workspace                                  Applications                               .zsh_sessions
.zshrc.swn                                 .jenv                                      .h2.server.properties
.zsh_history                               .gradle
.ipython                                   .Trash

옵션은 여러 개를 연결하여 사용할 수도 있다. 옵션을 연결할 때는 '-'뒤에 옵션만 나열하면 된다. 숨김 파일을 보여주는 -a 옵션과 파일의 종류를 보여주는 -F 옵션을 연결하여 사용하면 다음과 같이 숨김 파일의 종류도 알 수 있는데 .(마침표)와 ..(마침표 두 개)에도 /가 붙어 있다.
(방금 보여진 결과 화면은 본인의 MAC환경이다.)

➜  ~ ls -af
.                                          Pictures                                   Public                                     .pyenv
..                                         workspace                                  .ideavimrc                                 .vscode
.TranslationPlugin                         .zshrc.swn                                 Virtual Machines.localized                 .m2
.zshrc.save                                .zsh_history                               .zshenv.swp                                .bash_profile
.config                                    .ipython                                   .sonarlint                                 .oh-my-zsh
Music                                      Desktop                                    Movies                                     .zshrc.swm
.bash_profile .txt                         Library                                    Applications                               Downloads
.zcompdump-정우빈의 MacBook Air-5.9        .matplotlib                                .jenv                                      .python_history
.DS_Store                                  .lesshst                                   .gradle                                    .gitconfig
.zcompdump-Bin's MacBook Air-5.9           .zcompdump-정우빈의 MacBook Air-5.8.1      .Trash                                     .zprofile.save
.CFUserTextEncoding                        .emulator_console_auth_token               dev                                        .viminfo
.vscode-cli                                test.mv.db                                 .zshrc.swp                                 .zsh_sessions
.zshrc.swo                                 aiXcoder                                   .keras                                     .h2.server.properties
.zshrc                                     .node_repl_history                         .npm
.local                                     .android                                   Documents

5.3.3. 지정한 디렉터리의 내용 출력하기

  • ls 명령에서는 옵션 외에 인자로 다른 디렉터리를 지정할 수 있다. 이 경우 해당 디렉터리로 이동하지 않고도 디렉터리의 내용을 확인할 수 있다. 다음 예에서는 /tmp 디렉터리의 내용을 확인해보자.
➜  ~ ls /tmp
/tmp
➜  ~ ls /tmp
/tmp

출력되는 결과 값은 개인 환경에 따라 다를 수 있다.

profile
Engineer

0개의 댓글