[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(한화면)}
    lessmore가 위에서 아래로만 출력되어 지나간 내용을 볼 수 없지만 less는 자유롭게 움직여서 확인할 수 있다.
    manman + [명령어] 명령어의 manual을 상세히 확인
    • 컴퓨터의 파일 옮기는 방식 (move & copy)
      1. 파일의 내용을 임시 저장
      2. 원래 위치의 파일 삭제
      3. 도착 폴더에 1의 내용으로 새로운 파일 생성 ***
    • 절대경로&상대경로
      pwd
      /home/user/
      cd ./ #/home/user 상대
      cd ../ #/home 상대
      cd /home # /home 절대
      
  • 관리자권한

    초기에 항상 관리자 권한으로 사용되다보니 일반사용자가 정보를 탈취당하는 일(해킹 등)이 발생한다.

    • MS 악성코드와 프로그램이 충돌하여 블루스크린 등을 방지하기 위해 MS사는 UAC(사용자계정컨트롤)을 도입하였다. 이는 관리자와 일반 사용자를 구분하여 사용자가 모르는 사이에 시스템설정을 변경하는 악성코드를 접근권한으로 막는다.
    • Linux 리눅스 기반의 Ubuntu에서는 사용자가 관리자 권한에 접근할 수 없도록 구분하였지만, 프로그램 설치 변경 삭제에는 관리자 권한이 필요하므로 권한을 빌리는 명령이 존재한다.

      관리자(root) ‘/’ 루트 폴더는 Linux 관리자의 영역이다. 그러므로 일반사용자의 실수로 인해 발생할 수 있는 에러로 운영체제를 보호하기 위해 폴더나 파일을 생성, 변경, 삭제 불가능하게 설정되어있다.

      sudosu
      super(substitute) user dosu(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 권한을 변경하는 명령.
      폴더나 파일의 소유자가 다를 경우 관리자 권한을 획득하여 변경하여야 한다.

      1. Symbolic method

        클래스연산자타입
        u (user)+ (add)r (read)
        g (group)- (remove)w (write)
        o (other)= (set)x (execute)
        a (all)  
         chmod go-wx hello.java
        
      2. Absolute from

        권한Number
        Read4
        Write2
        Execute1
         chmod 755 hello.java
        
  • 환경변수

    환경에 따라 프로그램의 동작에 영향을 줄 수 있는 값들. 환경변수에 따른 문제를 해결하고자 OS는 환경변수를 설정하고 프로그램이 환경변수를 사용할 수 있도록 돕는다.

    • 지역 환경변수
      환경변수를 생성한 사용자만 사용할 수 있다.
    • 전역 환경변수
      모든 사용자가 사용할 수 있는 환경변수
    1. 임시 환경변수 터미널을 종료하면 자동으로 삭제된다.

       # 임시 지역환경변수
       hello=codestates
      
       # 임시 전역환경변수
       export urclass="is good"
       export bad_example=this is bad example
      
       echo $hello
       echo $urclass
       echo $bad_example
       # $ 달러사인은 환경변수라는 의미를 터미널에 전달
      
    2. 영구 환경변수

       # 영구 지역환경 변수
       # 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