코드스테이츠 6일차

안형준·2022년 5월 2일
0

코드스테이츠

목록 보기
6/32
post-thumbnail

1차 학습목표

  1. 리눅스 터미널을 실행할 수 있다.
  2. CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
    GUI의 변경사항을 CLI로 확인할 수 있다.
    CLI의 변경사항을 GUI로 확인할 수 있다.
  3. 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
  4. 명령어를 사용할 때, 등장하는 키워드에 대해 이해할 수 있다.
    /: 루트 디렉토리
    ~: 홈 디렉토리
  5. 절대 경로와 상대 경로의 차이를 이해할 수 있다.fh
    절대 경로의 시작이 루트 디렉토리(/)인 것을 이해할 수 있다.
    상대 경로의 시작이 현재 디렉토리(.)인 것을 이해할 수 있다.
  6. 텍스트 에디터 nano를 이용해 파일을 수정하고, 저장할 수 있다.
명령줄 인터페이스(CLI) : 터미널과 같이 명령어로 컴퓨터를 제어하는 방식
그래픽 사용자 인터페이스(GUI) : 컴퓨터를 사용할 때 적용되는 컴퓨터 제어 방식

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

1234.

컴퓨터에는 사용자와 관리자가 있다. 일반적으로는 사용자로 이용하게 되는데 이러한 이유는 사용자가 관리자 모드로 컴퓨터를 사용하게 되면 각종 해킹에 대한 위험에 대비하기 어려울 뿐만 아니라 조금만 시스템을 잘못 건드려도 큰 문제가 발생할 수 있어서이다.

명령어로 컴퓨터를 제어하는 방식을 명령줄 인터페이스(CLI)라고 한다. 반면, 컴퓨터를 사용할 때 적용되는 컴퓨터 제어 방식은 그래픽 사용자 인터페이스(GUI)라고 한다.

생성하려는 폴더 또는 파일의 이름에 공백이나 특수문자가 있으면, 백슬래시를 이용해 적용한다.

pwd: 현재 위치를 확인하는 명령어
mkdir: 새로운 폴더를 생성하는 명령어
ls: 폴더나 파일의 목록을 출력하는 명령어
ls a : 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력
ls - : 폴더나 파일의 포맷을 전부 표현하라는 의미이다. 하나의 파일 또는 하나의 폴더는 한 줄에 출력되는데, 출력되는 문구 중 d는 출력된 경우는 디렉토리를, -로 출력된 경우는 파일을 나타낸다.
nautilus (Ubuntu), open (macOS): 현재 폴더를 파일 탐색기로 여는 명령어
cd: 폴더에 진입하는 명령어
cd .. : 상위 디렉토리로 돌아가기
cd - : 이전에 있던 디렉토리로 돌아가기
touch: 새로운 파일을 생성하는 명령어
cat: 파일의 내용을 터미널에 출력하는 명령어
rm: 폴더나 파일을 삭제하는 명령어
rm -rf : 폴더 삭제(비어있는 폴더라면 rmdir bye 형태로도 삭제 가능)
mv: 폴더나 파일의 위치를 이동하거나, 이름을 변경하는 명령어
cp: 폴더나 파일을 복사하는 명령어
sudo: 관리자 권한을 획득하는 명령어

5.
절대 경로 : 기준점으로부터의 절대적인 위치를 나타내는데, 이 기준점을 루트폴더(/)라고 한다. 특정 폴더나 파일이 루트 폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지 나타낸다.

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

점(.)은 현재 폴더를, 슬래시(/)는 폴더 내부를 뜻한다. ./는 "현재 폴더 아래의"라는 뜻이다.

2차 학습목표

  1. 패키지와 패키지 매니저 필요성을 이해할 수 있다.
  2. 각 운영체제에 맞는 패키지 매니저를 사용할 수 있다.
    Linux Ubuntu 운영체제에서 사용하는 apt 패키지 매니저에 대해 알고, 명령어를 통해 패키지를 관리할 수 있다.
우분투에서 우클릭하면 붙여넣기 됨

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

3차 학습목표

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

ls -l을 통해 폴더, 파일을 볼 때 그 두개를 구분하기 위해 맨 왼쪽에 -로 시작하는지 d로 시작하는지를 확인한다.

- 와 d 는 각각 not directory와 directory를 나타낸다. 즉 폴더면 d로, 파일이면 - 로 나타난다. 이어지는 r, w, x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한을 나타낸다.

rw-r--r--를 보면 소유자는 읽기(r)와 쓰기(w)가 가능하고, 다른 사용자 그룹은 읽기(r)만 가능하다는 의미이다.

rwx / rwx / rwx
각각 첫번째는 소유자, 두번째는 그룹, 세번째는 다른 사람들

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

명령어 chmod 로 권한을 변경하는 방식은 두 가지가 있는데, 
첫 번째는 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기해서 변경하는 Symbolic method
예를들어
chmod g-r filename 그룹에게 읽기 권한을 삭제한다.
chmod o-w filename other에게 쓰기 권한을 삭제한다.
chmod a=rw hello.java 사용자, 그룹, other 몯두에게 읽기와 쓰기 권한을 부여한다.

두 번째는 rwx를 3 bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form
 숫자 7까지 나타내는 3 bits의 합으로 표기한다.
Read (r)   4
Write (w) 2
Execute (x) 1
예를들어 chmod 744 hello.java는
user에게 rwx를, group과other은 r--로 권한 변경
-rwx/ r--/ r--

4차 학습목표

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

환경변수는 프로그램의 동작에 영향을 미치는 값들을 의미한다.
 예를 들어, A라는 프로그램을 만들었는데, 이 A라는 프로그램은 B라는 폴더에 저장된 어떤 값을 읽어와 작업에 사용한다고 가정하자. 이때, 프로그램 A는 폴더 B의 위치를 파악할 수 있어야 한다. 프로그램에 경로를 입력해주면 그만이지만, 만약 프로그램 A를 다른 사람의 컴퓨터에서 사용한다면 어떻게 될까? 물론, 폴더 B가 우리의 컴퓨터에서와 동일한 경로에 위치한다면 문제없이 폴더 B를 찾을 수 있겠지만, 그렇지 않은 경우 폴더 B를 찾을 수 없어 프로그램 A는 정상적으로 동작할 수 없다. 이처럼 환경에 따라 프로그램의 동작에 영향을 줄 수 있는 값들을 환경변수라고 한다

User에 대한 사용자 변수는 특정 사용자만 사용할 수 있는 지역 환경변수이며, 시스템 변수는 모든 사용자가 사용할 수 있는 전역 환경변수이다.

지역 환경변수 
hello=codestates처럼 = 사이에 공백이 없이 입력한다. 만약, 변수에 공백이 존재할 경우 값 전체를 따옴표로 감싸주어야 한다.

전역 환경변수
export urclass="is good"와 같이 export를 이용하여 추가한다. 지역 환경변수와 마찬가지로  = 사이에 공백이 없어야하고, 저장하고자 하는 변수가 공백을 포함하는 경우에는 값 전체를 따옴표로 감싸주어야 한다.

전역 및 지역 환경변수의 개별 값 확인하기
$는 뒤의 문자열이 환경변수라는 의미를 터미널에 전달한다.
echo $hello
echo $urclass

환경변수 영구 적용하기
[지역 환경변수 영구 적용하기]
1. ls -al을 통해 홈 내에 존재하는 모든 것들을 숨겨진 파일과 디렉토리까지 조회
2. 목록에 .zshrc가 있으면 nano .zshrc를 입력하여 편집창을 연다.
- 목록에 .bashrc가 있으면 nano .bashrc를 입력하여 편집창을 연다.
3. alt + / 또는 shift + g (vim에디터 단축키)를 눌러 아래로 이동한 다음, 설정하고자 하는 환경변수를 작성하고 저장한다.
4. source .zshrc 또는 source .barshrc를 통해 변경 내용을 적용하고, 잘 적용 되었는지 echo를 통해 확인한다.

zshrc bashrc 차이
IOS는 zshrc / 우분투는 bashrc

[전역 환경변수 영구 적용하기]
1. 먼저 변경하고자 하는 파일의 권한을 수정해야 한다.
환경변수를 저장하고자 하는 파일의 이름은 루트 디렉토리(/)의 etc 디렉토리 내에 있는 profile이라는 파일이다.
profile은 기본적으로 수정 권한이 r--r--r--로 설정되어 있어 수정이 불가하다.
그렇기에 sudo chmod 777 /etc/profile을 입력한다음, 비밀번호를 입력하여 권한을 변경해야 한다.
2. nano /etc/profile을 입력하여 입력창을 연다.
참고로, 이 명령어는 루트 디렉토리의 etc 내에 있는 profile을 nano 편집기로 여는 명령어이다.
3. alt + / 또는 shift + g (vim에디터 단축키)를 눌러 아래로 이동한 다음, 설정하고자 하는 환경변수를 작성하고 저장한다.
4. source /etc/profile을 입력하여 변경 내용을 적용하고, 잘 적용 되었는지 echo를 통해 확인한다.
-r -f에 대해 더 알아보자
r은 recursive의 약자로 특정 행동을 순환적으로 반복한다.
f는 force의 약자로 어떤 행위를 강제한다.

예를들어 일반적인 rm 명령어로는 파일을 저장하고 있는 폴더를 삭제하지 못하는데, -r 옵션을 추가하면 파일을 저장하고 있는 폴더도 삭제 가능하다.
f 명령어를 함께 사용하면 보호되거나 존재하지 않는 파일도 강제로 삭제할 수 있다. 그렇기에 f 명령어를 사용할 때는 각별히 주의해야 한다.
r과 f 명령어를 합쳐 rf 형태로 쓸 수 있다. rm -rf 명령어를 사용하면 민감한 정보를 가진 파일도 무차별적으로 삭제하여 심각한 문제를 일으키는 경우가 있어 조심하자```
cat 명령어 대신 쓰는 명령어
at 명령어를 이용하면 터미널에서 파일 안에 담긴 내용을 확인할 수 있다.
그러나 항상 전체 내용을 출력하기 때문에 파일이 담고 있는 내용이 너무 길 경우, 터미널 상에서 내용이 잘려서 나오는 경우가 생기고 항상 전체가 출력되기 때문에 원하는 정볼르 찾기 위해서 때로 시간이 오래 걸린다.
그렇기에 전체를 열람하지 않고 파일 내용의 부분만 열람할 수 있게 만들어주는 명령어가
head 명령어 
tail 명령어
more 명령어
less 명령어

헬프 옵션(-h, –help)으로 사용법을 출력할 수 있다.

오늘은 리눅스에 대한 전반적인 개념을 학습했다. 리눅스에 대해서는 들어만 봤을뿐 따로 사용하거나 공부한적은 없어 어렵게 느껴졌다. 하지만 계속 공부할수록 우리가 일반적으로 사용중인 GUI보다 편한 점도 분명히 있어 배우는 재미가 있었다. 앞으로도 점점 프로그래밍에 익숙해져 배우는 재미가 계속 따라왔으면 정말 좋겠다. 오늘도 고생했고, 내일도 파이팅!

profile
개발 공부

0개의 댓글