코드스테이츠 백엔드 부트캠프 3일차 [Linux]

wish17·2022년 12월 19일
0
post-thumbnail

[SEB BE] Section 1

Linux 기초

CLI 기본 명령어

개요

  • 명령줄 인터페이스(Command-Line Interface, CLI)
    ex) 터미널로 하는 코딩 (모니터와 키보드만 사용하는 제어방식)

  • 그래픽 사용자 인터페이스(Graphic User Interface)
    ex) 윈도우즈 등 (마우스 사용하는 제어방식)

GUI는 사용자가 쉽게 컴퓨터를 제어할 수 있다는 장점이 있지만, 그래픽에 컴퓨터 자원을 많이 사용할 수밖에 없으며, CLI에 비해 느리다. 반면, CLI는 화면에 나타날 내용에 그래픽 작업을 거치지 않아도 되기 때문에 컴퓨터의 자원을 적게 사용하며, 더 빠르게 동작 하기 때문에 CLI를 잘 다룰 줄 알아야 한다.

학습목표

  • 리눅스 터미널을 실행할 수 있다.

  • CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.

    • GUI의 변경사항을 CLI로 확인할 수 있다.
    • CLI의 변경사항을 GUI로 확인할 수 있다.
  • 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.

    • pwd: 현재 위치를 확인하는 명령어
    • mkdir: 새로운 폴더를 생성하는 명령어
    • ls: 폴더나 파일의 목록을 출력하는 명령어
    • open (macOS): 현재 폴더를 파일 탐색기로 여는 명령어
    • cd: 폴더에 진입하는 명령어
    • touch: 새로운 파일을 생성하는 명령어
    • cat: 파일의 내용을 터미널에 출력하는 명령어
    • rm: 폴더나 파일을 삭제하는 명령어
    • mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어
    • cp: 폴더나 파일을 복사하는 명령어
    • sudo: 관리자 권한을 이해할 수 있다.
  • 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.

    • /: 루트 디렉토리
    • ~: 홈 디렉토리
  • 절대 경로와 상대 경로의 차이를 이해할 수 있다.

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

CLI 기본 명령어 (1)

프롬프트(Prompt)

터미널에서 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 프롬프트(Prompt)라고 함.

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

윈도우로 치면 아래 사진과 같은 폴더 탐색기 같은 기능이다.

CLI인 터미널에서는 간단하게 pwd를 프롬프트에 입력하고, Enter를 누르면 현재 경로가 나타난다.

pwd

mkdir: 새로운 폴더 생성하기

명령어 mkdir은 생성할 폴더의 이름을 함께 입력해야 한다.

mkdir folderName

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

명령어 ls는 list의 약자로, 특정 폴더에 포함된 파일이나 하위 폴더의 리스트를 출력한다.

ls

명령어 ls에는 자주 사용하는 옵션 l과 a가 있다.
CLI에서 특정 명령어의 옵션을 사용하는 경우에는 -를 이용해 옵션을 입력한다.

  • ls -l

  • ls -a

  • ls -al 또는 ls -la

위의 세 번째 예시에서, 옵션을 뜻하는 대쉬(dash, -) 뒤에 오는 옵션의 순서는 기능에 영향을 미치지 않는다.

a는 "all"이라는 의미다. 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력한다.

옵션 l은 폴더나 파일의 포맷을 전부 표현하라는 의미
ex)

drwxr-xr-x   # 생략
-rw-r--r--   # 생략

위와 같이 출력되는데 d로 출력된 경우는 디렉토리를, -로 출력된 경우는 파일을 나타낸다. (나머지 rw등은 나중에~)

cd: 폴더에 진입하기

보통 위치 확인 -> 폴더 리스트 확인 -> 열고자 하는 폴더 진입 순서로 들어간다.

# pwd를 이용해 현재 위치를 확인합니다.
pwd
# [사용자명]은 처음 OS를 설치할 때 입력한 사용자 이름입니다.
# (Ubuntu) /home/[사용자명]
# (macOS) /Users/[사용자명]

# ls를 이용해 현재 위치의 모든 폴더와 파일을 확인합니다.
ls
# cd를 이용해 폴더 folderName로 진입합니다.
cd folderName
# pwd를 이용해 현재 위치를 확인합니다.
pwd

touch: 파일 생성하기

touch hi.txt
생성 명령어 파일이름.파일타입

txt = 텍스트(text)

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

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

echo 유어클래스에_가입할_때_사용한_이메일 > hi.txt

echo는 echo 뒤의 내용을 화면에 출력해주는 역할을 한다.

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

cat hi.txt

명령어 cat을 이용하여 터미널에 출력하면, 파일의 모든 내용을 출력한다.
너무 큰 파일을 출력할 때 비효율적일 수 있고, 이때 cat 대신 사용할 수 있는 명령어들도 존재한다. 필요하면 구글링 ㄱㄱ

CLI 기본 명령어 (2)

TIP. CLI를 통해 생성한 파일은 GUI로도 확인할 수 있으며, GUI로 파일을 수정하면 수정 사항을 CLI를 통해서도 확인할 수 있다.

폴더와 파일의 위치를 변경하거나 삭제하는 내용을 학습하기 위해 아래와 같이 입력해 파일을 조금 추가하도록 한다.

mkdir hello
cd hello # 폴더 hello로 진입합니다.
pwd # 현재 위치를 확인합니다.
mkdir bye
touch bye.txt
ls # 폴더와 파일을 출력합니다.

현재 위치는 하위 폴더 "hello"

rm: 폴더나 파일 삭제하기

명령어 rm은 폴더나 파일을 삭제할 때 사용

rm bye.txt
ls
# bye 폴더만 출력됩니다.

bye 폴더도 마저 삭제하자

rm bye
# rm: bye: is a directory
ls
# bye

삭제가 안된다.

명령어 rm은 단일 파일을 삭제할 수 있습니다. 만약 폴더를 삭제하려면 옵션을 이용해야 한다.

rm -rf bye
ls # 아무것도 출력되지 않습니다.

  • 옵션 r은 "recursive"를 뜻하며, 옵션 f는 "force"를 뜻합니다. 지금은 어떤 뜻인지 명확하게 알지 못해도 괜찮다.
  • 옵션 r은 폴더를 지울 때 사용하고, 옵션 f는 질문을 받지 않고 지울 때 사용한다.
  • 앞으로 폴더나 파일을 삭제할 때 두 옵션을 같이 사용할 예정이다. 자세한 내용은 심화 학습 자료or 구글링에서 찾아보자.

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

mv는 move의 약자

연습을 위해 rm으로 삭제한 폴더 "bye"와 파일 "bye.txt"를 다시 생성

mkdir bye # bye 폴더를 생성합니다.
touch bye.txt # bye.txt 파일을 생성합니다.

명령어 mv를 통해 파일 "bye.txt"를 폴더 "bye"로 옮기자.

mv bye.txt bye/
ls
# bye 폴더만 출력된다.

명령어 mv 뒤에는 순서대로 [폴더나 파일의 이름][도착 폴더의 이름]를 입력한다.

bye 폴더 안으로 텍스트 파일이 옮겨진 것을 확인할 수 있었다.

mv의 다른 기능 (이름 바꾸기)

명령어 mv를 이용하면, 폴더나 파일의 이름을 변경할 수 있다.

명령어 mv를 사용하기 위해 필요한 [폴더나 파일의 이름]에는, 변경할 폴더나 파일의 이름을 입력하고 [도착 폴더의 이름]을 대신해, 변경하고자 하는 파일의 이름을 입력한다.

폴더 "bye"에 있는 파일 "bye.txt"의 이름을 "helloWorld.txt"로 변경해보자.

ls # 현재 폴더에 있는 폴더나 파일을 출력합니다.
# bye.txt 파일이 출력됩니다.
mv bye.txt helloWorld.txt
ls
# helloWorld.txt 파일이 출력됩니다.

컴퓨터가 파일을 옮기거나 복사하는 방법

0과 1로 이뤄진 데이터 덩어리를 관리하는 컴퓨터는, 구조적 한계로 인해 내용물을 꺼내어 옮기는 개념이 없다.

따라서 파일을 복사해 원하는 위치에 붙혀넣고 원래 위치에 있는 파일을 삭제하는 방식으로 옮기게 된다. (삭제는 굳이 안하기도 함)

cp: 폴더나 파일을 복사하기

파일 복사 = cp [원본 파일 이름][복사할 파일 이름]

ls
# helloWorld.txt 가 출력됩니다.
cp helloWorld.txt hiComputer.txt
ls
# helloWorld.txt hiComputer.txt 가 출력됩니다.

이번에는 폴더를 복사해보자.
우선 상위폴더로 이동

cd ..
#명령어 cd를 이용해 상위 폴더 "hello"로 이동
ls
# bye가 출력됩니다.
pwd
# (Ubuntu) /home/[username]/helloWorld/hello
# (macOS) /home/[username]/helloWorld/hello

CLI에서 .은 현재 폴더를 나타낸다. ..은 현재 폴더(.)을 기준으로, 앞에 .이 하나 더 붙습니다. 이렇게 만들어진 ..은 현재 폴더보다 앞에 있는 폴더를 가리킵니다.

폴더 "bye"를 복사해 새로운 폴더 "hi"를 만들자

cp -rf bye hi
ls
# bye hi 가 출력됩니다.

각 명령어에 포함된 옵션은 명령어 이름만 입력하거나 -h 또는 --help와 같은 옵션을 통해 확인할 수 있다. or 구글링

관리자 권한과 경로

관리자와 사용자의 차이점, 그리고 경로에 대해 알아보자.

사용자와 관리자

윈도우(Windows)의 초기 버전에는 관리자 권한이 없었다.
정확히는 사용자가 없이, 항상 관리자 권한으로 프로그램을 설치, 변경, 삭제할 수 있었다.

PC가 항상 관리자 권한으로 실행되다 보니, 개발에 대한 지식이 없는 일반 사용자가 해킹당하는 일이 발생했었다.

이러한 해킹으로 부터 보호하기 위해 사용자를 추가하게 되었다.

절대 경로와 상대 경로

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

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

cd ./hi # 현재 폴더 아래의 hi 폴더로 진입하는 명령
pwd
# /home/[username]/helloWorld/hello/hi
ls
# helloWorld.txt hiComputer.txt

대부분의 CLI 명령어는 경로를 인식한다. 현재 폴더 아래에 있는 파일 helloWorld.txt를 폴더 helloWorld로 이동시켜 보겠다. 폴더나 파일을 이동하는 명령어는 mv다.

mv helloWorld.txt ../../
ls
# hiComputer.txt
cd ../../
pwd
# /home/[username]/helloWorld/
ls
# hello helloWorld.txt hi.txt

이어서 절대 경로의 시작점인 루트폴더(/)와 관리자에 대해 알아보자.

관리자(root) 권한

관리자 영역을 실수로 변경하면 운영체제(Operating System)가 먹통이 될 수 있으니 주의를 요한다.

whoami: 현재 로그인된 사용자를 확인하는 명령어

whoami
# [username]

사용자 폴더의 경로(Path)는 ~/로 표시된다. 물결 기호(~)는 루트폴더(/)로부터 사용자 폴더(username)까지의 경로를 축약한 형태다.

사용자가 새로운 프로그램을 설치하거나 변경 또는 삭제할 때에는, 관리자 권한이 필요하다. 사용자가 관리자 권한을 필요로 할 때, 관리자 권한을 이용할 수 있는 명령어 sudo를 알아보자.

sudo: 관리자 권한을 획득하는 명령어

  • 명령어 sudo는 사용자 환경에서, 관리자 권한을 획득하는 명령어다.

  • 명령어 sudo는 한시적으로나마 관리자 권한을 가지기 때문에 항상 비밀번호와 함께 사용한다.

mkdir justMkdir
sudo mkdir sudoMkdir
password: # 타이핑을 해도 출력이 없습니다. 비밀번호가 출력되지 않더라도, 입력이 정상적으로 이뤄지고 있습니다.
ls
# justMkdir sudoMkdir helloWorld.txt hi.txt

위와 같이 관리자 권한의 폴더를 만들 수 있다.

텍스트 에디터 nano

CLI에서 환경에서 유명한 에디터들이 많지만 nana에디터가 가장 사용하기 쉽다.
(vim의 아주 기본적인 사용법 )

nano 실행

터미널에서 아래의 명령어를 통해 nano를 실행시킬 수 있다.

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

  • (A) 파일 이름 안내

  • (B) 파일 편집 화면, 실제로 여기서 텍스트 파일을 편집할 수 있습니다.

  • (C) 사용에 필요한 각종 단축키

    • 사실상 여기에서 대부분의 기능에 대한 도움을 얻을 수 있다. 화면에 표시된 ^X 와 같은 내용은 Ctrl + X 키 조합을 의미한다.

파일 열기

  • nano 실행 후 ^R를 입력

  • 터미널에서 "nano 파일이름"


파일 편집 후 종료

파일 내용을 편집하고 난 후, 아래와 같이 ^X를 누르면 다음과 같은 프롬프트가 등장한다.

Save modified buffer (ANSWERIG "No" WILL DESTROY CHANGES) ?

아래의 단축키 안내에 따라 키보드의 Y 와 N을 눌러서 저장 여부를 결정할 수 있다.


파일 저장

nano를 종료하지 않고, 파일을 저장할 수도 있다.

단축키 모음에 Save가 안 보이지만, ^O WriteOut을 이용하면 된다.


패키지와 패키지 매니저

개요

패키지

패키지는 여러 파일이 담겨있는 하나의 상자다. 윈도우 운영체제에서 '알집'이나 '반디집'이란 프로그램으로, 여러 파일을 모아 하나의 파일로 만들 수 있다. 이렇게 여러 파일을 담고 있는 하나의 파일을 '압축 파일'이라고 한다.

패키지 안에 들어 있는 파일의 구성은 기본적으로 다음과 같다.

  • 프로그램 파일

  • 프로그램 설치 파일

  • 프로그램 설치 설명서

  • 프로그램에 대한 정보를 담은 파일

패키지 매니저

패키지 매니저는 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구다. (스마트폰으로 치면 앱 스토어 느낌)

터미널을 이용하여 패키지 매니저를 설치하고, 간단한 명령어를 통해 패키지 매니저를 사용하는 방법을 학습해보자.


학습목표

  1. 패키지와 패키지 매니저 필요성을 이해할 수 있다.
  2. 각 운영체제에 맞는 패키지 매니저를 사용할 수 있다.
    • 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 : 패키지 검색

Ubuntu 패키지 매니저 - apt

apt 명령어 이용하기

Ubuntu 터미널에서 apt 입력

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 명령어를 이용해서 관리자 권한을 획득해야 한다. (관리자가 아닌데, 설치 명령을 실행할 경우 에러 남)

예를 들어, wget이라는 패키지를 설치할 경우, 다음과 같이 입력해야 한다.

sudo apt install wget

암호를 물어본다. 암호 입력 후, 설치 가능

다음과 같이 중간중간 사용자 입력을 요구하는 경우가 있다. 터미널의 내용 역시 개발 중 디버깅할 때처럼 화면에 표시된 내용을 잘 읽는 것이 중요하다.

혹시 무언가 잘못되고 있다고 느껴지시는 경우

너무 시간이 오래 걸리거나, 뭔가 과정 중에 예상치 못하게 멈춰있는 경우에

Ctrl + C
#강제 종료

강제 종료 할 수 있다.


Action Items

  • wget을 설치해 보세요. wget은 URL을 통해 파일을 다운로드하는 프로그램입니다.

    • 설치 후, 다음 명령을 복사/붙여넣기 해서 실행해 보세요. 해당 디렉토리에 goodjob.txt라는 파일이 만들어졌습니다. 다운로드 받은 파일을 확인해 보세요.
  • 복사: (Ubuntu) Ctrl + Shift + C

  • 붙여넣기: (Ubuntu) Ctrl + Shift + V

wget -O goodjob.txt https://bit.ly/37sJqCo
  • neofetch를 설치해 보고 직접 실행시켜 보자.

neofetch설치 중 아래 에러가 계속 나왔다.
E: Unable to locate package neofetch

구글링 결과 sudo apt update를 하고 다시하니 정상적으로 완료 됐다.


사용 권한

개요

폴더와 파일의 권한으로 폴더인지 파일인지 구분하는 방법과, 폴더나 파일의 사용 권한을 변경하는 방법을 학습해 보자.

학습목표

  • 사용 권한과 소유자에 대해 이해하고, 사용 권한을 변경할 수 있다.
    • 파일의 소유자와 파일에 적용된 사용 권한을 확인하고 이해할 수 있다.___ ( ls -l )
    • 일에 적용된 사용 권한을 변경할 수 있다. ( chmod )

Read, Write, Execute 권한

폴더인지 파일인지 확인하기

임의의 폴더와 파일을 생성하고 비교하며 설명한다.

mkdir linux
nano hello.java

코드를 작성한 다음 Ctrl + X, Y, Enter 를 순서대로 입력하면, 새로운 파일을 저장할 수 있다.

터미널에 출력된 결과 중에서, 가장 왼쪽의 표현을 살펴보자.
폴더이면 d로, 파일이면 - 로 나타난다.

이어지는 r, w, x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한을 나타낸다. 3번에 걸쳐 나타나는 이유는 사용자와 그룹, 나머지에 대한 권한을 표시하기 때문이다.

따라서 파일 hello.java의 권한 rw-r--r--은 소유자는 읽기와 쓰기가 가능하고, 다른 사용자 그룹은 읽기만 가능하다는 의미가 된다.
더 linux의 권한은 rwxr-xr-x 으로, 소유자는 읽기와 쓰기, 실행이 가능하고, 다른 사용자 그룹은 읽기와 실행만 가능하다.


user, group, and other

user:

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

group:

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

other:

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


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

명령어 chmod로 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다.

OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod 로 폴더나 파일의 권한을 변경할 수 있다.

만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어 sudo 를 이용해 폴더나 파일의 권한을 변경할 수 있다.

명령어 chmod 로 권한을 변경하는 방식은 두 가지가 있다.

  • 첫 번째는 더하기(+), 빼기(-), 할당(=)과 액세서(accessor) 유형을 표기해서 변경하는 Symbolic method다.

  • 두 번째는 rwx를 3 bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form다.

Symbolic method

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

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

명령어 chmod 뒤에 변경할 권한을 입력한다. 액세스 클래스의 u, g, o, a를 변경할 조건에 따라 조합하여 입력하고, 연산자와 액세스 타입을 순서대로 입력한다.

다음은 명령어 chmod 를 입력한 예시와 결과다.

chmod g-r filename # removes read permission from group
chmod g+r filename # adds read permission to group
chmod g-w filename # removes write permission from group
chmod g+w filename # adds write permission to group
chmod g-x filename # removes execute permission from group
chmod g+x filename # adds execute permission to group
chmod o-r filename # removes read permission from other
chmod o+r filename # adds read permission to other
chmod o-w filename # removes write permission from other
chmod o+w filename # adds write permission to other
chmod o-x filename # removes execute permission from other
chmod o+x filename # adds execute permission to other
chmod u+x filename # adds execute permission to user
chmod a=rw hello.java # -rw-rw-rw-
chmod u= hello.java # ----rw-rw-
chmod a+rx hello.java # -r-xrwxrwx
chmod go-wx hello.java # -r-xr--r--
chmod a= hello.java # ----------
chmod u+rwx hello.java # -rwx------

액세스 클래스와 연산자, 액세스 타입을 모두 기억해야만 Symbolic method를 이용해 권한을 변경할 수 있다.

Absolute form

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

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

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

만약, user는 rwx 를, group과 other은 r-- 로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용한다.

# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 hello.java # -rwxr--r--

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

파일 권한과 관련된 레퍼런스를 통해 추가적인 학습을 진행해봐도 좋다.


환경변수

개요

PC에 환경변수를 왜 사용하는지, 그리고 어떻게 사용할 수 있는지에 대해 학습을 진행하겠다.

  • Windows
    • 환경변수란?
    • Linux & Mac OS에서 환경변수 설정하기
    • Windows에서 환경변수 설정하기

학습 목표

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

환경변수란?

환경변수는 프로그램의 동작에 영향을 미치는 값들을 의미한다.

ex) A프로그램을 동작시키는데 B프로그램의 데이터가 필요한 경우


Windows에서 환경변수 설정하기

Windows에서는 환경변수를 영구적으로만 설정할 수 있다. 즉, 한 번 설정해두면 사용자가 삭제하지 않는 이상 환경변수가 사라지지 않는다.

환경변수 설정창 열기

  1. 환경 변수를 검색하여 '시스템 환경 변수 편집'을 연다.

  1. 환경 변수를 눌러준다.

  1. 아래의 창에서 환경변수를 설정할 수 있다.
  • User에 대한 사용자 변수는 특정 사용자만 사용할 수 있는 지역 환경변수이며, 시스템 변수는 모든 사용자가 사용할 수 있는 전역 환경변수다.


환경변수 추가하기

  1. 새로 만들기를 누르고, 환경변수 이름과 값을 입력한다.

  1. 확인을 누르면 변경사항이 적용된다. (확인을 누르지 않으면 변경 사항이 저장이 되지 않음)

  2. cmd를 검색하여 연 다음, set 명령어를 입력하여 환경변수가 제대로 설정되었는지 확인한다.


심화 학습

CLI 명령어 더 알아보기

명령어 옵션 -r 과 -f

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

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

ex) 파일A가 들어있는 폴더A가 있다고 하자.
rm 명령어를 통해 폴더A를 삭제하고자 하면 오류가 추력되며 삭제가 안된다. 이때 -r 옵션을 추가하면 파일을 저장하고 있는 폴더도 삭제가 가능하다.

  • rm - f 명령어를 사용하면 보호되거나 존재하지 않는 파일도 강제로 삭제할 수 있다. 그런 이유로 f 명령어를 사용하실 때는 각별히 주의해야 한다.

  • r과 f 명령어를 합쳐 rf 형태로 쓸 수 있다. rm -rf 명령어를 사용하면 민감한 정보를 가진 파일도 무차별적으로 삭제하여 심각한 문제를 일으키는 경우가 생긴다. 따라서 위와 마찬가지로 주의해야한다. (관련 내용을 설명하고 있는 레퍼런스 가장 아랫부분을 참고하라)

  • rm 명령어 뿐만 아니라 cp와 같은 다른 명령어에도 f 옵션과 r 옵션을 적용할 수 있다.


cat 명령어 대신 쓰는 명령어

cat 명령어를 이용하면 터미널에서 파일 안에 담긴 내용을 확인할 수 있다. 그러나 항상 전체 내용을 출력하기 때문에 생기는 단점들이 있다.
(양이 너무 낳아서 내용이 잘려서 나오거나 정보를 찾기 위해 시간이 오래 걸리는 등)

전체를 열람하지 않고 파일 내용의 부분만 열람할 수 있게 만들어주는 명령어 레퍼런스를 첨부한다.

  • head 명령어

    • 텍스트로된 파일의 앞부분을 지정한 만큼 출력하는 명령어
  • tail 명령어

    • 파일의 마지막 행을 기준으로 지정한 행까지의 파일내용 일부를 출력해주는 명령어 (기준 값 마지막 10줄)
  • more 명령어

    • 파일을 읽어 화면에 화면 단위로 끊어서 출력하는 명령어
    • 위에서 아래 방향으로만 출력 되기 때문에, 지나간 내용을 다시 볼 수 없는 단점이 있다.
  • less 명령어

    • 파일을 읽어 화면에 출력하는 명령어
    • more 명령어는 위에서 아래 방향으로만 출력 돼 지나간 내용을 다시 볼 수 없지만, less는 한 번에 보여지는 만큼만 읽어서 출력하기 때문에 대용량의 파일을 열어 볼 때 빠르게 사용 할 수 있다.

헬프 옵션 사용하기

터미널에서 '도움말' 역할을 하는 명령어 옵션이 있다. 아래 레퍼런스에서 자세하게 소개되어 있다.


0개의 댓글