본문 바로가기
다양한 기술들/Linux 관련

[Linux] 개요 / CLI 개념 및 명령어, 환경변수

by 예스p 2023. 6. 21.

리눅스 개발환경

윈도우 운영체제에서 벗어나 서버를 리눅스에서 운용해보자


리눅스란

  • UNIX 계열의 오픈 소스 운영 체제(OS) 
    * UNIX는 다중 사용자, 다중 작업을 지원하는 신뢰성 높은 운영체제로 리눅스는 UNIX의 무료버전이라고 볼 수 있다.
  • 다중 사용자 환경을 지원
    - 여러 사용자가 동시에 시스템에 로그인하여 작업할 수 있다. 
  • 네트워크 기능을 풍부하게 지원
    - 네트워크 프로토콜 및 서비스를 구축하고 관리하는 다양한 도구와 기능을 제공하여 서버 및 네트워크 환경에서 사용하기에 용이합니다.
  • 안정성과 보안에 중점을 두고 있다. 
  • 다양한 배포판 : Ubuntu, Red Hat, ... 등
    - 각 배포판은 리눅스 커널을 기반으로 하면서도 추가적인 패키지, 도구, 사용자 인터페이스 등을 포함하고 있어 사용자 요구에 맞게 선택하면 된다.
    * 리눅스 커널 : 하드웨어를 제어하고 응용 프로그램과의 상호작용을 제공하는 핵심역할

 

 

서버에 리눅스를 사용하는 이유

  • 비용절감
    - 오픈소스여서 무료이다. (레드헷 등의 배포판도 윈도우에 비해 비용이 적다)
  • 시스템 효율
    - 효율적인 시스템 운영으로 하드웨어 요구사항이 낮다
  • 보안
    - 관리자 이외의 접근이 제한된다
    - 윈도우와 달라 바이러스, 멀웨어의 공격이 적다
      (오픈소스라서 취약점이 빠르게 개선되기 때문)
  • 유연성
    - 오픈소스여서 운영체제를 수정하고 최적화 할 수 있다.

 

 

윈도우에서 리눅스 사용하기

  • 윈도우 PC에서 리눅스 기반 프로젝트를 개발할 수 있는 방법은 다음과 같다.
  • 가상 머신(VM) 사용
    - Oracle VirtualBox, VMware Workstation 등의 가상화 솔루션을 설치하여 윈도우에서 리눅스 개발 환경을 구축한다.
  • 듀얼 부팅(Dual Boot)
    - 하드 드라이브에 두 개의 운영 체제를 설치하여 부팅시 필요한 운영체제를 선택한다.
  • 원격 접속(Remote Access)
    - 리눅스 서버나 가상 머신에 원격으로 접속하여 개발하는 방법
    - SSH(Secure Shell) 또는 원격 데스크톱 프로토콜(Remote Desktop Protocol)을 사용
  • 컨테이너 기술(Containerization)
    - 윈도우에 도커(Docker)를 설치하고, 리눅스 기반의 컨테이너를 실행하여 개발 작업을 수행
    * 도커 : 애플리케이션과 그 실행에 필요한 종속성을 컨테이너로 패키징하여 이식성과 격리성을 제공하는 컨테이너화 플랫폼

 

 


명령줄 인터페이스

리눅스는 텍스트 기반의 운영체제로 명령줄 인터페이스(CLI)가 중요한 역할을 한다.

이에 CLI에 대해 톺아보기로 한다


 

CLI(Command-line Interface)

  • GUI(Graphical User Interface)는 직관적이라는 장점이 있지만 어플리케이션간의 입출력을 전달하거나 자동화하는 작업에는 적합하지 않다
    >> 리눅스 뿐만 아니라 윈도우 등에서도 개발에는 CLI가 많이 사용되는 이유
  • CLI는 터미널, 쉘, 콘솔 등과는 구분되는 개념이나 혼용해서 사용되곤 한다.
  • 종류
    - 리눅스 OS : Bash
    - 윈도우 OS : PowerShell

<< 쉘, 터미널, 콘솔, CLI 구분 >>

 

 

환경변수

  • 운영체제가 시스템 환경에서 사용하는 값들을 저장하는 변수
    변수값에 경로를 미리 세팅해서 언제든 가져다 쓸 수 있게 한다.
  • CLI에서 역할
    1. 실행 가능한 프로그램의 경로 지정한다.
       - javac, python 등의 프로그램 명령어를 전역에서 사용할 수 있게함
       - Path 변수에 저장한다.
    2. 설정값 전달
       - DB연결정보, API키와 같은 중요 정보를 환경변수에 저장해서 보안 강화한다
    3. 사용자별로 환경 설정을 구성
       - 사용자의 프로파일 파일에 환경변수를 설정한다
    4. 환경변수의 값에 따라 조건부 실행을 수행하도록 할 수 있다.
    5. 스크립트 실행환경을 구성할 수 있다
       - 출력로그, 디버그모드 등

 

 

프롬프트 구성

  • Bash
    사용자명 @ 호스트명 : 현재디렉토리 $
  • Git Bash
    사용자명 @ 호스트명  MINGW64  현재디렉토리 (깃브랜치)
    $
  • 사용자명 
    - 컴퓨터에 로그인한 사용자를 식별
    - 식별하는 이유
      1. 권한, 자원액세스에 차등을 둔다
      2. 로그를 통해 활동을 식별한다
  • 호스트명
    - 네트워크에서 컴퓨터를 식별하기 위한 이름
      * 프로그래밍에서 호스트는 대게 컴퓨터를 의미한다
    - cmd 창에서 hostname을 입력해서 확인할 수 있다.
    - 식별하는 이유
      1. 네트워크상의 각 컴퓨터를 식별하여 통신에 활용
      2. 프롬프트에 표기됨으로써 원격인지 로컬인지 구분이 가능하
      3. 여러 서버를 관리하는 경우 각 서버를 식별

 

 

CLI 기본조작

  • 단축키
    - tab : 자동완성
    - ctrl + c : 현재 프로세스를 중지시키고 프롬프트를 띄운다 (^c 와 동일)
  • 명령어 옵션
    '--help' : 해당 명령어의 사용법, 다양한 옵션들, 예제 등을 볼 수 있다.
  • 기호의 의미
    - ~ : 홈 디렉토리 (home/유저)
    - . : 현재 디렉토리
    - .. : 상위 디렉토리
    - - : 옵션이 1글자일 경우 사용(여러개의 옵션을 붙여서 쓸 수 있다 ex: -lSGr)
    - -- : 옵션이 두글자 이상인 경우(ex: --help)
    - ^ : ctrl키를 대체할 수 있는 문자(단축키를 명령어로 입력)
    - \ : 명령어가 다음줄과 이어질 때, 줄의 끝에 붙인다. (여러줄 명령어 작성, 뒤에 공백을 넣으면 안됨)
    - | : 첫번째 명령어의 출력을 두번째 명령어의 입력으로 전달
            '명령어1 | 명령어2'의 형태로 사용
    - "a:b" : a는 사용자이름, b는 비밀번호를 뜻함
  • 경로표기
    - 상대경로 : './' 로 시작되나 생략할 수 도 있다
    - 절대경로 : '/'로 시작된다.

 

 

 

 

 

 

 

 

 

 

댓글