6Days) Linux 기초 - CLI의 매력 속으로

nacSeo (낙서)·2022년 10월 27일
0
post-thumbnail

◉ 학습목표

1. CLI와 GUI의 차이를 이해하고, CLI 기본 명령어들을 사용할 수 있다.
2. 관리자 권한과 경로에 대해 설명할 수 있다.
3. 패키지와 패키지 매니저를 이해하고 MacOS 패키지 매니저인 brew를 설치 및 사용할 수 있다.
4. 사용 권한과 소유자에 대해 이해하고, 사용 권한을 변경할 수 있다.
5. 환경변수에 대해 이해하고 설정 및 사용할 수 있다.
  1. CLI (Command-Line Interface)

⦿ 학습내용

☞ 명령줄 인터페이스(CLI) : 명령어로 컴퓨터를 제어하는 방식

✔︎ 장점 : 상대적으로 높은 안정성을 갖고 빠른 속도
✔︎ 단점 : 사용법이 어렵고 진입 장벽 ⬆️

☞ 그래픽 사용자 인터페이스(GUI) : 사용자가 편리하게 사용할 수 있도록 그래픽으로 표현한 방식

✔︎ 장점 : 사용자가 쉽게 컴퓨터를 제어할 수 있음.
✔︎ 단점 : 그래픽을 사용하므로 컴퓨터 자원을 많이 사용하고, 상대적으로 느림.

☞ 프롬포트(Prompt) : 입력을 확인하고 편집할 수 있는 한 줄의 공간

☞ CLI 기본 명령어 (Terminal 사용)

✔︎ pwd(print working directory) : 현재 위치 확인
✔︎ mkdir(make directories) : 새로운 폴더 생성
✔︎ ls(list) : 특정 폴더에 포함된 파일이나 폴더 확인
ls -l : l은 폴더나 파일의 포맷을 전부 표현하라는 의미
ls -a : a는 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력
ls -al or ls -la
✔︎ cd(change directory) : 폴더에 진입
✔︎ touch : 파일 생성
✔︎ > : 실행 결과를 파일로 저장
echo : 뒤의 내용을 화면에 출력해주는 역할
✔︎ cat : 파일의 내용을 터미널에 출력
※ cat 대신 쓰는 명령어 (파일 내용 일부분만 열람 가능)
head
tail
more
less
✔︎ rm(remove) : 폴더나 파일을 삭제 (휴지통을 거치지 않고 바로 삭제)
rm -r(recursive) : 폴더를 지울 때 사용
rm -f(force) : 질문을 받지 않고 지울 때 사용
rm -rf
※ r, f는 cp같은 명령어에도 사용 가능
✔︎ mv(move) : 폴더나 파일 이름을 변경, 또는 폴더나 파일의 위치 옮기기
mv [폴더나 파일의 이름] [도착 폴더의 이름]
※ 컴퓨터가 파일을 옮기는 과정
① 파일의 내용을 잠시 저장 - ② 원래 위치의 파일 삭제 - ③ 도착 폴더에 ①에서 저장한 내용으로 새로운 파일 생성
✔︎ cp(copy) : 폴더나 파일을 복사
cp [원본 파일 이름] [복사할 파일 이름]
※ 컴퓨터가 복사하는 옮기는 과정
① 파일의 내용을 잠시 저장 - ② 원래 위치의 파일 삭제(제외) - ③ 도착 폴더에 ①에서 저장한 내용으로 새로운 파일 생성
✔︎ -h, -help : 헬프 옵션 사용
✔︎ man : 매뉴얼

🗒️ ✔︎ nano : 텍스트 에디터 (원격 서버 환경에서 원격으로 텍스트를 편집해야할 때 사용 ⭕️)
※ CLI환경 에디터 : vim(vi), emacs, nano(가장 사용하기 쉬움) 등

  1. 관리자 권한과 경로

⦿ 학습내용

☞ 절대 경로 : 기준점으로부터의 절대적인 경로

✔︎ 기준점 : 루트폴더(/)

☞ 상대 경로 : 현재 위치를 기준점으로 특정 폴더 또는 파일의 위치를 나타는 경로

✔︎ 현재 위치한 폴더 : 점(.)으로 표현
✔︎ 상위 폴더 : 두 개의 점(..)으로 표현
✔︎ 점(.)은 현재 폴더를, 슬래시(/)는 폴더 내부를 뜻함. 따라서 ./는 "현재 폴더 아래의"라는 뜻

☞ 관리자(root) 권한

✔︎ 절대 경로의 기준점인 루트폴더(/)는 Linux의 관리자 영역
✔︎ 일반 사용자 권한으로는 어떤 폴더나 파일도 생성, 변경, 삭제 ❌
✔︎ whoami : 현재 로그인된 사용자를 확인하는 명령어
✔︎ 사용자 폴더 경로 : ~/
※ 물결 기호(~)은 루트폴더(/)로부터 사용자 폴더까지의 경로를 축약한 형태

☞ sudo : 관리자 권한을 일시적으로 획득하는 명령어

  1. 패키지와 패키지 매니저

⦿ 학습내용

☞ 리눅스의 패키지 : 여러 파일을 모아 하나의 파일로 저장하고 있는 압축 파일

☞ 패키지 파일 구성

✔︎ 프로그램 파일
✔︎ 프로그램 설치 파일
✔︎ 프로그램 설치 설명서
✔︎ 프로그램에 대한 정보를 담은 파일

☞ 패키지 매니저 : 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구

☞ Mac OS 패키지 매니저 - brew

✔︎ brew 명령어
✓ brew 자체 업데이트 : brew update
✓ 업데이트 필요한 파일 조회 : brew outdated
✓ 프로그램 업그레이드(업데이트) : brew upgrade 프로그램 이름
✓ 프로그램 검색 : brew search 검색어
✓ 프로그램 정보 확인 : brew info 프로그램 이름
✓ 프로그램 설치 : brew install 프로그램 이름
✓ 프로그램 삭제 : brew uninstall 프로그램 이름
✓ 설치된 프로그램 보기 : brew list

  1. 사용 권한

⦿ 학습내용

☞ r : read permission (읽기 권한)

☞ w : write permission (쓰기 권한)

☞ x : execute permission (실행 권한)

☞ user : 파일의 소유자

☞ group : 여러 user 포함 ⭕️

☞ other : 파일을 만들지 않은 다른 모든 user

☞ chmod : 권한을 변경하는 명령어

✔︎ chmod로 권한을 변경하는 방식
① Symbolic method : 액세스 클래스, 연산자, 액세스 타입으로 구분하여 더하기(+), 빼기(-), 액세서(accessor) 유형을 표기해서 변경
(ex. chmod g-r filename, chmod o+wx filename, a=rw filename, u= filename, etc)

② Absolute form : rwx를 3bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경
(ex. chmod 751 filename, chmod 777 filename, etc)

  1. 환경변수

⦿ 학습내용

☞ 환경변수 : 환경에 따라 프로그램의 동작에 영향을 미치는 값들

✔︎ 지역 환경변수 : 환경변수를 생성한 특정 사용자만 사용 ⭕️
✔︎ 전역 환경변수 : 모든 사용자가 사용 ⭕️

☞ 환경변수 임시 적용

✔︎ 지역 환경변수 : 등호 표시(=) 앞뒤에는 공백 반드시 ❌, 저장하는 변수에 공백 존재 시 값 전체를 따옴표("")로 감싸줘야 함
✔︎ 전역 환경변수 : export 명령어 사용.
마찬가지로 등호 표시(=) 앞뒤에는 공백 반드시 ❌, 저장하는 변수에 공백 존재 시 값 전체를 따옴표("")로 감싸줘야 함!
✔︎ 전역 및 지역 환경변수의 개별 값 확인 : echo 명령어 사용, 환경변수 앞에는 달러사인 ($) 입력.

☞ 환경변수 영구 적용

✔︎ 지역 환경변수
① 텍스트 에디터를 이용해(nano zshrc) 파일 맨 아래 설정하고자 하는 환경변수 작성 및 저장
source .zshrc을 입력하여 변경 내용 적용 및 내용 출력
✔︎ 전역 환경변수
① 변경하고자 하는 파일의 권한 수정 (sudo chmod 777 [filename] 활용)
② 텍스트 에디터를 이용해 (nano [파일경로]) 파일 맨 아래 설정하고자 하는 환경변수 작성 및 저장
source [파일경로]를 입력하여 변경 내용 적용 및 내용 출력

☞ 생성된 환경변수의 이름과 값을 목록으로 확인

✔︎ export : 운영체제 내 환경 변수 목록 확인 ⭕️

◉ 느낀 점

☞ 어렸을 때, 까만 화면에 영문 모를 영어들이 나열되어 있는 Terminal을 보며 조금이라도 잘못 만지면은 큰 일날 것 같아서 겁이 났던 기억이 있다.

오늘 강의를 듣기 전까지만 해도 까막눈에 터미널에 명령어들을 입력하는 사람들을 보면 경외심이 생기는 수준이었는데, 두려워하지 않아도 된다고 진입하기 좋게 눈높이에 맞춰 강의를 시작해주시는 강사님 덕분에 큰 도움이 됐던 것 같다 :)
GUI가 개발됐지만 아직까지도 CLI언어를 사용하는 이유를 알게 되었고, 많은 명령어들을 하나하나 직접 실습해가며 이해하는 즐거움도 있었다. 그렇지만 많은 명령어들 앞에서 돌아서면 까먹는 나이기에 반복 학습은 필수.. 😅

경로와 사용 권한, 환경변수에 대해서도 이해될 때까지 읽어가며 어느 정도 내 것으로 만든 것 같고, CLI로 GUI에서 하던 작업들을 하고 GUI로 다시 확인하고 하면서 흥미롭고 뜻깊은 시간이었다!
시작할 때 강사님께서 보여주셨던 터미널로 구현한 기차나 매트리스, 불멍 등을 내가 직접 brew를 통해 다운받아 사용해보니 왠지 모를 뿌듯함..☺️

이렇게 흥미를 느끼고 배운 게 많은 하루였지만, 앞서 말했듯 내용이 많다보니 꾸준한 반복학습이 필요할 것 같다, 화이팅! ✍️ 🔥🔥🔥

◉ 내일의 키워드

・ git
・ pair programming - simple git workflow
profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글