[TIL] 코드스테이츠 SEB BE Day 5
💡 Today I Will Learn
- CLI
- 패키지와 패키지 매니저
- Permission, 환경변수
✏️ Summary
CLI
- GUI(Graphic User Interface) 보다 CLI(Command Line Interface)를 사용.
- 상대적으로 높은 안정성과 빠른 속도. 즉 화면에 나타낼 내용을 그래픽 작업하지 않기 때문에 자원을 적게 사용하고 빠르게 동작.
- GUI는 쉽게 조작할 수 있지만 자원을 많이 사용하여 느리다.
CLI는 여러 측면에서 유리하다. 예로 AWS의 클라우드 컴퓨팅처럼 대량의 서버 컴퓨터가 필요하다면 GUI를 적용하기위해 서버 컴퓨터 마다 I/O소스를 부착하는 일은 불가능하다.
GUI가 없어도 CLI를 통해 서버 컴퓨터로 접속을 요청해 요청한 컴퓨터의 모니터로 서버 컴퓨터와 소통한다.
Linux 명령
명령어 설명 pwd 현재 작업중인 폴더의 위치 (print working directory)
-l: 폴더나 파일의 포맷을 전부 표현
-a: 숨어있는 폴더나 파일을 포함한 모든 항목 출력mkdir 폴더 생성 (make directory) ls 특정 폴더에 포함된 파일이나 하위 폴더 리스트 출력 (list) cd 다른 폴더로 이동 (change directory) touch 빈 새로운 파일 생성 cat 파일 내용을 터미널에 출력 (concatenate) rm 폴더나 파일을 삭제 (remove)
-r: 폴더삭제(reculsive: 재귀적으로 내부까지 삭제)
-f: 질문 받지 않고 지울 때 (force)mv 파일이름 변경 or 폴더나 파일 위치 변경 (move) cp 폴더나 파일을 복사 (copy)
rm과 동일한 옵션 공유명령어 설명 head -n: 파일의 앞부분을 지정한 만큼 출력 tail -n: 파일의 뒷부분을 지정한 만큼 출력 more -n +n: 위에서 아래로 출력 {Enter(한줄), Spacebar(한화면)} less more가 위에서 아래로만 출력되어 지나간 내용을 볼 수 없지만 less는 자유롭게 움직여서 확인할 수 있다. man man + [명령어]
명령어의 manual을 상세히 확인- 컴퓨터의 파일 옮기는 방식 (move & copy)
- 파일의 내용을 임시 저장
- 원래 위치의 파일 삭제
- 도착 폴더에 1의 내용으로 새로운 파일 생성 ***
- 절대경로&상대경로
pwd /home/user/ cd ./ #/home/user 상대 cd ../ #/home 상대 cd /home # /home 절대
- 컴퓨터의 파일 옮기는 방식 (move & copy)
관리자권한
초기에 항상 관리자 권한으로 사용되다보니 일반사용자가 정보를 탈취당하는 일(해킹 등)이 발생한다.
- MS 악성코드와 프로그램이 충돌하여 블루스크린 등을 방지하기 위해 MS사는 UAC(사용자계정컨트롤)을 도입하였다. 이는 관리자와 일반 사용자를 구분하여 사용자가 모르는 사이에 시스템설정을 변경하는 악성코드를 접근권한으로 막는다.
- Linux 리눅스 기반의 Ubuntu에서는 사용자가 관리자 권한에 접근할 수 없도록 구분하였지만, 프로그램 설치 변경 삭제에는 관리자 권한이 필요하므로 권한을 빌리는 명령이 존재한다.
관리자(root) ‘/’ 루트 폴더는 Linux 관리자의 영역이다. 그러므로 일반사용자의 실수로 인해 발생할 수 있는 에러로 운영체제를 보호하기 위해 폴더나 파일을 생성, 변경, 삭제 불가능하게 설정되어있다.
sudo su super(substitute) user do su(swtich user / substitute user) 관리자 권한을 빌려 실행 유저를 변경 whoami # [username] # 현재 사용자가 root인지 아닌지 확인할 수 있다.
패키지와 패키지 매니저
- 패키지
여러파일을 모아 하나의 파일로 저장하고 있는 압축파일.- 프로그램파일
- 프로그램 설치파일
- 프로그램 설치 설명서
- 프로그램에 대한 정보를 담은 파일
정보를 담은 파일에는 A파일을 설치하기 위해 B파일이 필요하다는 정보도 함께 담겨있으므로 B->A 순으로 설치하게된다.
패키지 매니저
패키지의 관리를 편리하게 해주는 도구이다. 모든 패키지의 저장소 위치를 저장하고 있으며 사용자가 패키지 설치를 요청하면 패키지 매니저가 그 위치를 찾아 설치 프로그램을 실행하여준다. 더하여 업데이트나 삭제까지 지원한다.apt 명령
우분투의 패키지 매니저명령어 설명 sudo apt update 패키지들의 최신정보 업데이트(패키지 설치 전 최신정보로 갱신)
다만, 설치된 프로그램이 새로운 버전으로 변경되는 것이 아니다.apt list –upgradable 업그레이드 가능한 패키지 목록 sudo apt upgrade 전체 패키지 업그레이드 apt –only-upgrade install [패키지명] 선택한 패키지 업그레이드 sudo apt install [패키지명] 패키지 설치 apt list –installed 설치된 패키지확인 apt search [검색어] 패키지 검색 apt show [패키지명] 패키지 정보확인 sudo apt remove [패키지명] 패키지 삭제
- 패키지
Permission
(d-)/rwx/rwx/rwx type/user/group/other
chmod
폴더나 파일의 rwx 권한을 변경하는 명령.
폴더나 파일의 소유자가 다를 경우 관리자 권한을 획득하여 변경하여야 한다.Symbolic method
클래스 연산자 타입 u (user) + (add) r (read) g (group) - (remove) w (write) o (other) = (set) x (execute) a (all) chmod go-wx hello.java
Absolute from
권한 Number Read 4 Write 2 Execute 1 chmod 755 hello.java
환경변수
환경에 따라 프로그램의 동작에 영향을 줄 수 있는 값들. 환경변수에 따른 문제를 해결하고자 OS는 환경변수를 설정하고 프로그램이 환경변수를 사용할 수 있도록 돕는다.
- 지역 환경변수
환경변수를 생성한 사용자만 사용할 수 있다. - 전역 환경변수
모든 사용자가 사용할 수 있는 환경변수
임시 환경변수 터미널을 종료하면 자동으로 삭제된다.
# 임시 지역환경변수 hello=codestates # 임시 전역환경변수 export urclass="is good" export bad_example=this is bad example
echo $hello echo $urclass echo $bad_example # $ 달러사인은 환경변수라는 의미를 터미널에 전달
영구 환경변수
# 영구 지역환경 변수 # 1. 홈 디렉토리에 .zshrc 또는 .bashrc를 편집 # 2. 맨 아랫줄에 원하는 환경변수를 작성하고 저장한다. source .bashrc(.zshrc) # 3. 명령으로 변경내용을 적용
# 영구 전역환경 변수 # 1. '/etc/profile' 의 권한을 수정한다. chmod 777 /etc/profile # 2. 이 후 지역변수와 동일하게 설정한다. source /etc/profile # 3.명령으로 변경내용을 적용
- Linux
export 명령으로 OS내 이미 설정된 환경변수 및 export로 설정한 환경변수의 목록을 확인할 수 있다. - Windows
set 명령으로 환경변수를 확인할 수 있다.
- 지역 환경변수
📌 정리
Linux는 평소에 많이 사용하지는 않았지만 AWS EC2에 Linux를 올려서 사용했던 것이 많이 도움이 되었다. 학습 진행하면서 막히는 부분은 없었지만 패키지 설치전 sudo apt update
를 반드시 사용하여 패키지 정보를 최신버전으로 갱신해야 sudo apt install
이 정상적으로 작동하는 것을 확인했다👍
내일 배우는 수업이 현재 관심이 많은 Git에 대한 기술들이다. 특히 페어프로그래밍으로 workflow를 진행하여 간단한 협업을 구성하는 실습이 가장 기대된다. 아무래도 master 브랜치 하나로 작업하던 내겐 정말 소중한 경험이 될 것이라 확신한다🌈
🎯 Tomorrow
- git 기초
- git 심화
- git workflow - Pair
- git command - Quiz
Back to [TIL] 코드스테이츠 SEB BE Day 4