본문 바로가기
Backend boot camp/Session1

[Linux] 기초

by orioncsy 2022. 9. 6.

0. CLI 기본 명령어

개요

  • I/O : 컴퓨터를 조작하기 위한 입출력 장치
  • 리눅스 환경 CLI로 수많은 서버 컴퓨터에서 해당 컴퓨터와 소통 가능
  • 학습 목표
    • 리눅스 터미널 실행
    • CLI와 GUI 작업 동일
    • 리눅스 터미널의 기본 명령어 이해
    • 명령어 키워드 이해
    • 절대 경로 상대 경로 이해
    • 텍스트 에디터 nano로 파일 수정 및 저장
  • 두 가지 학습 이유
    • AWS에서 대여하여 서버를 구성할 때 리눅스 운영체제 사용
    • git을 사용할 때 명령어 사용

CLI 기본 명령어 1

  • 터미널 실행
    • Window - WSL2 실행
    • MacOS - 런치패드 혹은 스포트라이트에서 터미널 실행
    • Ubuntu - ctrl + alt + T or 대시 홈에서 찾기
  • 프롬프트(prompt)
    • 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
  • pwd(print working directory): 현재 위치 확인하기
    • 현재 디렉터리 위치 확인
  • mkdir(make directory) : mkdir + 생성할 디렉토리명
    • directory 생성
  • ls(list) : 현재 디렉터리 내 파일이나 하위 디렉터리 목록 출력
    • ls -a, ls -l, ls -al or ls -la
    • a(all) 옵션은 숨긴 파일이나 디렉터리 모두 출력
    • l 옵션은 폴더나 파일 포맷 전부 표현
    drwxr-xr-x   
    -rw-r--r--   
    
    • 첫 번째는 d or - 로 표현 d는 디렉터리, -는 파일
    • 그다음 세 개는 유저, 그룹, 모든 유저에 대한 권한
  • cd(change directory) : 폴더 진입
    • ../ 이전 디렉터리
  • touch : 파일 생성
  • : 실행 결과 파일로 저장
    • echo + 내용 : 내용을 출력
    • echo + 내용 > 파일 : echo로 출력된 내용을 파일로 저장
  • cat : 파일 내용 출력

CLI 기본 명령어 2

  • rm(remove) : 폴더나 파일 삭제
    • 휴지통을 거치지 않고 바로 삭제
    • 단일 파일만 삭제 가능해서 폴더는 옵션 사용
    • r(recursive) 폴더 지울 때 사용
    • f(force) 질문을 받지 않고 삭제
  • mv(move) : 폴더나 파일 위치 변경 혹은 이름 변경
    • mv + [폴더나 파일명] + [도착 폴더 이름]
    • 도착 폴더 이름에 파일명을 쓰면 이름 변경 가능
  • 컴퓨터가 파일 복사나 옮기는 방법
    • 기존 파일을 임시 저장→ 기존 파일 삭제 → 새로운 파일 생성 및 임시 저장 내용 쓰기
    • 복사는 기존 파일 삭제 과정만 없다.
  • cp(copy) : 폴더나 파일 복사
    • cp + [원본 파일] + [복사할 파일]

관리자 권한과 경로

  • 사용자와 관리자
    • 관리자 권한으로 실행하면 악성코드에 침해당할 수 있음
    • 블루스크린은 두 프로그램의 충돌로 운영체제 설정을 서로 다르게 하여 일어남
    • MS의 사용자 계정 컨트롤은 악성코드가 실행되는 것을 보호하기 위해 접근 권한을 막음
    • 리눅스 기반 ubuntu에서도 사용자가 권리자 접근을 하기 위해서 특정 명령어를 사용
  • 절대 경로와 상대 경로
    • 절대 경로 : 기준점으로부터 절대적인 위치, 기준점은 루트 폴더(/)
      • ubuntu - /home/[username]
      • macOS - /Users/[username]
    • 상대 경로 : 현재 위치를 기준점으로 한 상대 위치, 현재 폴더(.)
      • ../ : 상위 폴더
  • 관리자(root) 권한
    • 루트 폴더(/)는 linux의 관리자 영역
      • 일반 사용자는 파일 생성, 변경, 삭제 불가
      • 프로그램 생성, 변경, 삭제에 대해서만 관리자 권한 대여
      • whoami 명령어로 사용자 확인
      • 사용자는 폴더의 형태로 존재 home/ 이나 Users/로 확인
      • 사용자 폴더의 경로는 ~로 표시
      • ~/는 사용자 폴더까지 경로 축약
    • sudo : 관리자 권한 획득 명령어

Text editor nano

  • CLI의 에디터는 vim, emacs 등이 있지만 nano 간단
    • 위에 파일 이름
    • 중간 파일 편집 화면
    • 아래 단축키
  • 파일 열기
    • nano로 들어가서 ^R 후에 ^T로 탐색해서 방향키로 찾기(ctrl = ^)
    • nano + 파일명 명령어로 들어가기
  • 파일 편집 후 종료
    • ^X로 나가기
    • save modified buffer?라고 저장여부를 묻는다.
  • 파일 저장
    • ^O(write out으로 저장 가능)

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

개요

  • 패키지와 패키지 매니저
    • 패키지: 파일들을 모아 놓은 압축 파일
      • 프로그램 파일
      • 프로그램 설치 파일
      • 프로그램 설치 설명서
      • 프로그램 정보 파일
    • 패키지 매니저
      • 패키지의 저장 위치 정보를 저장
      • 패키지 다운로드해 설치 프로그램 실행
      • 설치된 프로그램 업데이트 및 제거
    • 운영체제에 따른 패키지 매니저
      • window → ubuntu -apt
      • ubuntu → apt
      • macOS → brew
  • 학습 목표
    • 패키지와 패키지 매니저 필요성
    • 패키지 매니저 사용
      • macOS
      • brew update: 패키지의 업데이트 여부 확인
      • brew outdated: 업데이트 필요한 파일 조회
      • brew upgrade: 프로그램 업그레이드
      • brew info: 프로그램의 정보 확인
      • brew install: 프로그램 설치
      • brew list: 설치된 프로그램 목록 보기
      • brew uninstall: 프로그램 삭제
      • Linux ubuntu
      • apt update: 패키지의 업데이트 여부 확인
      • apt list --upgradable: 업데이트 필요한 파일 조회
      • apt upgrade: 프로그램 업그레이드
      • apt show: 프로그램의 정보 확인
      • apt install: 프로그램 설치
      • apt list --installed: 설치된 프로그램 목록 보기
      • apt remove: 프로그램 삭제
      • apt search : 패키지 검색

Ubuntu 패키지 매니저 - apt

  • apt 명령어 이용
    • ubuntu는 기본적으로 apt 사용 가능
    • apt 명령어로 입력하면 명령어 확인 가능
  • 관리자 권한 사용
    • sudo apt install [package name]
    • 문제 생기면 ctrl + C로 종료 가능
  • Action item
    • sudo apt install wget
    • wget -O + [파일명 지정] + [URL]로 웹에서 파일 다운로드 가능
  • 학습도구 zoom 설치
    • wget으로 파일 다운로드 url을 가져와서 다운로드
    • apt install을 통해 설치

MacOS 패키지 매니저 - brew

  • Xcode Command Line Tool 설치
    • xcode-select —install
  • 설치 스크립트 복사
    • Homebrew 사이트에서 주소 복사
    • 터미널에서 설치
    • next step이 있는 경우는 지시대로 설치
    • brew help를 통해 확인
  • 애플 실리콘(M1) 맥
    • softwareupdate —install-rosetta
    • arch -x86_64 brew install + [file name]으로 설치

2. 사용 권한

개요

  • 학습 목표
    • 사용 권한과 소유자 확인 - ls -l
    • 사용 권한 변경 - chmod

Read, Write, Exceute 권한

  • 폴더, 파일 구분하기
    • owner : 파일을 만든 소유자
    • group : 여러 user를 포함한 group
    • other : 파일에 대한 접근 권한이 다른 사용자
    • 사용자와 소유자가 같을 경우 가능
    • symbolic method : chmod og=rx [filename]
    • chmod : 권한 변경
    • absolute form : chmod 641 [filename]

3. 환경 변수

개요

  • 학습 목표
    • 환경 변수와 그 목적 이해
    • 전역과 지역 환경 변수 차이
    • 환경 변수 임시 혹은 영구적 적용
    • 환경 변수 값 확인
    • 환경 변수 목록

환경 변수란?

  • 프로그램 동작에 영향을 미치는 값
  • 환경에 따라서 영향을 줄 수 있는 값

Linux/MacOS 환경 변수 설정

  • 지역 환경 변수 VS 전역 환경 변수
    • 지역 환경 변수 : 변수를 생성한 특정 사용자만 사용 가능
    • 전역 환경 변수 : 모든 사용자가 사용 가능
  • 임시 환경 변수 설정
    • 터미널 종료하면 환경 변수 자동 삭제
    • 지역 환경
      • hello=world
      • 공백이 없어야 하고 값에 공백이 있다면 따옴표로 감싸다
    • 전역 환경
      • export hello =”the world”
    • 환경 변수 값 확인
      • echo $hello
  • 영구 환경 변수 설정
    • 지역 환경
      • cd ~으로 홈 사용자 디렉터리에 간다
      • ls -al로 입력, 목록에서 .bashrc나 .zshrc 중에 하나가 있다
      • nano .bashrc로 편집
      • 맨 아래에 환경 변수 입력(export로)
      • 저장하고 나와서 source .bashrc로 변경사항 적용
    • 전역 환경
      • sudo chmod 777 /etc/profile(기본 444로 설정되어 있다)
      • nano /etc/profile 로 편집
      • 맨 아래에 환경 변수 입력(export로)
      • 저장하고 나와서 source /etc/profile로 적용
  • export로 선언된 환경 변수 이름과 값 목록
    • export 명령어를 써서 확인
    • export로 선언한 전역, 지역 환경 변수 모두 확인 가능

Window 환경 변수 설정

  • 환경 변수 영구 설정만 가능
  • 환경 변수 설정 창 열기
    • 시스템 환경 변수
    • 환경 변수 버튼 누르고 설정
    • user에 대한 사용자 변수는 지역 환경 변수, 시스템 변수는 전역 환경 변수
  • 환경 변수 추가
    • 새로 만들기 누르고 이름 값 입력
    • 확인 눌러 적용
    • cmd에서 set 명령어로 설정 확인

4. 심화 학습 자료

CLI 명령어 추가

  • 명령어 옵션 -r과 -f
    • r은 recursive로 순차적으로 반복하여 실행(폴더 rm, cp 할 때 사용)
    • f는 force로 강제로 실행(존재하지 않거나 보호되는 파일도 실행, 주의)
  • Cat 대체 명령어
    • head : 앞부분부터 -n(행) -c(바이트)까지 출력
    • tail : 마지막 -n(행) -c(바이트) 출력
    • more : enter를 입력하면 한 줄씩 출력, space bar는 한 화면씩 출력
    • less : more와 같지만 방향키를 사용 가능하고 위로 올라가서 볼 수도 있음

5. 추가 학습

  • 리눅스 명령
    • cmatrix
    • sl
    • cacafire
    • asciiquarium
    • tree
  • linux - 펭귄 이름 턱스
  • 리누스 토르발즈
    • 펭귄에게 물려서 펭귄이 좋아져서 로고로 선정
    • unix 기반으로 만들었다 / git도 만들었다
  • ubuntu가 가장 많이 사용하는 버전
    • 남아프리카에 반투족 언어인데 사람과의 관계 (네가 있으니 내가 있다)
    • 무료로 사용하고 누구나 수정 가능한 것이 철학
    • 사양이 낮아도 잘 적용되고 무료라 서버에 많이 사용된다
  • CLI : 빠르고 가볍고 안정적 /명령어를 알아야 함
  • GUI : 무겁고 느리고 불안정적
  • OS : 프로그램과 하드웨어 사이에 매개체 역할
  • OS 구조
    • kernel & shell 구조
    • 터미널 - 쉘 - 커널 - 하드웨어 - 커널 - 쉘 - 터미널
  • 권한
    • 다중 사용자 권한 chmod
  • 경로
    • 절대 경로 vs 상대 경로
  • man + [명령어] : 명령어 정보 찾기
  • rmdir로 빈 디렉터리 제거 가능
  • clear 하면 내용 다 지울 수 있다

'Backend boot camp > Session1' 카테고리의 다른 글

[JAVA]기초 - 변수, 타입, 문자열, 연산자, 콘솔 입출력  (0) 2022.09.06
[Git] 기초  (0) 2022.09.06
[Publishing]HTML, CSS  (0) 2022.08.23
Development  (0) 2022.08.21
Learn how to learn  (0) 2022.08.19