[GIT] 01. POSIX

msriver·2020년 5월 14일
0

GIT

목록 보기
1/3

(Juhasz Imre 님의 사진, 출처: Pexels)

GIT을 배우기 전 POSIX 강좌를 먼저 들었다. 이 페이지는 생활코딩의 egoing님 강좌를 듣고 정리한 페이지이다.


- POSIX란?

Portable Operating System Interface의 약자.
서로 다른 운영체제를 같은 방법으로 조작할 수 있도록 만들어진 표준이다.
POSIX를 준수하는 운영체제로는 UNIX, MacOS가 있으며 Linux는 100%는 아니지만 거의 호환된다고 볼 수 있다.
Windows는 적용이 안된다. 따로 CMD나 PowerShell을 사용하고 있기 때문이다.


- GUI vs CLI

• GUI(Graphic User Interface) : 마우스를 이용해 버튼이나 아이콘을 눌러 컴퓨터를 조작하는 방식이다.
• CLI(Command Line Interface) : 명령어를 이용해 컴퓨터와 대화하듯 조작/제어하는 방식

편리한 GUI를 두고 왜 CLI를 사용하는가?
=>GUI는 직관적인 아이콘을 누름으로써 사용이 쉽지만 CLI는 어려운 반면 익숙해진다면 GUI보다 더욱 강력한 제어를 할 수 있다. 특히 시간의 순서에 따라 명령어들을 실행할 수 있다는 점.


- 실습환경 구축

나는 윈도우환경이므로 POSIX를 실습하기 위해선 따로 환경을 구축해주어야 한다.
Linux, MacOS등의 사용자들은 자체적으로 제공하는 터미널등을 사용하면 된다.

Windows, Android, IOS 환경에서 실습하기 위한 방법은 크게 두 가지가 있다.

1) Emulator 설치

  • 사용자가 작성한 POSIX 명령어를 Emulator가 각 운영체제에 맞게 번역(?)을 해주어 전달한다.
  • Cygwin이라는 유명한 에뮬레이터가 있긴 하나 나는 GIT BASH를 사용하여 진행 했다. => 구글에 GIT 검색후 설치

2) 원격 POSIX 서버를 구축하고 Secure Shell(SSH)를 이용하여 원격제어


- 강의의 목표

어떠한 시스템에서든지 가장 기초적이며 중요한 것중 하나는 DATA를 다루는 것이다.
이 DATA는 전통적으로 "파일" 이라는 형태로 존재하고 파일들을 분류하여 효과적으로 다루기 위해 폴더(Directory)가 있다.

  • POSIX를 이용해 이 파일과 폴더들을 제어하도록 CRUD를 익힌다.


- 디렉토리의 기본적인 사용법

1) 내가 지금 어디 있는가 파악하기

pwd명령어 (Print working directory) = pwd를 쳤을때 나오는 경로가 Home 이다. = 물결표시 (~)

  • 가장 중요한 첫번째 할일이다. GUI환경에선(e.g.윈도우 탐색기) 무의식적으로 알고 있다. 하지만 CLI에서는 명시적으로 알아봐야한다.
  • 최상위 디렉토리는 / 이다. Root directory 이다.
  • 현재경로 파악은 rm등 명령어 실행시 작업하는 기준이 현재 디렉토리이므로 위치를 정확히 파악해야한다.

2) 디렉토리 변경(이동)

  • cd명령어 (change directory) => cd ~ , cd / , cd ../ , cd .. 등등

3) 현재 디렉토리에 어떤 파일들, 폴더들이 있는가?

  • ls 명령어 => ls -l, ls -a, ls -al 등등
    • ls -s : long listing format, 자세히 출력해줌. rwx등은 권한을 나타내는데 이 앞에 d가 붙어있으면 폴더, -이면 파일로 구분
    • POSIX 시스템에선 파일이나 폴더이름 앞에 .이 붙어 있으면 숨김설정이 되있는 것이다.
    • POSIX 시스템에서 도움말을 볼땐 --help를 입력. (man [명령어] 로 할 수도 있음)
    • ls -a : 감춘항목들까지 다 보여준다.
    • ls -a -l = ls -la = ls -al

4) 폴더 만들기(생성) => mkdir(Make Directory) => mkdir [폴더이름]

  1. mkdir posix 를 입력하여 posix 폴더를 현재경로에 만들어보자
  2. cd posix 를 입력하여 생성한 폴더로 이동한다. 이때 posix 앞엔 현재디렉토리를 의미하는 ./ 가 생략되어 있음. 써줘도 된다.
    • cd posix = cd ./posix // 현재디렉토리에 있는 posix디렉토리로 이동
    • cd /posix // 루트디렉토리(/)에 있는 posix 디렉토리로 이동
    • cd .posix // 숨겨져있는 posix디렉토리로 이동

5) 폴더이름 변경 => mv 명령어 => mv [원래폴더이름][바꿀폴더이름]

  • mv명령어는 폴더나 파일을 이동시킬 때 사용하는 명령어이지만 위와같이 경로지정을 안해주면 현재경로인 ./가 생략되있는 것으로 보고 이름만 변경할 수 있다.

6) 폴더 삭제 => rm명령어 => rm -r [폴더이름]

  • rm은 파일을 삭제하는 명령어다. 폴더는 그 내부에 수많은 파일들과 다른 하위 폴더들이 존재 할 수 있기 때문에 지우기 위해서 안전장치를 해야하는데 그것이 -r옵션이다.

7) 절대경로 vs 상대경로

  • 절대경로 : 경로를 루트디렉토리부터 시작해서 모두 적는다. 내가 현재 어느 위치에 있건 같은 절대경로는 같은 곳을 가리킨다.
    • E.g) cd /c/users/kang => 내가 컴퓨터의 어디에 있든 저 경로는 /c/users/kang를 절대적으로 가리킨다.
  • 상대경로 : 현재디렉토리를 기준으로 경로명을 작성한다. 내가 어디에 있는가에 따라 의미가 달라진다.
    • E.g) cd ./ = cd . =>현재경로를 가리킴 || cd ../ = cd .. => 부모디렉토리(상위폴더)로 이동

8) 파일생성

  • nano명령어를 치면 나노에디터로 진입가능 (나노에디터 말고도 vim도 있음)
  • Ctrl + o 입력시 저장가능
  • 단순히 빈 파일을 만들땐 touch명령어도 사용할 수 있다. touch [파일이름]
  • 파일을 읽거나 내용을 수정할땐 nano [파일이름]을 입력한다. 아주 간단한 내용을 확인할땐 cat명령어도 사용

9) 파일 이름수정 => mv [원래파일이름][바꿀파일이름]

  • mv text.txt text2.txt => text파일을 text2로 이름 변경
  • mv text.txt ../text.txt => text파일을 상위폴더로 이동


10) 파일 삭제 => rm [파일이름] => 폴더삭제완 다르게 -r옵션 불필요

잡팁) rm을 작성하고 tab키를 누르면 파일이름이 뜸


- CLI를 왜사용하는가?

어떤 작업을 한다는 관점에서 보았을 때 GUI는 버튼을 누르는 것과 같다. 쉽다!
CLI는 대화를 하는 것이다. 대화를 하려면 언어를 알고 단어를 외워야한다. 어렵다!
하지만 복잡하고 여러 작업들을 시간의 순서에 맞게 실행하려면 CLI가 단연 강력하다.
- CLI 에서 여러 작업들을 시간의 순서에 맞게 실행할땐 명령문들 사이에 세미콜론 ( ; ) 을 붙여 구분한다.
- 만약 작업실패시 중단하기 위해선 세미콜론 대신 &&을 붙여준다.

mkdir dummy; cd dummy; touch test.txt // mkdir dummy&&cd dummy&&touch test.txt

- 앞으로 공부할 수 있는 것들

  • Shell script : 자동화가능?
  • Package = program
    • Package manager 프로그램 다루는 방법들(스마트폰의 앱스토어같은 역할)
    • Chocolatey, apt-get, yum, homebrew 등등
  • Maintain
    • 컴퓨터를 유지보수하기 위해선 컴퓨터의 구조들과 기능들을 알아야함
      => 컴퓨터 아키텍쳐 공부
    • Top, htop 등 프로그램 사용법
      => 이걸 다루려면 컴퓨터의 동작방식등을 알아야함. => 컴퓨터 아키텍처
  • Network
    • Network를 설정하고 다루는 방법들. 역시 network에 대한 기본적인 지식들이 필요함.
profile
NOBODY

0개의 댓글