1주차 마지막날 금요일!!!
드디어 한주가 끝나간다

생활 루틴이 코드스테이츠 부트캠프에 맞춰져서
조금 더 반복적인 삶을 사는 느낌?
이전에는 너무나 나태한 나머지 잠만 엄청자서
수면패턴이 맨날 깨졌는데… 요즘은 하루하루가 상쾌하다
오늘도 달려보자!!


오늘의 학습목표는 리눅스의 기초이다
리눅스가 무엇인지 공부해보고
CLI가 뭔지? 기본명령어에는 어떤 것들이 있는지
패키지와 패키지 매니저, 사용권한, 환경변수 등에대해 공부하는 날이다.

리눅스(Linux)란?

본격적으로 터미널 명령어를 들어가기전에
리눅스? 우분투?가 무었인지 조금 공부하고 들어가보려고한다.

  만들어진 시기 간단한 설명  
유닉스 1960년대 후반 컴퓨운영체제의 한 종류.
MacOS가 UNIX 기반의 운영체제이다.
매우 비싼 비용을 지불해야지 사용 가능
 
리눅스 1991년 쉽게말하면 ‘무료 유닉스’
리눅스 토르발즈 등이 개했다.
 
우분투 2004년 리눅스 배포판 중 하나  

즉! 우분투는 리눅스의 버전중 하나라고 생각하면 될 것 같다!
유닉스는 리눅스의 조상님 정도?
나는 Unix기반의 MacOS를 사용하는
맥북을 사용하고 있기때문에 리눅스 명령어를 터미널로 사용할 수 있다.

반면 Windows를 사용하는 노트북이라면
PowerShell이라는 CLI를 지원하는 것 같다.
WSL2 (Window Subsystem for Linux 2)를 설치해줘야한다.
Windows에서 리눅스 터미널을 실행할 수 있게 해주는 프로그램이다.
Windows도 터미널을 이용하여

#1 Windows subsystem for linux 기능켜기
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

#2 가상머신 플랫폼 기능 켜기
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

위를 차례대로 입력한 후에
리눅스 커널 업데이트 패키지를 다운받으면 된다. (4단계에있음)
참고 - Microsoft.com wsl 수동 설치

그리고 설치가 완료되었으면 wsl의 버젼을 설정하면

wsl --set-default-version 2

Linux 사용준비는 마무리된다. 그리고 Microsoft Stroe에서 Ubuntu를 설치해주면 끝!


CLI 기본 명령어

CLI (Command-Line Interface) : 명령줄 인터페이스
GUI (Graphic User Interfacer) : 그래픽 사용자 인터페이스
CLI는 터미널을 생각하면 쉬울 것이고, GUI는 우리가 보고있는 컴퓨터 화면을 생각하면 간단할 것 같다.

image

프롬프트 (Prompt) : 터미널의 한 줄의 공간

./
= 현재 폴더 아래

vi ~/.zshrc
= zsh 파일 편집

pwd
= 현재 접속 위치

ls 
= 리스트 보기

ls -a
= 숨겨진 리스트까지 보기

ls -l
= 권한설정 보기

cd list이름 
= 파일 접속하기

cd .. 
= 현재폴더 나가기

echo 내용 > 파일이름
= 파일이름에 해당하는 곳에 내용을 집어넣음

cat 파일이름
= 파일에 있는 내용을 표시함

clear
= 화면 클린

mkdir 폴더이름
= 폴더만들기

touch 파일이름
= 파일만들기 ex)touch test.txt

rm 파일이름
= 휴지통 거치지 않고 삭제

rm =rf 폴더이름
= 휴지통 거치지 않고 폴더 삭제

mv 파일이름 폴더이름/
= 폴더에 파일을 이동. ex) mv bye.txt bye/ -> bye.txt를 bye로 옮김

mv 파일이름 파일이름
= 파일이름 변경 ex) mv bye.txt hi.txt -> bye.txt 이름이 hi.txt로 바뀜

cp 원본파일이름 복사할파일이름
= 파일 복사 ex) cp bye.txt hi.txt ->bye파일 복사후 hi로 붙여넣기

cp 복사할파일이름 경로
= 경로에 파일복사 ex) cp bye ~/Desktop/

cp -rf 원본폴더이름 복사할폴더이름
= pwd 접속되어있는 경로에 원본폴더를 복사해 이름변경하여 복사

cp -rf 복사할폴더이름 경로
= 경로에 폴더복사 ex) cp -rf bye ~/Desktop/

cat 대신쓰는 명령어

head, tail, more, less

-r : recursive의 약자로 특정 행동을 순환적으로 반복

-f : force의 약자로 어떤 행위를 강제함

-h -help : 도움말 출력


관리자 권환과 이해

root권한

루트폴더( / )는 Linux의 관리자 영역이다.
일반 사용자의 권한으로는 어떤 폴더나 파일도 생성,변경,삭제할 수 없다.
Linux의 가장큰 특징은 일반사용자에게 관리자 권한을 완전히 넘기지 않음.
사용자가 필요로하는 경우(프로그램설치,변경,삭제)할 수 있는 관리자 권한만 전달한다.
이로서 사용자와 관리자를 명확히 분리해 사용자의 실수를 막을 수 있다!

sudo

관리자 권한을 일시적으로 획득하는 명령어 이다.
권한을 가지기 때문에 항상 비밀번호와 함께 사용해야한다.
비밀번호는 계정 생성할 때 입력한 사용자의 비밀번호!

image

이처럼 sudo를 이용해 관리자 권한으로 폴더를 생성할 경우
비밀번호를 입력하라고 키모양으로 생성되는 모습을 볼 수 있다.
비밀번호를 입력후 ls -l로 관리자 권한 조회를 해보자

ls -l

image

위처럼 방금 생성한 sudoMkdir이라는 파일이
사용자인 ljh가 아니라 root로 된 모습을 볼 수 있다!


텍스트 에디터

CLI 환경에서는 주로 vim(vi),emacs를 사용한다
nano라는 쉬운 에디터도 있다
아래와 같이 터미널에 nano라고 입력해보자

nano

image

맥북에서 ^은 Ctrl이다. 아래의 도움말을 통해 진행할 수 있다.
예를들어 nano 에디터를 Exit(종료)하려면 Ctrl + X를 입력하면 된다.
Cancle, Yes, No이렇게 노출되는데 선택해서 진행하면된다.
해당 파일을 편집하고싶을 경우
예를들어 hi.txt라는 파일을 수정하려고한다.

nano hi.txt

를 통해 접속을하면 아래와 같이 표시된다.

image

현재 txt파일에 “당신은 바보입니까?”라는 내용이 있고

image

“아닌데요?”라고 수정을 했을 경우
저장을하려면 Ctrl+O를 눌러서 저장하여도 되고 (하지만 nano 에디터유지)
Ctrl+X로 Exit하여도된다.

image

그렇게될 경우 Yes,No를 물어보는데
Y를 입력후 엔터를 눌러주면 수정이끝난다!


패키지와 패키지 매니저

MacOs 운영체제가 패키지라고하면
Homebrew를 패키지 매니저라고 한다.
패키지 매니저 Homebrew를 통해 패키지를 관리할 수 있다.
brew update: 패키지의 업데이트 여부 확인
brew outdated: 업데이트 필요한 파일 조회
brew upgrade: 프로그램 업그레이드
brew info: 프로그램의 정보 확인
brew install: 프로그램 설치
brew list: 설치된 프로그램 목록 보기
brew uninstall: 프로그램 삭제

homebrew통해 간단한 프로그램 설치 및 테스트를 해보자!

neofetch 설치!

image

sl 설치! 기차모양이 지나가는 귀여운 터미널 영상

image


*맥북 Homebrew 설치 및 삭제*

맥에서 Homebrew 홈브류 설치,삭제 및 기본 적인 사용 방법 - SoEasyGuide


Read,Write,Execute 권한

image

기본적으로 ls -l을 통해서 현재 경로의 파일,폴더의 권한을 확인할 수 있다.
(맨 왼쪽의 drwx–~~ 이것들이 권한)

image

권한은 3번에 걸쳐 사용자,그룹,나머지에 대한 그룹을 표시한다

r = read permisiion (읽기 권한)
w = write permission (쓰기 권한)
x = execute permission (실행 권한)
User = 파일의 소유자 입니다.
Group = 여러 user가 포함될 수 있다. 그룹에 속한 모든 user는 파일에 대한 액세스 권한을 갖는다.
Other = 파일에 대한 액세스 권한이 다른 user입니다. 파일을 만들지 않은 다른 모든 user.

예를 들어 -rw-r–r– 이라고 할떄
소유자는 -rw : 읽기와 쓰기가능
그룹은 r– : 읽기만 가능
다른사용자는 r– : 읽기만 가능

이렇게 해석이 가능하다.


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

폴더나 파일의 읽기,쓰기,권한을 변경할 수 있다.
변경 방법은 두 가지가 있다.

1. Symbolic method : 더하기,뺴기,할당(=)과 액세서 유형을 표기해서 변경하는 방법

Access class Operator Access Type
u (user) + (add access) r (read)
g (group) - (remove access) w (write)
o (other) = (set exact access) x (excute)
a (all: u,g,o)    

예제: chmod g-r filename
filename의 권한을 group의 읽기권한을 remove한다.


2. Absolute form : rwx를 3 bit로 해석, 숫자 3자리로 권한표기해서 변경하는 방법

Read(r) : 4 / Write(w) : 2 / Execute(x) : 1
예를들어 filename의 권한을 -rw-r–r–로 하고 싶을 경우
chmod 644 filename 으로 표기하면 된다.

# Sum rwx Permission
7 4(r) + 2(w) + 1(x) rwx read,write,execute
6 4(r) + 2(w) + 0(-) rw- read,write
5 4(r) + 0(-) + 1(x) r-x read,execute
4 4(r) + 0(-) + 0(-) r– read only
3 0(-) + 2(w) + 1(x) -wx write,execute
2 0(-) + 2(w) + 0(-) -w- write only
1 0(-) + 0(-) + 1(x) –x execute only
0 0(-) + 0(-) + 0(-) -– none


환경변수

환경에 따라 프로그램의 동작에 영향을 줄 수 있는 값들을 환경변수라고 한다.

지역환경변수는 특정사용자만 사용이 가능하고 전역환경변수는 모든 사용자가 사용가능!


임시로 변수 지정하는방법!!

지역 환경변수

hello=AnNyeong!

image

echo $변수이름
으로 설정한 환경변수를 출력가능


전역 환경변수

export hellojapan="Gonnichiwa"

image

export를 붙여 전역으로 설정한다!


영구적으로 지정하는 방법!!

지역 환경변수

vi ~/.zshrc

vi편집기를 이용해 .zshrc파일을 연다.
편집기 아래에 위와 같이 변수를 지정할 경우
echo $변수이름으로 똑같이 출력이 확인이 가능하다.


전역 환경변수

sudo chmod 777 /etc/profile

profile r–r–r–권한을 777로 변경

vi /etc/profile

image

편집기를 이용해 편집시작

맨 하단에 export you=”babo” 추가

image

동일하게 echo $you 입력시 프롬프트에는 babo라고 표시가 되어진다.

image



오늘은 Linux와 CLI 명령어 등..
여러가지 사용법들을 알아보았다.
사실 그전에 이미 공부해놓은 부분도 있어 알고있는 부분도
있었고, 이번에 공부하면서 개념적으로 몰랐던 부분을 찾아 볼 수 있어서
아~~~주 유익했던 시간이었다.

오늘은 여기까지!


오늘의 커피량: ☕️ ☕️ ☕️ ☕️️️️
오늘의 점심: 된장찌개,동그랑땡,김,공기밥