Home Section1, Week2, Day 6 TIL
Post
Cancel

Section1, Week2, Day 6 TIL

Daily to-do list

  • Z. 굿모닝세션
  • C. CLI 기본 명령어
  • L.
  • C. 패키지와 패키지 매니저
  • C. 사용 권한
  • C. 환경 변수
  • C. 심화 학습
  • Z.
  • S. 페어리뷰

계획 단계

학습을 시작하기전 나의 현재 상태를 모니터링 해 봅시다. 아래 두 가지 질문에 대한 답을 천천히 생각해 본 후, 개인 블로그나 노트를 활용하여 기록합니다.

오늘 나의 학습 목표는 무엇인가요?

  • CLI 기본 명령어
    • 리눅스 터미널을 실행할 수 있다.
    • CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
      • GUI의 변경사항을 CLI로 확인할 수 있다.
      • CLI의 변경사항을 GUI로 확인할 수 있다.
    • 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
      • pwd: 현재 위치를 확인하는 명령어
      • mkdir: 새로운 폴더를 생성하는 명령어
      • ls: 폴더나 파일의 목록을 출력하는 명령어
      • open (macOS): 현재 폴더를 파일 탐색기로 여는 명령어
      • cd: 폴더에 진입하는 명령어
      • touch: 새로운 파일을 생성하는 명령어
      • cat: 파일의 내용을 터미널에 출력하는 명령어
      • rm: 폴더나 파일을 삭제하는 명령어
      • mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어
      • cp: 폴더나 파일을 복사하는 명령어
      • sudo: 관리자 권한을 이해할 수 있다.
    • 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
      • /: 루트 디렉토리
      • ~: 홈 디렉토리
    • 절대 경로와 상대 경로의 차이를 이해할 수 있다.fh
      • 절대 경로의 시작이 루트 디렉토리(/)인 것을 이해할 수 있다.
      • 상대 경로의 시작이 현재 디렉토리(.)인 것을 이해할 수 있다.
    • 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.
  • 패키지와 패키지 매니저
    • 패키지와 패키지 매니저 필요성을 이해할 수 있다.
    • 각 운영체제에 맞는 패키지 매니저를 사용할 수 있다.
      • MacOS 운영체제에서 터미널을 통해 Homebrew 패키지 매니저를 설치하고 패키지를 관리하는 명령어를 사용할 수 있다.
        • brew update: 패키지의 업데이트 여부 확인
        • brew outdated: 업데이트 필요한 파일 조회
        • brew upgrade: 프로그램 업그레이드
        • brew info: 프로그램의 정보 확인
        • brew install: 프로그램 설치
        • brew list: 설치된 프로그램 목록 보기
        • brew uninstall: 프로그램 삭제
      • Linux Ubuntu 운영체제에서 사용하는 apt 패키지 매니저에 대해 알고, 명령어를 통해 패키지를 관리할 수 있다.
        • apt update: 패키지의 업데이트 여부 확인
        • apt list --upgradable: 업데이트 필요한 파일 조회
        • apt upgrade: 프로그램 업그레이드
        • apt show: 프로그램의 정보 확인
        • apt install: 프로그램 설치
        • apt list --installed: 설치된 프로그램 목록 보기
        • apt remove: 프로그램 삭제
        • apt search : 패키지 검색
  • 사용 권한
    • 사용 권한과 소유자에 대해 이해하고, 사용 권한을 변경할 수 있다.
      • 파일의 소유자와 파일에 적용된 사용 권한을 확인하고 이해할 수 있다. ls -l
      • 파일에 적용된 사용 권한을 변경할 수 있다. chmod
  • 환경변수
    • 환경변수가 무엇인지 이해한다.
    • 환경변수를 왜 사용하는지 이해한다.
    • 전역 및 지역 환경변수의 차이를 이해한다.
    • 환경변수를 임시적으로 적용할 수 있다.
    • 환경변수를 영구적으로 적용할 수 있다.
    • 환경변수의 개별값을 확인할 수 있다.
    • 환경변수들의 목록을 확인할 수 있다.
  • 심화 학습 자료

오늘 학습할 내용 중에 이미 알고 있는 내용은 무엇인가요? CLI 기본 명령어 조금…

Overview

영화나 드라마에서 천재 해커가 사용하는 프로그램이 바로 터미널입니다. GUI에 친숙하실테지만, 프로그래밍을 배운다면 CLI를 잘 다룰 줄 알아야 합니다. 상대적으로 높은 안정성과 빠른 속도 때문입니다. GUI는 사용자가 쉽게 컴퓨터를 제어할 수 있다는 장점이 있지만, 그래픽에 컴퓨터 자원을 많이 사용할 수밖에 없으며, CLI에 비해 느립니다. 반면, CLI는 화면에 나타날 내용에 그래픽 작업을 거치지 않아도 되기 때문에 컴퓨터의 자원을 적게 사용하며, 더 빠르게 동작합니다.

컴퓨터 제어 방식

명령줄 인터페이스(Command-Line Interface, CLI)- 명령어로 컴퓨터를 제어하는 방식 (웹 서버 운용, git 사용 시 필요)

그래픽 사용자 인터페이스(Graphic User Interface)- 보통 사용자가 쉽게 컴퓨터를 제어할 수 있도록 개발됨

1. CLI 기본 명령어

학습목표

  • 리눅스 터미널을 실행할 수 있다.
  • CLI를 이용한 작업과 GUI 이용한 작업이 동일함을 이해한다.
  • 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
  • 명령어를 사용할 때, 등장하는 키워드에 대해 이해한다.
  • 절대 경로와 상대 경로의 차이를 이해한다.
  • 텍스트 에디터를 이용해 파일을 수정하고, 저장한다.

pwd: print working directory 현재 위치 확인하기

mkdir + 폴더이름: make directories 새로운 폴더 생성

ls: list 특정 폴더에 포함된 파일이나 폴더 확인하기

  • ls -l 폴더나 파일의 포맷을 전부 표현하라는 의미
  • ls -a “all” 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력
  • ls -al 또는 ls -la

세 번째 예시에서, 옵션을 뜻하는 대쉬(dash, -) 뒤에 오는 옵션의 순서는 기능에 영향 X

cd + 폴더 이름: change directory 폴더에 진입하기

touch + 파일 이름: 파일 생성하기

> : 실행 결과를 파일로 저장하기

  • ls > ls.txt를 입력하면 ls.txt에 ls명령어의 실행 결과가 저장됨

echoecho뒤의 내용을 화면에 출력해주는 역할

  • echo hello라고 입력한다면 단순히 화면에 hello를 출력해준다

cat + 파일이름: 파일의 내용을 터미널에 출력하기

rm + 파일이름: remove 파일 삭제하기

명령어 rm은 단일 파일을 삭제할 수 있다. 만약 폴더를 삭제하려면 옵션을 이용해야 rm -rf bye(폴더 bye 삭제)

rm -rf filename옵션 r은 “recursive”를 뜻하며, 옵션 f는 “force”를 뜻합니다.

옵션 r은 폴더를 지울 때 사용하고, 옵션 f는 질문을 받지 않고 지울 때 사용

명령어 rm으로 삭제한 폴더나 파일은, 휴지통을 거치지 않고 삭제됩니다. (단일 파일을 삭제할 수 있음)

mv: move 폴더나 파일의 이름을 변경, 또는 폴더나 파일의 위치 옮기기

명령어 mv뒤에는 순서대로 [폴더나 파일의 이름] [도착 폴더의 이름]를 입력, mv bye.txt bye/(“bye.txt”를 폴더 “bye”로 옮긴다)

mv bye.txt helloWorld.txt(폴더 “bye”에 있는 파일 “bye.txt”의 이름을 “helloWorld.txt”로 변경)

  • 컴퓨터가 파일을 옮기는 방법
    1. 파일의 내용을 잠시 저장한다.
    2. 원래 위치의 파일을 삭제한다.
    3. 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.
  • 컴퓨터가 파일을 옮기는 방법 (폴더나 파일의 이름의 내용과 위치가 같고, 이름만 다른 경우)
    1. 파일의 내용을 잠시 저장한다.
    2. 원래 위치의 파일을 삭제한다.
    3. 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.

cp: copy 폴더나 파일을 복사하기 cp [원본 파일 이름] [복사할 파일 이름], cp helloWorld.txt hiComputer.txt

cp -rf bye hi (폴더 “bye”를 복사해 새로운 폴더 “hi”를 만든다)

2. 관리자 권한과 경로

학습목표

  • 절대 경로와 상대 경로의 차이를 이해할 수 있다.
    • 절대 경로의 시작이 루트 디렉토리(/)인 것을 이해할 수 있다.
    • 상대 경로의 시작이 현재 디렉토리(.)인 것을 이해할 수 있다.
  • 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.

-

2.1. 사용자와 관리자

사용자: 우리가 일상적으로 PC를 켜서 바탕화면에 진입하기 위해 로그인하는 계정

관리자: 사용자가 접근할 수 없는 영역에 접근할 수 있는 높은 권한을 가짐

2.2. 절대 경로와 상대 경로

경로는 명령어 pwd로 확인할 수 있는 절대 경로와, 현재 위치로부터 상대적인 위치를 나타내는 상대 경로로 나뉜다.

절대 경로: 기준점으로부터의 절대적인 위치를 나타내는데, 이 기준점을 루트폴더(/)라고 한다.

상대 경로: 특정 폴더 또는 파일의 위치를 현재 위치를 기준점으로 나타낸다. 현재 위치한 폴더는 점(.)으로 표현하고, 상위 폴더는 두 개의 점(.. )으로 표현

2.3. 관리자(root) 권한

절대 경로의 기준점인 루트폴더(/)는 Linux의 관리자 영역, 일반 사용자의 권한으로는 어떤 폴더나 파일도 생성, 변경, 삭제할 수 없다.

whoami: 현재 로그인된 사용자를 확인하는 명령 사용자 폴더의 경로(Path)는 ~/로 표시된다. 물결 기호(~)는 루트폴더(/)로부터 사용자 폴더(username)까지의 경로를 축약한 형태

sudo: 관리자 권한을 획득하는 명령어(한시적으로나마 관리자 권한을 가지기 때문에 항상 비밀번호와 함께 사용)

2.4. 텍스트 에디터 nano

CLI 환경 에디터 vim, emacs 등이 있다.

nano 실행

아래의 명령어를 통해 nano를 실행시킬 수 있습니다.

1
2
nano hello.java  # hello.java를 nano에서 엽니다.
nano # 그냥 실행할 수도 있습니다.

파일 열기: nono 파일이름

파일 편집 후 종료: ^X 누르면 Save modified buffer (ANSWERIG "No" WILL DESTROY CHANGES) ? 단축키 안내에 따라 YN을 눌러서 저장 여부를 결정

파일 저장: ^O WriteOut nano를 종료하지 않고, 파일을 저장

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

학습목표

  • 패키지와 패키지 매니저 필요성의 이해
  • 각 운영체제에 맞는 패키지 매니저 사용

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

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

패키지 매니저: 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구(설치된 모든 프로그램의 업데이트, 필요 없는 프로그램 제거에도 사용)

3.1. Ubuntu 패키지 매니저 - apt

apt 패키지 매니저의 주요 명령어를 알아봅시다.

  • 패키지 목록 갱신: apt update(관리자 권한 필요)
    • 패키지를 다운로드할 수 있는 여러 저장소의 최신 정보를 업데이트합니다. 새로운 저장소를 추가하거나, 패키지를 설치하기 전, 최신 정보를 갱신합니다.
    • 설치된 프로그램이 새로운 버전으로 변경되지 않습니다.
  • 업그레이드 가능한 패키지 목록을 출력: apt list -upgradable
  • 전체 패키지 업그레이드(버전 업): apt upgrade (관리자 권한 필요)
  • 특정 패키지만 업그레이드(버전 업): apt --only-upgrade install 패키지 이름 (관리자 권한 필요)
  • 패키지 설치: apt install 패키지 이름 (관리자 권한 필요)
  • 설치된 패키지 보기: apt list --installed
  • 패키지 검색: apt search 검색어
  • 패키지 정보 확인: apt show 패키지 이름
  • 패키지 삭제: apt remove 패키지 이름 (관리자 권한 필요)

관리자 권한 사용

패키지 설치/삭제 등의 작업을 진행할 때 sudo 명령어를 이용해서 관리자 권한을 획득해야 한다. 관리자가 아닌데, 설치 명령을 실행할 경우 에러 발생 한다. 관리자 권한이 필요한 경우, sudo라는 명령어가 앞에 붙어야함. 예를 들어, wget이라는 패키지를 설치할 경우,are you root?(에러) sudo apt install wget (입력) 비밀번호 입력 후 설치 계속 함

Unix 기반 운영체제에서는 Ctrl + C 키는 작업을 취소하고, 터미널의 사용자 입력을 다시 되찾아오는 역할을 한다.

3.2. Mac OS 패키지 매니저 - brew

Xcode Command Line Tools 설치 (xcode-select --install)

설치 스크립트 복사

Homebrew Install Homebrew 항목에, 스크립트가 표시되어 있다. 이 내용을 그대로 터미널에 복사/붙여넣기 해서 설치

설치완료 (==> Installation successful! 메세지 포함 되면 완료)

Next steps 부분에서 안내하는 명령어를 터미널에 복사 및 붙여넣기 (echo …)

위 과정이 완료되면 터미널에 brew help 명령어를 입력하여 Homebrew 패키지 매니저가 정상적으로 설치되었는지 확인

brew 명령어

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

애플 실리콘(M1) Mac 사용 시 주의사항

인텔과는 다르게 ARM 아키텍처를 사용하고 있으므로, 인텔 칩 기준으로 만들어진 프로그램을 설치할 때에, 에러를 낼 수 있다. 이를 해결하기 위해먼저 에뮬레이션 환경 Rosetta를 설치 softwareupdate --install-rosetta brew 명령어를 실행시키기 전 arch -x86_64이라고 붙여줘야함

arch -x86_64 brew install 설치할프로그램

4. 사용 권한

학습 목표

  • 사용 권한과 소유자에 대해 이해하고, 사용자 권한을 변경할 수 있다.

4.1. Read, Write, Execute 권한

폴더인지 파일인지 확인하기: 명령어 ls -l 을 프롬프트에 입력하고 Enter

-와 d는 각 not directory(파일)와 directory(폴더)를 나타냄, r, w, x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한을 표시함

4.2. user, group, and other

user: 파일의 소유자, 기본적으로 파일을 만든 사람이 소유자가, 따라서 user를 소유자라고 하기도 한다.

group: 여러 user가 포함될 수 있다. 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖는다. 많은 사람이 파일에 액세스해야 하는 프로젝트가 있다고 가정합니다. 각 user에게 일일이 권한을 할당하는 대신에 모든 user를 group에 추가하고, 파일에 group 권한을 할당할 수 있습니다.

other: 파일에 대한 액세스 권한이 있는 다른 user, 파일을 만들지 않은 다른 모든 user를 의미한다. 따라서 other 권한을 설정하면, 해당 권한을 global 권한 설정이라고 볼 수도 있다.

4.3. chmod: 권한 변경 명령어

명령어 chmod 로 권한을 변경하는 방식

  1. 더하기(+), 빼기(``), 할당(=)과 액세서(accessor) 유형을 표기해서 변경하는 Symbolic method
  2. rwx를 3 bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form

Symbolic method는 액세스 클래스, 연산자, 액세스 타입으로 구분

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

Absolute form은 숫자 7까지 나타내는 3 bits의 합으로 표기

사용자, 그룹, 또는 다른 사용자나 그룹마다 rwx 가 나타나고, 각 영역의 boolean 값으로 표기

PermissionNumber
Read (r)4
Write (w)2
Execute (x)1

Absolute form에서 사용하는 숫자 참고표

#SumrwxPermission
74(r) + 2(w) + 1(x)rwxread, write, execute
64(r) + 2(w) + 0(-)rw-read, write
54(r) + 0(-) + 1(x)r-xread and execute
44(r) + 0(-) + 0(-)r—read only
30(-) + 2(w) + 1(x)-wxwrite, execute
20(-) + 2(w) + 0(-)-w-write only
10(-) + 0(-) + 1(x)—xexecute only
00(-) + 0(-) + 0(-)—-none

5. 환경변수

학습 목표

  • 환경변수가 무엇인지 이해
  • 환경변수를 왜 사용하는지 이해
  • 전역 및 지역 환경변수의 차이를 이해
  • 환경변수를 임시적으로 적용
  • 환경변수를 영구적으로 적용
  • 환경변수의 개별값을 확인
  • 환경변수들의 목록 확인

환경변수는 환경에 따라 프로그램의 동작에 영향을 미치는 값으로 운영체제와 관계없이 지역 환경변수와 전역 환경변수로 분류한다. 또한, Linux와 Mac OS에서는 환경변수를 임시적으로 적용하거나, 영구적으로 적용할 수 있다.

5.1. Linux & Mac OS에서 환경변수 설정하기

환경변수 임시 적용

지역 환경변수 (=) 앞뒤 공백 없이, 공백 있을 경우 값 전체 따옴표

hello=codestates

전역 환경변수 (export)

export urclass=is good

export bad_example=this is bad example

전역 및 지역 환경변수의 개별 값 확인하기 (echo) 환경변수의 앞에 $사용

echo $hello

echo $urclass

echo $bad_example

환경변수 영구 적용하기

환경변수를 영구적으로 적용하면 터미널을 닫거나 재부팅해도 환경변수가 저장되어 사라지지 않는다.

지역 환경변수 영구 적용하기

  1. cd ~를 입력하여 홈 디렉토리로 이동한 다음, ls -al을 통해 홈 내에 존재하는 모든 것들을 숨겨진 파일과 디렉토리까지 조회합니다.
  2. 조회 결과에 따라 아래의 명령어를 입력하여 편집창을 엽니다.
  3. 목록에 .zshrc가 있으면 nano .zshrc를 입력하여 편집창을 엽니다.
  4. 목록에 .bashrc가 있으면 nano .bashrc를 입력하여 편집창을 엽니다.
  5. 텍스트 편집기는 nano, vi등 어떤 것을 사용하셔도 무방합니다.
  6. 파일의 맨 아래로 이동한 다음, 설정하고자 하는 환경변수를 작성하고 저장합니다.
  7. source .zshrc를 입력하여 변경 내용을 적용하고, 내용을 출력해봅시다.

전역 환경변수 영구 적용하기

  1. 먼저, 변경하고자 하는 파일의 권한을 수정하여야 합니다.
    • 여러분이 환경변수를 저장하고자 하는 파일의 이름은 루트 디렉토리(/)의 etc 디렉토리 내에 있는 profile이라는 파일입니다.
    • profile은 기본적으로 수정 권한이 r–r–r–로 설정되어 있어 수정이 불가합니다.
    • sudo chmod 777 /etc/profile을 입력한다음, 여러분의 시스템에 적용되어져 있는 비밀번호를 입력하여 권한을 변경하세요.
  2. nano /etc/profile을 입력하여 입력창을 엽니다.
    • 참고로, 이 명령어는 루트 디렉토리의 etc 내에 있는 profile을 nano 편집기로 여는 명령어입니다.
    • 이 아래로는 지역 환경변수를 설정하는 방법과 유사합니다.
  3. 파일의 맨 아래로 이동한 다음, 설정하고자 하는 환경변수를 작성하고 저장합니다.
  4. source /etc/profile을 입력하여 변경 내용을 적용하고, 내용을 출력해보세요.

    **export 키워드를 통해 생성된 환경변수의 이름과 값을 목록으로 확인하기

6. CLI 명령어 더 알아보기

6.1. 명령어 옵션 -r 과 -f

r은 recursive의 약자로 특정 행동을 순환적으로 반복합니다.

f는 force의 약자로 어떤 행위를 강제합니다.

  • f 명령어를 사용하면 보호되거나 존재하지 않는 파일도 강제로 삭제할 수 있습니다. 그런 이유로 f 명령어를 사용하실 때는 각별히 주의하셔야 합니다.
  • rf 명령어를 합쳐 rf 형태로 쓸 수 있습니다. rm -rf 명령어를 사용하면 민감한 정보를 가진 파일도 무차별적으로 삭제하여 심각한 문제를 일으키는 경우가 생깁니다. 이에 대해 주의하셔야 합니다. 관련 내용을 설명하고 있는 레퍼런스를 첨부합니다.

6.2 cat 명령어 대신 쓰는 명령어

cat 명령어를 이용하면 터미널에서 파일 안에 담긴 내용을 확인할 수 있습니다.

단점- 파일이 담고 있는 내용이 너무 길 경우, 터미널 상에서 내용이 잘려서 나오는 경우가 생기고, 항상 전체가 출력되기 때문에 원하는 정보를 찾기 위해서 때로 시간이 오래 걸립니다.

전체를 열람하지 않고 파일 내용의 부분만 열람할 수 있게 만들어주는 명령어

6.3. 헬프 옵션 사용하기

헬프 옵션(-h, –help)으로 사용법 출력하기

Reference

NANO Editor

VIM for Beginner

Manage file permissions on Unix-like systems

KO)The 50 Most-Used Linux Commands You Should Know

EN)The 40 Most-Used Linux Commands You Should Know

Markdown covert

🔥 데일리 회고 - 점검 및 평가

아래 두 가지 질문에 대한 답을 천천히 생각해 본 후, 개인 블로그나 노트를 활용하여 기록합니다.정규학습시간을 마친 후에는 정규학습시간 전에 개인 블로그나 노트에 적어둔 계획 단계에 대한 답변과, 아래 질문에 대한 답변을 블로그나 노트에 추가로 작성해 봅니다.

오늘 학습 내용 중 새롭게 배운 내용은 무엇인가요?

거의 모든것… 기본 명령어, 사용 권한, 환경변수…

오늘 새롭게 학습한 내용을 다른 사람에게 설명할 수 있나요?

글쎄요..

오늘 학습한 내용 중 아직 이해되지 않은 불확실한 내용은 무엇인가요?

CLI 명령어, 환경변수

이해되지 않은, 불확실한 내용을 보완하기 위해서 나는 무엇을 할 수 있을까요?

CLI 명령어를 실행해 보고, 외운다.

나의 오늘 학습 만족도는 몇점인가요? 🌑🌘🌗🌖🌕 🌖

This post is licensed under CC BY 4.0 by the author.

Section1, Week2, Day 5 TIL

Section1, Week3, Day 7 TIL

Comments powered by Disqus.