[리눅스기초] 리눅스의 기본 환경과 CLI, 링크

2026. 9. 21. 20:29·리눅스

Chapter 01. 유닉스의 역사와 특징

리눅스

  • 거의 대부분 현재 표준으로 사용하고 있다.

 

유닉스의 탄생

  • AT&T와 다양한 대학
    • 운영체제 내에서 다수의 사용자가 다수의 작업을 수행할 수 있는 멀틱스 프로젝트를 수행했다.
    • 사실상 실패했고, 흐지부지되었다.
  • 켄 톰슨
    • 작업을 하다가 게임을 만든다.
    • Space Travel → 미니멀 버전 → 리눅스의 시초
    • 여러 가지 작업보다 한 가지 작업이라도 잘하자는 방향으로 만들어졌다.
    • → Unix
    • 성공을 해서 초기 컴퓨터에 탑재되고, 교육 및 연구 목적으로 사용되었다.
  • 초기 리눅스는 네트워크 기능이 부족했다.
    • 버클리 대학에서 보강하여 BSD가 나왔다.
  • AT&T
    • SYSTEM V로 명명
  • 썬 마이크로시스템즈
    • 솔라리스 시스템 발표
    • 현재는 오라클이 썬 마이크로시스템즈를 인수했다.
  • 애플이 넥스트사를 인수한다.
    • nextSTEP
    • 이 운영체제를 가져와서 독자적인 다윈(Darwin)이라는 운영체제를 만든다.
    • 이를 통해 mac OS X를 만들었다.
  • 오라클
    • 솔라리스라는 유닉스 플랫폼을 만들었다.

 

리눅스 배포판

  • 다양한 배포판이 있고, 직접 만들면 배포판이 된다.
  • 참고: https://ko.wikipedia.org/wiki/리눅스_배포판#
  • TOP 500 사이트: https://top500.org/statistics/list/
  • 오랫동안 리눅스가 점유율 100%이다.

 

RedHat 계열의 배포판

  • 엔터프라이즈 리눅스 점유율 1위다.
  • rpm / YUM / DNF (패키지 관리자)
  • 주로 기업용 서버 시장을 타겟으로 한다.
  • Fedora → CentOS Stream → RHEL → (CentOS, Rocky Linux)
  • Fedora에서 빠르게 업데이트하고 CentOS Stream에서 실험을 한다.
  • 기업용 RHEL에 배포한다.
  • CentOS
    • RHEL은 유료인데, 이것의 소스코드를 따서 똑같이 만든 게 CentOS이다.
    • 2014년에 CentOS를 인수한 후, 2020년에 업데이트까지 종료하여 이제는 쓰지 않는다.
    • 더 이상 지원하지 않는다.
  • CentOS의 지원이 종료된 후, 대안으로 개발된 것이 Rocky Linux이다.
    • CentOS의 창립자가 만든 것이다.
    • 마찬가지로 RHEL의 코드를 그대로 가져다가 만든 것이다.
    • RHEL과 100% 똑같으며, 이것으로 수업을 진행할 예정이다.
  • Alma Linux
    • 클로드에 좀 더 최적화되어 있다.
  • 아마존 리눅스, 오라클 리눅스
    • 역시 RHEL 계열이다.

 

Ubuntu

  • 기업에서도 쓰는 곳이 있긴 하지만 기업이 커지고 보안적인 이슈가 생기기 시작하면 보통 오라클이나 상용성이 높은 솔루션을 쓰고 싶어한다.
  • 이러한 것들은 우분투와 호환이 잘 안 된다. 결국 RHEL 계열을 써야 한다.

 

Debian 계열

  • dpkg / APT
  • Debian → Ubuntu
  • Debian은 안정성을 중시하고 커뮤니티가 크다.
  • Ubuntu는 인터페이스 등이 사용자 친화적이다.
    • 우분투는 설치하면 알아서 돌고 UI도 그렇고 사용자 친화적이다.
    • 레드헷 계열은 일일이 수동으로 설정해야 한다.

 

Slackware

  • pkgtool
  • Slackware → SUSE → openSUSE → SLES
  • openSUSE → SUSE의 커뮤니티 버전.
  • SUSE의 기업용 배포판이 SLES이다.

 

리눅스의 특징

  • 높은 이식성과 확장성
  • 안정성과 신뢰성
    • 메모리 보호 및 다중 작업 등 다양한 기능을 제공한다.
    • 여러 프로그램이 동시에 실행되어도 안정적으로 동작한다.
  • 다중 사용자 (매우 중요!)
    • 리눅스의 가장 큰 특징이다.
    • 한 대의 시스템에 동시에 여러 사용자가 접속할 수 있다.
    • 사용자별 권한 관리 및 데이터 관리
    • 사용자 그룹별 권한 관리 및 안정적 운영
  • 다중 작업
    • 여러 프로그램이 동시에 실행되어도 안정적이다.
  • 계층적 파일시스템
    • 파일과 디렉토리를 계층적으로 관리한다.

 

클라우드

  • 클라우드 컴퓨팅 환경에서 거의 대부분 리눅스로 되어 있다.
  • AWS, Azure 등 인프라의 핵심 운영체제가 리눅스다.
  • 도커 같은 컨테이너 기술에서도 리눅스를 활용하다. 쿠버네티스도 마찬가지다.
  • 서버리스 환경, 인공지능에서도 마찬가지다.

 

Chapter 02. 유닉스/리눅스 기본 환경

컴퓨터 주요 구성요소

  • 컴퓨터의 시스템 → 하드웨어, 소프트웨어
  • 리눅스는 이들을 효율적으로 관리하고 제어해준다.
  • 하드웨어
    • 물리적 장치 - CPU, 메모리, 키보드, 마우스 등
    • CPU - 컴퓨터 두뇌
    • RAM - 임시 저장 공간
    • 저장장치
    • IO - 사용자와 컴퓨터 간 상호작용을 돕는다.
  • 소프트웨어 - 하드웨어를 제어한다.
  • 운영체제 - 하드웨어와 소프트웨어 사이에 중계하는 역할을 한다.

 

하드웨어

  • 간단한 작동 순서
    1. 사용자가 프로그램을 실행한다.
    2. HDD에서 가져온다.
    3. CPU는 RAM이라는 작업대에 올려서 실행을 하고
    4. 그 결과물을 다시 CPU에게 주고, 그것을 사용자에게 돌려준다.
    5. 그러므로 메모리 용량이 중요하다.
    6. 리눅스가 디스크 용량의 일부를 RAM처럼 사용한다.(스왑)
  • RAM
    • 컴퓨터의 주기억장치
    • 휘발성 메모리
    • 빠른 접근속도
      • 디스크보다 빠르게 데이터에 접근할 수 있다.
      • Redis (인메모리 DB)
  • CPU
    • 컴퓨터의 두뇌 역할
    • 바이너리 형태로 저장을 한다.
    • 프로세스 아키텍처
      • CPU가 명령어를 처리하는 방식이다.
      • X86, ARM
      • X86 아키텍처
        • 16비트 프로세스 8086에서 유래한 CPU 아키텍처이다.
        • 개인 컴퓨터와 서버에서 널리 사용된다.
        • 복잡한 명령어 세트(CISC)
        • 높은 성능과 처리 능력 제공
        • 상대적으로 전력 소비가 많음
      • ARM
        • 단순하고 효율적인 명령어 세트(RISC)
        • 전력 소비가 적은 것이 특징이다.
        • 모바일기기나 임베디드 시스템에서 사용한다.
  • 입/출력 장치
    • 키보드, 마우스, 터치스크린, 마이크
    • 명령이나 데이터를 컴퓨터에 입력하는 장치이다.
    • 스피커 - 출력하는 장치
    • 와이파이 어댑터 - 네트워크 장치
    • 대부분의 리눅스는 입출력 장치를 파일로 추상화해서 관리한다.
    • 리눅스 철학 - 모든 것은 파일이다.
    • 추상화 - 복잡한 것을 단순한 것으로 접근한다.
    • 추상화된 인터페이스
  • 디스크
    • 파일, 디렉토리 등을 영구적으로 저장
    • 비휘발성 - 전원이 꺼져도 데이터가 유지된다.
    • 대용량이다. - 램과 비교가 안 되게 많은 데이터를 저장할 수 있다.
    • 상대적으로 느린 접근 속도가 특징이다.
    • 램에 비해서 느리다. → 외부적으로 나갔다 오므로 느릴 수밖에 없다.
    • HDD, SDD를 많이 사용한다.
    • HDD(하드디스크)
      • 비교적 저렴하고 느리다.
      • 플래터에 데이터를 저장한다.
    • SDD
      • 플래시 메모리(전기를 끊어도 데이터가 사라지지 않는 비휘발성 특징을 가진 반도체 메모리)
      • 내구성, 빠른 속도, 높은 가격, 충격에 강한다.
      • 저장 용량 비용이 높다.

 

리눅스 운영체제의 구성요소

  • 커널
    • 프로세스 관리(생성, 종료, 프로세스)
    • 가상 메모리 시스템 관리
    • 파일 시스템 관리
    • 네트워크 패킷 송수신 등 관리
    • 하드웨어와 소프트웨어의 중계자 역할이다.
    • 직접적으로 저장을 하는 것이 아니라 커널이 안전하게 접근하여 저장하게 해준다.
  • 쉘
    • 사용자와 커널 사이의 인터페이스를 담당하는 프로그램
    • 사용자의 명령어를 커널이 이해할 수 있게
    • 커널의 말을 사용자가 알아들을 수 있게
    • 명령어가 쉘에서 실행 (환경 변수 설정 등)
    • 쉘의 종류: Borun Shell과 Bash Shell을 기억하자
    • Borun Shell
      • 초창기의 쉘로 기능이 단순하다.
    • Bash Shell
      • 현재 대부분의 리눅스 시스템에서 사용되는 쉘이다.
  • 디렉토리
    • 파일, 그룹, 계층적 관리
    • VMCTL

  • 인터페이스
    • 사용자가 시스템과 상호작용
    • CLI → 터미널 (키보드)
    • GUI → 마우스 (일반 사용자)
  • 커널
    • 프로세스의 생성, 메모리 관리 등
    • 하드웨어를 사용자가 직접 하지 않고 커널이 해준다.
    • 하드웨어에 사용자가 절대 직접 접근할 수 없다. 컨널을 반드시 통해야 한다.
    • 하드웨어와 소트프웨어 간의 중계자 역할
  • 사용자 공간
    • 사용자가 직접 상호작용
    • 커널 공간보다 제한 내 권한
    • 일반 사용자의 프로그램이 실행되는 영역
  • 터미널 창 → 정확히는 터미널이 아니다.
    • 서버와 상호작용을 하게 해주는 인터페이스이다.
    • 터미널은 물리장치이므로 우리가 아는 터미널은 사실상 에뮬레이터이다.
    • kvm 장치 → 서버실에 꽂는다.
    • 서버실은 모니터, 마우스가 없다 → 서버에 접근을 하려면 마우스, 모니터가 필요 → 그게 터미널이다(kvm 장치) → 물리 터미널을 의미한다.
    • 다중 환경 작업 가능

 

CLI 구문

  • uname
    • 운영체제의 정보를 보여주는 명령어
    • FQDM
    • uname -r
    • uname -s
    • uname - s -r / uname -sr
  • cal → 현재 날짜
  • cal 9 2025 → 2025년 9월 값 나온다. → 9와 2025는 인수(argument)이다.
  • ls → list의 약자
    • ls /
    • /는 루트다.
    • d: 폴더다.
  • 컨트롤 + c: 동작중이 명령어를 종료하는 것
  • 컨트롤 + U: 커서 앞으로 지워짐
  • 컨트롤 + K: 커서 뒤로 지워짐
  • 컨트롤 + W: 단어로 지워짐
  • 컨트롤 + A: 맨 앞으로 간다
  • 컨트롤 + E: 맨 뒤로 간다.
  • 옵션 + 방향키: 단어씩 이동

 

메뉴얼 페이지

  • 리눅스에서 제공하는 사용 설명서. 대부분의 명령어가 다 들어있다.
  • man page → man (매우 중요)
    • man cd, man ls, …
    • 어떤 경우에는 인터넷 검색이 아니라 메뉴얼 페이지를 보면 편하다.
    • 또는 업무용이라서 클로드를 못 쓸 경우 사용한다.
    • 메뉴얼을 최대한 먼저 활용을 하자
    • 옵션 읽어보고 활용하자
      • ls → 현재는 자세히 보기, 숨김 기능이 있는지 알고, 그게 뭔지 기억이 안날 때 메뉴얼을 본다.
      • 나중에는 옵션 자체를 학습하려고 보게 된다.
      • /하고 검색어를 입력하면 나온다.
      • n을 누르면 검색 결과 중 다음 것, N은 이전 것
      • h를 누르면 헬프가 나온다.

 

디렉토리 및 파일 보기

  • 리눅스 디렉터리 구조
    • 각각의 디렉터리는 역할이나 설정 파일 등이 다르다.
    • 다 외우지 않는다.
    • 디렉터리 별로 하는 역할이 다르다. (중요)
    • /bin/ : 기본적인 명령어 저장 예) cd
    • /etc/ : 시스템 설정 파일들
    • /home/ : 일반 사용자들의 홈 디렉토리
      • 각각의 사용자들은 home 디렉토리 아래에 각 디렉토리가 있다.
      • 리눅스의 특징인 다중 사용자. 하나의 서버에 여러명이 들어오므로, 각각 관리해야 한다.
      • 사용자의 디렉터리는 홈 아래에 있다.
      • 사용자 추가시 홈 디렉토리도 추가된다.
    • /var/ : 시스템 운영 중에 크기가 변하는 파일들. 예)로그 파일
    • /temp/ : 임시 파일 저장. 시스템 재부팅 시 삭제된다.
  • pwd: print working directory, 현재 어디에 있는지 확인
  • ls → 대상이 없으므로 지금 위치한 곳 조회
  • ls /var/ → var 디렉토리 조회
  • ls -l, ls -a → a는 숨김 파일까지 보여줌, l은 권한 등 자세히 보기(long list)이다.
  • ls . → 현재 디렉토리
  • ls .. → 상위 디렉토리
  • ls -ld /home/ → 디렉토리 내부가 아니라 자체가 궁금할 때, d 옵션을 추가해야 디렉터리 자체를 조회한다.
  • ls -l /home/ → 디렉토리 내부가 궁금할 때
  • ls -R /etc/sysconfig/ → 내부가 복잡해서 일일히 조회하기 힘들 때 → 재귀적으로 조회 → R 옵션 추가
  • ls -F /etc/ → 파일 타입을 기호로 표시 → 파일 타입만 보고 싶어
    • /로 끝나면 디렉토리, 아무것도 없다면 일반 파일
    • @으로 끝나면 심볼릭 링크
  • 경로
    • / → 절대 경로는 루트부터 시작
    • .과 ..상대 경로는 자신의 위치에서 시작하는 경로
    • ..은 상위, .은 현재
    • pwd → 현재 위치를 절대 경로로 보여주는 것
    • cd → change directory, 디렉토리 이동
    • cd ~ → 사용자의 홈 디렉토리로 간다.
    • cd - → 이전 디렉토리로 이동
  • cat
    • 파일 전체 내용 확인
    • cat /etc/passwd
    • line number
  • more, less 파일 내용을 한 화면씩 끊어서 보기
    • more /etc/passwd
    • less /etc/passwd
    • cat, more, less
    • → 주로 less만 쓴다. 설정 파일 읽기 시 쓴다.
      • 보통 설정 파일이 길고 파일의 크기가 매우 크기 때문에 얼마나 될지 모르는 상황에서 사용한다.
    • cat은 대체로 안쓴다.
    • head → 문서의 처음만 본다. (위에 지정한 줄만 나온다.)
  • wc
    • 해당 문서에 몇 줄이 있는지 or 특정 단어의 위치를 알고 싶을 때
    • wc -l /etc/passwd
    • wc -w /etc/passwd
    • wc- c /etc/passwd

 

Chapter 04. 디렉토리 및 파일 내용 변경

  • touch
    • 파일 생성. 크기가 0인 빈 파일을 만든다.
    • touch fileB fileC fileD → 여러개 한꺼번에 만드는 것도 가능
  • mkdir
    • make directory
    • mkdir dirA
    • mkdir dirB dirC dirD → 한번에 여러 개도 가능한다.
    • 혹시라도 새로운 디렉토리 안에 또다시 새로운 디렉토리를 만든다면 -p 옵션을 붙인다.
  • cp
    • 파일 복사
    • cp 원본파일 복사파일명(혹은 디렉토리 경로)
    • cp fileA fileAA
    • cp fileA fileAA dirX → 두개 이상의 파일을 한번에 하나의 디렉토리 안으로 복사
    • 두번 똑같이 반복시 덮어쓰기가 된다. → -i 옵션을 통해서 오버라이드할지 물어보게 할 수 있다.(중요)
    • 디렉토리 복사 시 재귀적 복사 -r 옵션을 붙여야 한다.
  • mv
    • 파일 혹은 디렉토리를 이동시킨다.
    • 디렉토리 이름을 변경할 때도 활용한다.
  • rm
    • 파일을 삭제한다.
    • 파일 삭제는 되돌릴 수 없다.
    • -i 옵션을 추가하면 정말 삭제할 것인지 물어본다.
  • rmdir
    • 디렉터리를 삭제한다.
    • rmdir 디렉터리명은 내부가 빈 디렉터리일 때만 가능하다.
    • -r 옵션을 붙여야 재귀적으로 내부까지 삭제하여 내부 데이터가 있는 디렉터리 삭제가 가능하다.
    • rmdir -rf → 강제로 모든 것이 삭제되므로 위험하다. 조심하자.
  • 링크
    • cp와는 조금 다르다.
    • 하드 링크와 소프트링크
    • 아이노드
      • i-node
      • 리눅스 파일시스템에서 파일이나 디렉터리에 대한 모든 메타데이터를 저장하는 데이터 구조이다.
      • 파일의 내용이 저장되는 것은 아니다.
      • 예를 들어 서점에 가서 책을 찾으려면 책의 이름과 저자, 출판 날짜가 필요하다. 이를 검색하면 책의 위치정보가 나온다. 이는 책의 위치정보만 있을 뿐 그 자체는 책 내용이 들어있지 않다.
      • 아이노드도 마찬가지다.
      • 아이노드가 저장하는 것 → 파일 유형, 파일 권한, 타임스탬프, 마지막 저장 시간 등 파일에 대한 정보를 저장한다. 파일의 데이터가 아니다. + 파일 이름을 저장하지 않는다.
      • 예) docs.txt → inode(크기, 소유주, 데이터 블록 포인터(디스크에서 데이터 위치))
      • 디스크가 있다면 보통 블록 단위로 데이터가 저장이 된다. 파일이 통짜로 들어가는게 아니고 블록 단위로 나뉘어서 저장 → 이 블록의 위치정보를 아이노드가 저장한다.
      • (참고) 포렌식 → 경로만 지울 뿐 디스크에 그 파일이 남아있는 것이다.
    • 하드 링크는 특정 파일이 디스크에 저장되어 있는 위치가 동일한 곳을 가르키는 포인터이다.
      • 비유하자면 책갈피가 여러개인 것이다.
      • 원본파일 A가 있고, A에 대해 바로가기 버튼을 만든 것이다.
      • A도 같은 파일, B도 같은 파일을 가리키고 있다.
      • 동일한 아이노드를 가리키고 있다.
      • A를 삭제 시 디스크 원본이 아니라 링크(경로)가 삭제되므로 B로 원본 파일을 볼 수 있다.
      • 디렉토리에는 하드링크를 못한다. 심볼릭 링크는 디렉토리에 대해서도 된다.
      • 파일을 삭제해도 경로만 없어져서 B는 접근이 된다.
    • 심볼릭 링크는 특정 파일 또는 디렉토리를 가리키고 있는 포인터이다.
      • 원본 파일을 가리키는 표지판 같은 것이다.
      • A로 소프트 파일 B을 만든다.
      • B를 실행하면 원본 자체인 A로 간다.
      • 원본이 사라지면 더 이상 갈 수 없다.
      • 오리지널이 삭제 시 기능을 못한다.
      • 파일이나 디렉토리를 가리킨다.
      • 자체 아이노드가 아니라 새로운 아이노드를 생성한다. 같은 데이터를 가리키는게 아니기 때문이다.
      • ln —help
    • ln 원본파일 링크파일 → 하드링크
    • 같은 원본 파일을 보고 있기 때문에 나오는 값이 똑같다.
    • rm fileA를 해서 오리지널 파일을 삭제해도 경로만 사라진 것이므로 결과는 동일하게 나온다.
    • ln -s 원본파일 링크파일 → 심볼릭 링크
    • 삭제 시 파일이 깨져서 접근이 안된다.
    • 다시 fileB를 만들면 돌아온다.
    • 하드링크는 직접, 심볼릭은 간접이다.
    • 하드링크는 원본을 삭제해도 접근 가능, 심볼릭은 링크가 깨져서 접근이 안된다.
    • 하드링크는 같은 파일 시스템 내에서만 작동을 하고, 소프트링크는 다른 것도 된다.
    • 디렉터리 → 하드링크는 안되지만 소프트링크는 가능하다.
    • 하드링크는 i-node를 공유하기 때문에 아무리 파일의 위치를 바꿔도, 디스크에 저장된 원본은 달라지지 않으므로 파일에 대한 아무런 변화가 없다.
    • 심볼릭링크는 "파일"이 아니라 "경로"를 저장한다. 심볼릭 링크를 상대 경로로 한다면 파일의 위차가 바뀜에 따라 참조하는 파일이 달라지게 되고, 절대 경로로 한다면 파일 자체를 이동해도 원본의 절대경로가 변하지 않는다. 다만 원본의 위치가 바뀐다면 당연히 참조하는 파일이 달라지므로 깨질 수 있게 된다.

'리눅스' 카테고리의 다른 글

[리눅스 기초] 파일 및 디렉토리 검색, vi 편집기, 퍼미션, 쉘 명령어와 프로그래밍  (0) 2026.09.22
'리눅스' 카테고리의 다른 글
  • [리눅스 기초] 파일 및 디렉토리 검색, vi 편집기, 퍼미션, 쉘 명령어와 프로그래밍
youjeong_choi
youjeong_choi
  • youjeong_choi
    youjeong
    youjeong_choi
  • 전체
    오늘
    어제
    • 분류 전체보기 (119) N
      • HTML, CSS (7)
      • JavaScript (19)
        • 모던 자바스크립트 딥다이브 (4)
      • ReactJS (17)
      • TIL (17)
      • WIL (17)
      • 알고리즘 (17)
      • 네트워크 (13) N
      • Vue (4)
      • 재료 과학 (2)
      • 정보보안 (3) N
      • 리눅스 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정보보안
    알고리즘 문제
    항해99주특기리액트
    항해99리액트
    토스뱅크사이버보안엔지니어부트캠프
    선언적 함수
    모던자바스크립트딥다이브
    멀티캠퍼스부트캠프
    부트캠프
    리눅스기초
    리액트
    알고리즘
    네트워크
    익명 함수
    자바스크립트
    항해99주특기
    항해99
    혼공스
    파이썬
    항해99 주특기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
youjeong_choi
[리눅스기초] 리눅스의 기본 환경과 CLI, 링크
상단으로

티스토리툴바