개발자 연쨘

[한화시스템 BEYOND SW캠프_5기_1일차] 리눅스 01 본문

스터디/한화시스템 BEYOND SW 부트캠프

[한화시스템 BEYOND SW캠프_5기_1일차] 리눅스 01

연쨘 2024. 1. 8. 19:36

🐰 오늘은 ? 🐰

주말부터 독감예방주사 맞고 면역이 약해져서 목감기가 걸렸는지
목소리가 안나오기 시작했다.  말하고 싶은데 말이 안나온다...^^

 

공부도 못하고 주말에 내내 병원가고 약먹고 자고만 반복하다가
한화시스템 부트캠프 개강이 왔다! 

퇴사하고  오랜만에 이시간에 나가보는데 역시나 지옥철 ㅎㅎ...

예... 제 기분이요? 예....ㅋㅋ 숨이 안셔져요.

밀지 말아주세요... 😢
6개월동안 매일 저렇게 타야하는게 조금 두렵다...

 

그래도 열정만으로 버텨보자 열정!열정!열정!

 

수업시간에 강사님 소개가 있으셨는데 굉장히 밝으시다!
긍정의 씨앗도 나눠주셨다 ! 🌱

씨앗을 긍정으로 키워서 나의 발전으로 이어질 수 있을것이라 하였다.

꼭 긍정의 씨앗을 6개월 뒤에 예쁜 긍정의 꽃으로 만들것이다 🌼

 

강사님이 수업을 하시면서 집중을 하게 해주실려고
우리에게 질문을 많이 해주셨는데 
질문에 대답하고 싶은데 감기이슈로 목소리 잃어서 대답하지 못하였다...

목소리야 얼른 돌아와줘...

오늘 수업 주제는 리눅스였다. 리눅스 설치방법과 기본명령어를 배웠다 !
리눅스는 명령어만 몇개알았었고  처음이였다.
내용이 생소해서  헷갈렸지만, 어려운 내용은 아니였던것 같다 !

그리고 오늘 좋은 동기분들을 만나 알고리즘 스터디도 만들어졌다 🐰
정말 열심히 스터디하고 공부해서 짱멋진 내가 되어야지.

오늘 첫날이지만 짝궁이랑 2시간 더 남아서 배운내용 정리하고 갔는데,
내용을 한번 더 정리해서 복습하니 머릿속에도 정리가 되는것 같았다.
약속이 있는날이 아니라면 매번 이렇게 남아서 정리하는 습관을 키워야겠다!!


🐰 오늘 배운 내용 정리 🐰

리눅스의 기본 철학 : 한 프로그램에 너무 많은 기능을 넣지 않는다. 적절히 분리하는 것이 좋은 설계.

리눅스 가상머신에 설치

 

리눅스를 사용하기 위해서 VM(Virtul Machine)을 사용할것이다.

VM(가상머신)에 리눅스를 설치할 것이다.

 

 VM 다운로드 받기 ← 링크 클릭

우븐트 다운로드 받기 ← 링크 클릭

 

둘다 다운 받아서! VM에서 creat 눌러서 우분투를 설치해준다.

 

다 다운받고 설치가 완료 되었으면 리눅스 체계의 터미널 오픈!

 

리눅스의 기본 명령어를 보고싶다면 ?

 /etc/bin 이곳에 명령어들이 들어 있고 인터프리터들도 볼 수 있음.

 

잠깐 ! 리눅스 들어가기전에 GUI와 CLI를 알아보고 가자.

GUI  👉 그래픽 유저 인터페이스, 화면상에 보이는 아이콘, 창, 메뉴 등을 마우스나 

터치패드로 클릭하여 컴퓨터에 명령을 내리는 인터페이스.

윈도우나 맥을 사용한다면 쉽게 볼 수 있는 인터페이스다.

 

CLI  👉 커맨드 라인 인터페이스, 키보드로 명령어를 입력하고 결과가 문자열로 출력되는 인터페이스,

예를 들어 파일 a.txt를 b.txt로 복사하는 경우를 생각해보면,

GUI에서는 마우스로 파일 아이콘을 클릭한 뒤 마우스 오른쪽 버튼을 눌러 복사 메뉴를 선택한다.

하지만 CLI에서는 cp라는 명령어를 입력해야한다. 

$ cp a.txt b.txt

 

그렇다면 아이콘이 있어 더 보기 편해보이는 GUI보다 왜 명령어로 동작하는 CLI를

사용하는 이유는 무엇일까?

1. 작업 효율이 높다.

2. GUI 조작 방법을 외워도 크게 의미 없다.

3. 프로그램 실행에 유리하다.

4. 자동화에 유리하다.

 

예를들자면 GUI에서는 파일을 전부 선택해줄려면 쉬운일이 아니다.

하지만 CLI는 $ ls a* 명령어만 입력하면 전부 선택된다.

 

셸의 역할과 리눅스 커널

리눅스 내부에서 명령어가 실행될 때 어떻게 실행되는지 알아보자!

*date라는 명령어는 현재 날짜와 시간을 출력해준다.

 

date라는 명령을 사용했다고 가정해보자 그러면 아래와 같이 명령이 실행될것이다.

  1. 키보드로 입력한 date 문자열을 받아들인다. -> shell 에 입력
  2. date 명령어를 찾는다. -> shell 이 명령어를 찾음
  3. 발견한 명령어를 실행한다. -> kernel 이 수행
  4. 실행한 결과로 얻은 문자열을 화면에 표시한다.
    -> kernel 이 명령을 실행하면 shell 은 그 결과를 전달받아서 화면에 출력

이중에 3번은 리눅스의 본체인 kernel 이 수행!

 

shell과 kernel 비교!  

shell : 사용자의 명령어를 받아들이고 kernel을 감싸는것이다. (kernerl의 인터페이스)
또한, 셸은 사용자의 의뢰를 받아서 커널에 전달하므로 메신저 혹은 비서로 생각하자!

kernel : 운영 체제의 중심에서 CPU나 메모리 같은 하드웨어를 관리하면서 감싸는것이다. 
또한 kernel은 명령어를 실행하고 프로세스를 관리한다.
shell script
shell이랑은 완전히 다른것이다.
shell에게 내릴 수 있는 명령을 사용자가 별도로 만들겠다는것이다.
따로 shell에서 가져오는게 아님 !

 

리눅스에서는 사용자가 커널을 직접 조작 ❌

그래서 둘 사이에서 명령에를 받아들이고 커널의 실행 결과를 출력하는 소프트웨어가 필요 !

이 역할을 수행하는 소프트 웨어가 바로 셸!

즉, 셸은 커널의 인터페이스에 해당한다.

 

* (일반 사용자) 프롬프트 기호 : $ <명령어>

* 슈퍼 사용자 (root) : # <명령어>

 

 

셸의 종류

sh :  표준 셸의 지위를 가지고 있으며, 현재도 셸 스크립트를 작성할 때는 sh를 사용하는 것이 일반적

하지만 오래되어서 기능이 적고 대화형에서 사용하기에 불편

csh : 무척오래된 셸, tcsh가 나와 많이 사용안함

bash : sh를 바탕으로 기능이 추가된 셸, sh와 호환성이 있어 sh를 대체할 수 있음,

대화영 조작에 필요한 기능을 갖추고 있어 많은 리눅스에서 기본 로그인 셸로 사용하고 있음

tsch : C셸 계열의 셸

zsh :비교적 최근에 계발된 셸, bash와 tcsh의 기능에 독자적인 기능이 추가되었다.

 

터미널이란

터미널이란 컴퓨터의 입출력만을 담당하는 전용 하드웨어.

입력 장치인 키보드와 출력 장치인 모니터로 구성된다.

 

리눅스 기본 명령어
  • whoami : 로그인한 사용자 ID 반환하는 명령어
  • pwd : 현재 디렉토리 위치 반환 pwd는 Print Work Directoty 의 약자로 현재 작업 중이거나
    사용자가 있는 디렉토리 경로 보여준다.
  • passwd : 로그인한 사용자의 암호 변경 할 때 사용
  • cd : 디렉토리 이동 (cd + 이동할 디렉토리명 또는 상위 디렉토리 (. .)) Change Directory의 약자
  • ls : 목록보기 (숨김파일은 안나온다.) List Segments 약자로 파일과 디렉토리의 모든 정보를 제공하며
    특정 디렉토리와 특정 파일을 제공
  • --help : 명령어의 옵션메뉴얼을 보여줌 (ls --help : ls에서 사용할 수 있는 옵션 알려줌)

 

ls의 옵션
ls  : 목록 보기(list segments) 파일과 디렉토리의 모든 정보를 제공하며
특정 디렉토리와 특정 파일의 내용을 제공한다.
  • ls -a : 숨긴 파일을 포함하여 모든 디렉토리와 파일을 보여준다.
    리눅스에서 숨김파일은 파일 앞에 .이 붙는다.
  • ls -al : 숨김파일을 포함한 모든 파일의 정보와 권한을 준다.

  • ls -l : 권한에 대한 형식을 길게 보여준다.

 

  • ls -aSl : 용량 순서대로 정렬

 

디렉토리를 생성하는 명령어
  • mkdir != rmdir(rm -r xxxxx : 이건 삭제하는법)
    즉, 디렉토리 생성하는 명령어는 mkdir이다.

$ mkdir encore_linux → encore_linux 라는 파일을 만들었다.

$ ls -al → 목록 보기

$ pwd → 현재 위치 보기

여기에 만들어져있는걸 확인할 수 있음!

 

여기서  "$ mkdir -p dir1/dir2/dir3/dir4" 이렇게도 파일을 만들 수 있다.

이렇게 cd로 이동할 수 있음.

 

$touch를 이용해서 빈파일 만들고 이동시켜보기

$touch : 비어있는 파일을 만들 때 사용하는 명령어

1. $ touch empty_file.txt 비어있는 파일 만들어보기

 

2. cd → 디렉토리 이동 실습 해보기

 

.. 을 이용해서 파일의 상위로 올라가보기

..(웹) 사용자의 request path → https://www.naver.com/a/b/c
리눅스에서도 상위 디렉토리를 이동하기 위해 ..을 쓸 수 있다.

..  ->  상위로 올라감

 

제일 상위요소로 올라가보면!

조회하면 root로 바뀌어져있음.

root는 슈퍼바이저 계정이다.

절대경로 : 풀네임으로 길게쓴것
상대경로 : ././
cd , cd~ : 루트 디렉토리로 이동
cd .. : 상위 디렉토리로 이동

 

삭제 명령어

rm파일과 비어 있지 않은 디렉토리를 삭제할 때 사용

-r → “-r” 옵션을 사용하여 재귀적으로 삭제할 수 있다.

rm -r xxxxx  → xxxxx 디렉토리가 포함하고 있는 모든 것을 삭제할 때 사용

rmdir → rmdir은 디렉토리를 삭제할 때 해당 디렉토리가 비어있어야한다.
만약 디렉토리 안에 파일이나 다른 하위 디렉토리가 있다면 삭제 되지 않는다.

 

파일을 직접 삭제할 수 있다.

$rm -r encore_linux

$rm empty_file.txt

 

파일관리
  • 생성, 복사, 이동 etc…
  • touch, cp, mv, mv
  • 편집할 때 사용하는 파일 생성 편집기 👉🏻 nano (초, 중급자), vi (상급자)

파일관리 실전으로 해보기!

touch로 빈파일을 만들었다.

 

nano를 통해서 cp.txt에 들어가기

 

들어가서 내용을 입력하고 ^x누르고 y누르고 엔터누르면 저장완료

rwx r-x r-x :  [access mode]  소유자 권한, 소유자가 속한 그룹 권한, other 일반인 권한

r :
read 읽기
w :
write 쓰기
x :
excute 실행
(s) :
소유 그룹이 동일한 사람일 경우에 read 대신 s가 들어가기도 한다.

숫자로 나타낼때

 r (숫자→4)
 w (숫자→2)
 x (숫자→1)

chmod(권한을 변경할 때)
⇒ 4 + 2 + 1 = 777(모든권한을 다준다.),
755(r과 x만 있으면 된다. → 쓰기권한을 주지 않는것)


 

 

파일을 other쪽에서 보고싶을때! cat이라는 명령어로 보면된다.

other는 편집모드로 못들어가니까 이렇게 확인해야한다.

편집자는 다시 nano cp.txt로 확인 가능!

cat : conCATenate의 약자로 파일 내용을 화면에 출력합니다.
여러 파일을 나열하면
파일을 연결해서 출력 합니다.

 

파일 복사하는법

위에서 만들었던 cp.txt를 dir1로 복사하고 싶으면?

$ cp cp.txt dir1/cp.txt

copy된것임!

 

파일 이동 실제로 해보기!

$ touch mv.txt → touch로 mv.txt 파일 생성

$ ls -l으로 조회!

 

 

$ mv mv/txt dir1/mv.txt → mv.txt 파일 dir1로 이동

 

 

$ ls -l dir1입력해보면 mv.txt가 dir1로 이동되었다.

 

파일 이름변경 실습

$ touch rename.txt -> 빈파일 생성

$ ls -l -> 목록 조회

  1. rename.txt 파일 생성
  2. rename.txt 파일 만든거 ls -l로 확인!
  3. rename.txt를 rename1.txt로 이름 변경
  4. rename.txt → rename1.txt로 잘 바꼈는데 ls -l로 확인
데이터가 로컬에 있지않고 리모트에 존재할 경우
  • 다운로드 (wget) → 여기서 w는 웹의 약자이다.  즉, 웹에서 가져온다는 뜻

수 많은 명령어들이 나온다.

  • http, https, ftp, http proxy ( ⇒웹에서 사용하는 통신 기약)
  • $ wget url ($ wget -O 파일이름 url)

 

이미지를 저장했다고 했을때 이미지를 열고 싶다면?

$ eog paris.jpg == xdg-open paris.jpg (이 두개는 같은것임)

$ feh (패치의 약어) 여기서 paris.jpg는 위에서 내가 이름을 변경해줘서 그렇게 저장된것

$ eog paris.jpg

 

xdg-open paris.jpg

 

$ feh로 하면 오류가 뜸! 라이브러리가 없어서 오류나는거니까 라이브러리가 설치해줘야함!

 

리눅스에서 라이브러리 설치할 때 third-part lib 설치

$ sudo apt

$ sudo apt-get

이 두개의 차이점은 ? ⇒ 기존의 apt에 옵션이 추가된게 sudo apt-get !

원래 그냥 쓰는것도 풍부한데 더 풍부하게 쓰고 싶으면 $ sudo apt-get 쓰기, 별차이는 없음!

라이브러리가 없어서 오류난거라 feh 설치!

 

feh 설치후 사진 잘뜨는거 확인!

 

혹은 "$ feh -M paris.jpg"  feh가 설치되는 조건하에 이렇게도 사진 볼 수 있음!

feh --help // 여기서는 help가 안돼! 대신해서 아래 명령어 사용!
$man feh ⇒ 내용이 뜨면 방향키 이용해서 위아래로 내려서 보기!

 

 

깃허브 파일을 리눅스에 설치 후 페이스북을 설치해보자

 

이렇게 뜨면 git명령어 설치 안된건데 이럴경우 설치해야함

 

$ sudo apt install git 입력하여 설치후 완료된 화면!

 

다운로드가 아니라 저기 눌러서 복사해야 깃 형상관리 할 수 있음!

 

여기선 이름 지정안해주고 다운로드해줬음!

이름 지정해줄려면 주소 쓰고 한칸 뛰고 그 다음에 이름 써고 엔터 눌러주면됨!

 

설치 다되고 목록 조회 해보면 ($ ls -l로 확인!) react가 생긴걸 확인할 수 있음!

그러면 $ ls -l react해서 그 파일에 접근해주면

그 react 폴더 안에 있는걸 볼 수 있음

728x90