[WEB #10] 리눅스(Linux)와 터미널(Terminal)을 알면 OS를 지배하지

Kayoung Kim·2021년 7월 30일
0

Web Development

목록 보기
11/18
post-thumbnail

리눅스(Linux)와 터미널(Terminal)은 현대 개발자에게 필수품이다. 왜냐하면, 우리가 정성껏 개발한 프로그램이 배포되고 동작하는 환경이 바로 Linux OS가 설치된 서버고, Linux 서버에 명령어를 전달하는 수단이 바로 Terminal이기 때문!

리눅스(Linux)

  • 리눅스 토발즈(Linus Benedict Tovalds)가 개발한 Unix 기반 운영체제
  • GNU(GNU's Not Unix, 그누)
    ⇒ 자선단체 FSF(Free Software Foundation)에서 설립한
    ⇒ 유료인 유닉스에 반대, 누구나 자유롭게 사용할 수 있는 환경을 만들고자 했으나(편집기 emacs, 최적화 컴파일러 GCC, 쉘 Bash, 압축프로그램 GZip 등), 가장 중요한 커널이 빠져있었다.
  • 이후 오픈 소스 프로젝트인 Linux, Git을 최초로 개발했고, 이는 오픈 소스 커뮤니티에 크게 기여했다.
  • 구글에서 배포하는 안드로이드 역시 리눅스의 한 갈래다.
  • CLI(Command Line Interface) 기반이었고, 사용자들을 위해 GUI(Graphic User Interface) 기능이 추가 되었다.

리눅스를 쓰는 이유

  • 다양한 이유에서 서버는 linux를 기반으로 운영되고 있다.
    • 안정성 (ex. 블루스크린 ⇒ 서버 중단)
    • 유연성 : 오픈소스로 사용자가 소스코드를 비교적 쉽게 변경 가능
    • 무료: 오픈소스 활성화 ⇒ 풍부한 생태계 🎉

리눅스의 활용

  • 안드로이드 기반 스마트폰, 임베디드 시스템(구글 네스트, 삼성 TV, 테슬라 자동차 등)
  • 🚨 서버(로컬 서버, AWS 등에 설치된 인스턴스 등)에 설치된 리눅스 환경을 사용할 수 있다!
    예를 들어, 우리가 만든 프로젝트를 AWS EC2 등을 통해 배포하려고 하는데 해당 서버에는 순수한 우분투 외에는 아무 것도 깔려 있지 않은 상태. 만약 git을 GUI를 통해서만 사용할 줄 안다면 여러가지 프로그램과 환경설정, 그 프로그램들의 확장 프로그램을 모두 설치한 후에야 사용 가능하다.

Linux 핵심 개념

FHS(Filesystem Hierarchy Standard)

  • 리눅스는 트리(tree) 구조를 갖고 있다.

Root : FHS의 최상위 경로로 / 기호로 접근할 수 있다. (=윈도우의 폴더(folder) 개념)

  • 시작점인 root 디렉토리 안에 여러 하위 디렉토리들이 있고 각 하위 디렉토리들안에 또 하위 디렉토리 들이 있는 식이다. 그리고 각 디렉토리들은 slash (/) 로 구분한다.

Home directory(~)

  • 유저의 공간(바탕화면). 가장 빈번하게 사용하게 되는 경로.
  • Home 디렉토리 이외의 다른 디렉토리 들은 주로 system directory 라고 하는데, 즉 리눅스의 운영과 관리에 관련한 파일들이 존재하는 디렉토리다. - ~ 기호로 곧바로 접근할 수 있다.

Path directory

  • / : root 디렉토리
  • ~ : home 디렉토리
  • 절대 경로(Absolute path) : 절대적 경로. 경로를 표현하는 방식이 root 디렉토리 부터 시작한다는 점에서 "완전한"의 의미에 더욱 가까움. 내 위치에 상관 없이 어디에서든 동일한 경로 (ex. /home/eun/bin)
  • 상대 경로(Relative path) : '.' 현재 자신의 위치를 기반으로 움직이는 경로. (ex. cd ..)
    - . : 현재 경로
    - .. : 상위 경로(디렉토리 바로 전 디렉토리)

Configs

  • 리눅스에는 설정을 주로 파일을 통해서 한다. 그리고 여러 config file, 즉 여러 설정 파일들이 있다.
  • 그 중 가장 중요한 설정 파일이 바로 shell 설정 파일이다. 각 shell 마다 고유 설정 파일이 있다.
  • Bash는 .bashrc 라는 설정파일을 사용하고 zsh는 .zshrc 라는 설정 파일을 사용한다.
  • Shell 설정 파일을 비롯한 많은 설정 파일들이 대부분 유저의 home 디렉토리에 있다. Zsh 설정 파일도 마찬가지 이다. 하지만 ls 명령어를 사용하면 .zshrc 파일이 보이질 않는다. 그 이유는 .zshrc 파일은 숨겨져 있는 hidden file이기 때문이다. .zshrc 파일 이름이 . 으로 시작하는것이 보일 것이다. 이렇게 . 으로 시작하는 파일이나 디렉토리는 자동으로 숨겨지게 된다. 그리고 이러한 파일을 "dot file" 이라고 한다.
    ⇒ dot file을 보고 싶다면, ls 명령어에 a 옵션을 주어야 한다. 여기서 a는 all 의 약자로, 숨김파일까지 다 나열하라는 뜻이다.

cf. 많이 사용하는 명령어

  • cd: change directory 폴더 이동 cd (경로) → . .. /usr
  • ls: list segments 현재 경로 내 파일 목록 출력 ls -al
  • pwd: print working directory 현재 경로 출력
  • mkdir/rmdir: make directory 디렉토리 생성 / 제거
  • rm/remove: 파일 / 디렉토리 제거 rm -rf
  • cp/copy: 파일 / 디렉토리 복사
  • mv/move: 파일 / 디렉토리 이동
  • cat/concatenate: 터미널에 파일 내용 출력
  • touch: 파일 생성 및 날짜정보 변경 touch readme.md
  • chmod/change mode: 파일/디렉토리 권한 설정 chmod u+x readme.md

리눅스 명령어를 사용한 기본적인 동작 실습

  1. 터미널에서 현재 경로 확인 후 Desktop(바탕화면)으로 이동
pwd
ls
cd Desktop
ls
  1. 폴더 생성 후 폴더 내부에 readme.md, move 디렉토리 생성
mkdir wecode # 폴더 생성
ls # 폴더 생성 확인
cd wecode # 폴더 이동
touch readme.md # readme.md 생성
ls # 파일 생성 확인
mkdir move #폴더 생성
ls # 폴더 생성 확인
  1. vi에디터로 내용 작성 후 저장
vi readme.md
i #insert -> 입력 모드 전환
내용 입력 후 ESC
:wq #저장 후 종료
  1. README.md 복사 후, 복사 된 파일 move 디렉토리로 이동
cd readme.md readme2.md
ls
mv readme2.md ./move
cd move
ls

cp (원본 파일) (대상 파일)
mv (이동할 파일) (경로)

  1. move 폴더 및 파일 삭제
cd ..
rm -rf move
ls

rm -r : Recursively remove a directory and all its subdirectories
rm -rf : Forcibly remove a directory, without prompting for confirmation or showing error messages

0개의 댓글