2023-04-24(월)
코드스테이츠 프론트엔드 10일차
Section 1
unit7 - [Linux/Git] 기초
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chapter1- Command-Line Interface
Command-Line Interface 개요
1. 컴퓨터를 조작하기 위해서는 다양한 입력(Input)이 필요합니다.
2. 화면을 보기 위해 마우스를 사용하고, 메시지를 입력하기 위해 키보드를 사용합니다.
3. 입력을 담당하는 키보드나 마우스를 입력 소스(Input source)라고 합니다.
1. 입력 소스에 의해 또는 작성된 프로그램에 의해 모니터에 화면을 나타내거나,
2. 음악을 재생하면 소리를 스피커로 전달하여 사용자가 인식할 수 있도록 하는 일을 출력(Output)이라고 합니다.
3. 시각적 출력을 담당하는 모니터나 청각적 출력을 담당하는 스피커를 출력 소스(Output source)라고 합니다.
= 컴퓨터를 조작하기 위한 입력과 출력을 간단하게 I/O(Input/Output)라고 표기하며, "아이오"라고 읽습니다.
리눅스의 터미널은 키보드의 입력과 모니터의 출력으로 모든 작업을 할 수 있습니다.
학습목표
- 리눅스 터미널을 실행할 수 있다.
- CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
- 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
- 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
- 관리자 권한을 이해할 수 있다.
- 절대 경로와 상대 경로의 차이를 이해할 수 있다.
- 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chapter1-1- CLI 명령어(1)
기본적인 명령어 (1)
터미널실행하기
pwd: 현재 위치 확인하기
=CLI인 터미널에서는 간단하게 pwd를 프롬프트에 입력하고, Enter(엔터 키)를 누르면 현재 경로가 나타납니다.
=pwd는 print working directory의 약자입니다. 여기서 말하는 디렉토리(directory)는 폴더라고 합니다.
mkdir: 새로운 폴더 생성하기
=CLI에서 폴더를 생성하기 위해 사용하는 명령어인 mkdir은 make directories의 약자로, 폴더를 만들라는 명령을 컴퓨터에 전달합니다
ls: 특정 폴더에 포함된 파일이나 폴더 확인하기
=명령어 ls는 list의 약자로, 특정 폴더에 포함된 파일이나 하위 폴더의 리스트를 출력합니다.
=명령어 ls에는 자주 사용하는 옵션 l과 a가 있습니다. CLI에서 특정 명령어의 옵션을 사용하는 경우에는 -를 이용해 옵션을 입력했다고
컴퓨터에 전달합니다. 다음과 같이 옵션을 사용해 보세요.
- ls -l
- ls -a
- ls -al 또는 ls -la
* 위의 세 번째 예시에서, 옵션을 뜻하는 대시(dash, -) 뒤에 오는 옵션의 순서는 기능에 영향을 미치지 않습니다.
명령어 ls의 옵션 a는 "all"이라는 의미입니다.
명령어 ls와 함께 옵션 l을 사용하면, 가장 왼쪽에 출력되는 두 글자 d와 -를 확인할 수 있습니다. 여기서 d로 출력된 경우는 폴더를, -로 출력된 경우는 파일을 나타냅니다.
명령어를 이용해 폴더를 GUI의 탐색기로 실행하기
Ubuntu
nautilus .
macOS
open .
Windows + WSL
explorer.exe .
cd: 폴더에 진입하기
명령어 cd는 change directory의 약자로, 프롬프트로 상호작용하는 폴더를 다른 폴더로 변경한다는 의미입니다. 명령어 pwd를 사용해 현재 위치를 확인하고, 명령어 ls를 이용해 helloWorld 폴더를 확인하세요. 그다음, 명령어 cd를 이용해 helloWorld 폴더로 진입합니다. 명령어 pwd를 이용해 현재 위치를 확인하면, 다음과 같습니다.
# '#' 기호는 설명을 위해 사용되었습니다.
# pwd를 이용해 현재 위치를 확인합니다.
pwd
# [사용자명]은 처음 OS를 설치할 때 입력한 사용자 이름입니다.
# (Ubuntu) /home/[사용자명]
# (macOS) /Users/[사용자명]
# ls를 이용해 현재 위치의 모든 폴더와 파일을 확인합니다.
ls
# cd를 이용해 폴더 helloWorld로 진입합니다.
cd helloWorld
# pwd를 이용해 현재 위치를 확인합니다.
pwd
touch: 파일 생성하기
폴더 "helloWorld" 안에서, 텍스트 파일 "hi.txt"를 생성합니다.
파일을 만들기 위해 touch라는 명령어를 사용합니다. 아래의 명령어를 통해 빈 텍스트 파일 "hi.txt"를 생성하세요.
touch hi.txt
cat: 파일의 내용을 터미널에 출력하기
CLI으로 만든 폴더와 파일을 GUI로 동일하게 확인할 수 있었습니다.
이번에는 반대로, GUI에서 변경한 내용을 CLI에서 확인합니다.
명령어 cat으로 GUI를 이용해 작성한 내용을 확인합니다. 아래의 내용을 프롬프트에 입력하고, Enter(엔터 키)를 누르세요.
cat hi.txt
명령어 cat으로 텍스트 파일 "hi.txt"를 출력하면, 방금 작성한 이메일이 터미널에 나타납니다. 명령어 cat은 파일의 내용을 터미널에 출력하는 명령어입니다. CLI(Command-Line Interface)는 텍스트를 기반으로 소통하기 때문에, GUI를 이용한 편집기가 실행되지 않습니다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chapter1-1- CLI 명령어(2)
기본적인 명령어 (2)
시작전 준비하기
# '#' 기호는 설명을 위해 사용하였습니다.
mkdir hello
cd hello # 폴더 hello로 진입합니다.
pwd # 현재 위치를 확인합니다.
mkdir bye
touch bye.txt
ls # 폴더와 파일을 출력합니다.
rm: 폴더나 파일 삭제하기
명령어 rm은 폴더나 파일을 삭제할 때 사용합니다. 변경 사항을 확인하기 위해서는, 명령어 ls를 자주 입력하면 도움이 됩니다. 명령어 ls를 입력해 현재 폴더에 어떤 폴더나 파일이 있는지 확인하세요.
ls 입력시 = bye폴더와 bye.txt 텍스트파일이 존재합니다.
명령어 rm으로 파일을 삭제합니다. 명령어 rm의 뜻은 remove(삭제하다)입니다. 명령어 rm으로 삭제한 폴더나 파일은, 휴지통을 거치지 않고 삭제됩니다.
rm bye.txt
ls
# bye 폴더만 출력됩니다.
명령어 rm으로 파일을 지운 뒤 명령어 ls를 입력하면, 폴더 "bye"만 출력됩니다. 남아있는 폴더 "bye"도 삭제합니다.
rm bye
# rm: bye: is a directory
ls
# bye
명령어 rm은 단일 파일을 삭제할 수 있습니다. 만약 폴더를 삭제하려면 옵션을 이용해야 합니다. 명령어 ls에서 옵션을 사용했던 것처럼, 이번에도 대시(-)를 사용하여 옵션을 입력합니다. 사용할 수 있는 옵션은 r과 f입니다
rm -rf bye
ls # 아무것도 출력되지 않습니다.
* 옵션 r은 "recursive"를 뜻하고, 옵션 f는 "force"를 뜻합니다. 지금은 어떤 뜻인지 명확하게 알지 못해도 괜찮습니다. 옵션 r은 폴더를 지울 때 사용하고, 옵션 f는 질문을 받지 않고 지울 때 사용합니다. 우리는 폴더나 파일을 삭제할 때 두 옵션을 같이 사용할 겁니다.
mv: 폴더나 파일의 이름을 변경, 또는 폴더나 파일의 위치 옮기기
명령어 mv는 move의 약자로, 폴더나 파일을 이동할 때 사용합니다. GUI에서 폴더나 파일을 이동하려면 몇 가지 과정이 필요합니다.
- 폴더나 파일에 마우스를 올리고, 마우스 왼쪽 버튼을 꾹 눌러 drag 상태로 만듭니다.
- 선택된 폴더나 파일을 그대로 끌어(drag) 다른 폴더에 놓습니다(drop).
- 폴더나 파일이 다른 폴더로 이동합니다.
이런 방식을 Drag & Drop(드래그 앤 드롭)이라고 합니다.
명령어 mv를 이용하면, 폴더나 파일의 이름을 변경할 수 있습니다. 명령어 mv를 사용하기 위해 필요한 [폴더나 파일의 이름]에는, 변경할 폴더나 파일의 이름을 입력합니다. [도착 폴더의 이름]을 대신해, 변경하고자 하는 파일의 이름을 입력합니다. 폴더 "bye"에 있는 파일 "bye.txt"의 이름을 "helloWorld.txt"로 변경하세요.
# '#' 기호는 설명을 위해 사용하였습니다.
ls # 현재 폴더에 있는 폴더나 파일을 출력합니다.
# bye.txt 파일이 출력됩니다.
mv bye.txt helloWorld.txt
ls
# helloWorld.txt 파일이 출력됩니다.
- 컴퓨터가 파일을 옮기는 방법
- 파일의 내용을 잠시 저장한다.
원래 위치의 파일을 삭제한다.- 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.
cp: 폴더나 파일을 복사하기
* 명령어 pwd를 입력하면, /home/[username]/helloWorld/hello/bye가 나타납니다.
명령어 cp는 copy의 약자로, 폴더나 파일을 복사할 때 사용합니다. 먼저, 파일을 복사합니다. 파일을 복사하기 위해 명령어 cp를 사용하는 경우에는, cp [원본 파일 이름] [복사할 파일 이름]을 프롬프트에 입력합니다.
# '#' 기호는 설명을 위해 사용하였습니다.
ls
# helloWorld.txt 가 출력됩니다.
cp helloWorld.txt hiComputer.txt
ls
# helloWorld.txt hiComputer.txt 가 출력됩니다.
이번에는 폴더를 복사합니다. 폴더를 복사하기 위해 명령어 cd를 이용해 상위 폴더 "hello"로 이동합니다. 다음 명령어를 입력하세요.
# '#' 기호는 설명을 위해 사용하였습니다.
cd ..
ls
# bye가 출력됩니다.
pwd
# (Ubuntu) /home/[username]/helloWorld/hello
# (macOS) /home/[username]/helloWorld/hello
* CLI에서 .은 현재 폴더를 나타냅니다. ..은 현재 폴더(.)를 기준으로, 앞에 .이 하나 더 붙습니다. 이렇게 만들어진 ..은 현재 폴더보다 앞에 있는 폴더를 가리킵니다. .과 ..은 경로를 설명할 때 더 자세히 다룹니다.
# '#' 기호는 설명을 위해 사용하였습니다.
cp -rf bye hi
ls
# bye hi 가 출력됩니다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chpater 1-3 관리자 권한과 경로
절대 경로와 상대 경로
전 챕터인 CLI 명령어(2)에서, 경로를 언급했습니다. 경로는 명령어 pwd로 확인할 수 있습니다.
pwd로 확인할 수 있는 절대 경로와 현재 위치로부터 상대적인 위치를 나타내는 상대 경로로 나뉩니다.
절대 경로
절대 경로는 기준점으로부터의 절대적인 위치를 나타내는데, 이 기준점을 루트 폴더(/)라고 합니다. 정리하면, 절대 경로는 특정 폴더나 파일이 루트 폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지 나타냅니다.
/home/[username]/helloWorld/hello/라는 경로를 예시로 살펴보겠습니다.
루트 폴더(/)에는 폴더 home이 있습니다.
폴더 home으로 진입하면, 폴더 [username]을 확인할 수 있습니다.
폴더 [username]에 진입하면, 폴더 helloWorld가 있고,
폴더 helloWorld에 진입하면 폴더 hello를 발견할 수 있습니다.
이 과정을 한 줄로 줄여놓은 구문(/home/[username]/helloWorld/hello/)이 절대 경로입니다.
상대 경로
상대 경로는 특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타냅니다.
현재 위치한 폴더는 점(.)으로 표현하고, 상위 폴더는 두 개의 점(..)으로 표현합니다.
현재 경로(/Users/[username]/helloWorld/hello/)에 포함된 폴더나 파일을 확인하기 위해,
명령어 ls를 사용할 수 있습니다.
그리고 명령어 ls를 통해 확인되는 폴더나 파일은, 상대 경로로써 ./을 붙여 표현할 수 있습니다.
# '#' 기호는 설명을 위해 사용하였습니다.
mv helloWorld.txt ../../
ls
# hiComputer.txt
cd ../../
pwd
# (Ubuntu) /home/[username]/helloWorld/
# (macOS) /Users/[username]/helloWorld/
ls
# hello helloWorld.txt hi.txt
절대 경로와 상대 경로를 이용하면 CLI를 더욱 풍성하게 이용할 수 있습니다. 이어서 절대 경로의 시작점인 루트폴더(/)와 관리자에 대해 설명합니다.
관리자(root) 권한
주의하세요! 관리자 영역을 실수로 변경하면, 운영체제(Operating System)가 먹통이 될 수 있습니다. 운영체제가 망가지면, 운영체제를 재설치해야 할 수 있습니다.
절대 경로의 기준점인 루트 폴더(/)는 Linux의 관리자 영역입니다.
일반 사용자의 권한으로는 어떤 폴더나 파일도 생성, 변경, 삭제할 수 없습니다.
Linux 관리자의 가장 큰 특징은, 어떤 일이 있더라도 일반 사용자에게 관리자 권한(루트 권한)을 완전하게 넘기지 않습니다.
사용자가 새로운 프로그램을 설치하거나 변경 또는 삭제할 때에는, 관리자 권한이 필요합니다. 사용자가 관리자 권한을 필요로 할 때, 사용자 권한을 이용할 수 있는 명령어 sudo를 설명합니다.
sudo:관리자 권한을 획득하는 명령어
명령어 sudo는 사용자 환경에서, 관리자 권한을 획득하는 명령어입니다.
명령어 sudo는 기본적인 CLI 명령어의 앞에 작성하여, 관리자 권한을 일시적으로 획득하는 명령어입니다.
명령어 sudo는 한시적으로나마 관리자 권한을 가지기 때문에 항상 비밀번호와 함께 사용합니다.
# '#' 기호는 설명을 위해 사용하였습니다.
mkdir justMkdir
sudo mkdir sudoMkdir
password: # 타이핑을 해도 출력이 없습니다. 비밀번호가 출력되지 않더라도, 입력이 정상적으로 이뤄지고 있습니다.
ls
# justMkdir sudoMkdir helloWorld.txt hi.txt
명령어 sudo를 이용해 생성한 폴더의 소유자는 루트입니다. 다시 말해 사용자 권한이 아니라, 관리자 권한으로 생성되었다는 뜻입니다. 반면에, 명령어 sudo를 사용하지 않은 폴더 justMkdir은 사용자 소유의 폴더입니다. 명령어 ls -l을 이용해 차이점을 확인할 수 있습니다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chapter 3. Node js
런타임이란, 프로그래밍 언어가 실행되는 환경, 그리고 Node.js는 JavaScript 런타임입니다.
학습목표
- nvm, Node.js, npm을 설치하고, 버전을 확인할 수 있다.
- 명령어 node를 이용해 JavaScript 파일을 Node.js 런타임에서 실행할 수 있다.
- 과제 시작 전 package.json 파일을 확인하고, npm install을 사용할 수 있다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
'Section1' 카테고리의 다른 글
코드스테이츠 프론트엔드 부트캠프 12일차 (0) | 2023.04.26 |
---|---|
코드스테이츠 프론트엔드 부트캠프 11일차 (0) | 2023.04.25 |
코드스테이츠 프론트엔드 부트캠프 8일차 (0) | 2023.04.20 |
코드스테이츠 프론트엔드 부트캠프 7일차 (0) | 2023.04.19 |
코드스테이츠 프론트엔드 부트캠프 6일차 (2) | 2023.04.18 |