Home [CodeStates] Backend 6일차 | Linux 기초
Post
Cancel

[CodeStates] Backend 6일차 | Linux 기초

오늘..늦잠을 자서 15분을 지각했다..너무 슬프다..

Linux

  • 명령줄 인터페이스(Command-Line Interface, CLI) : 명령어로 컴퓨터를 제어하는 방식
  • 그래픽 사용자 인터페이스(Graphic User Interface, GUI) : 일반적으로 컴퓨터를 사용할때 적용되는 방식

터미널

  • pwd(print working directory) : 현재위치 확인. 터미널에 pwd를 입력후 enter를 누르면 현재 작업중인 폴더의 위치를 출력한다.
  • mkdir(make directories) : 현재 작업중인 폴더에 새로운 폴더 생성.
  • ls(list) : 특정 폴더에 포함된 파일이나 하위폴더리스트 출력.
    • ls에는 자주 사용하는 옵션 l, a가 있음
    • ls -l : 가장 왼쪽에 출력되는 두 글자 d, - 를 확인 가능.
      • d : 디렉토리
      • - : 파일
    • ls -a : a는 all이라는 의미. 숨어있는 폴더나 파일을 모두 출력.
    • ls -al 혹은 ls -la
  • ll 더 편하고 가독성좋음
  • cd(change directory) : 폴더 변경.
  • touch : 파일 생성
  • > : 실행결과를 파일에 저장하기.
  • echo : 뒤에내용을 화면에 출력.
echo 폴더에_저장할_내용 > 파일.txt
  • cat : 파일의 내용을 터미널에 출력.
  • rm(remove) : 단일 파일 삭제. 이 명령어로 삭제한 폴더나 파일은 휴지통을 거치지않고 바로 삭제.
    • rm -rf :폴더 삭제
      • r (recursive) : 폴더지울때 사용
      • f (force) : 질문을 받지 않고 지울때 사용
  • mv(move) : 폴더나 파일이름변경, 폴더나 파일 위치 변경
  • mv 폴더나파일의이름 도착폴더이름
  • mv 폴더나파일의이름 변경할이름
  • cp(copy) : 파일 복사
    • cp 원본파일이름 복사할파일이름
    • cp -rf : 폴더 복사
  • .: 현재폴더를 의미
  • .. : 현재폴더보다 앞의 폴더. 즉 이전폴더를 의미.
  • 각 명령어에 포함된 옵션은 명령어 이름만 입력하거나 -h 또는 --help와 같은 옵션을 통해 확인

관리자권한과 경로

  • 충돌(Conflict) : 두 프로그램이 하나의 시스템(운영체제)을 놓고 다투는 과정.
  • 관리자 : 프로그램 설치, 변경 및 삭제할수있는 권한
  • 사용자 : 프로그램실행만 가능
  • 절대경로: pwd로 확인할 수 있음. 기준점으로부터 절대적인 위치.
    • 루트폴더 / : 기준점, 폴더 내부를 의미
  • 상대경로: 현재위치로부터 상대적인 위치
    • 현재위치폴더 .
    • 상위폴더 ..

관리자 권한

  • 절대경로의 기준점, 즉 루트폴더는 관리자의 영역.
  • whoami : 로그인된 사용자를 확인하는 명령어.
  • 명령어를 통해 확인할 수 있는 사용자는 폴더로 존재.
  • ~/ : 사용자 폴더 경로
    • ~ : 루트폴더로부터 사용자폴더까지의 경로 축소.

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

텍스트에디터 nano

nano hello.java
nano
  • 위 명령어들로 nano 실행가능

파일열기

nano 파일이름

을 하거나 nano만 이용하여 실행 후 ctrl+r 혹은 ctrl+t를 눌러 화살표키를 이용하여 디렉토리를 탐색 후 불러올 수 있음.

파일편집 및 종료

  • 편집 후 ctrl+x를 누르면 Save modified buffer (ANSWERIG " No" WILL DESTROY CHANGES) ? 프롬프트 등장. 이때는 Y 혹은 N을 눌러 저장여부 결정

파일저장

nano실행도중 파일을 저장하고싶다면 ctrl+0 WriteOut 이용.

패키지와 패키지매니저

  • 리눅스 운영체제 패키지 : 여러 파일을 모아 하나의 파일로 저장하고 있는 압축파일
    • 구성 : 프로그램파일, 프로그램 설치파일, 프로그램 설치 설명서, 프로그램 정보파일
  • 패키지 매니저 : 패키지의 설치, 변경, 삭제 등 관리를 편리하게 해주는 도구

apt 명령어

  • 우분투는 기본적으로 apt패키지매니저 내장.
  • apt update : 패키지 목록 갱신(관리자권한)
    • 패키지 다운로드할수있는 저장소의 최신정보 업데이트
    • 저장소 추가 및 최신정보 갱신
    • 설치 프로그램이 새로운 버전으로 변경X
  • apt list --upgradable : 업그레이드 가능한 패키지목록 출력
  • apt upgrade : 전체패키지 업그레이드 (관리자권한)
  • apt --only--upgrade install 패키지이름 : 특전 패키지만 업그레이드(관리자권한)
  • apt install 패키지이름 : 패키지 설치(관리자권한)
  • apt list --installed : 설치된 패키지 보기
  • apt search 검색어 : 패키지 검색
  • apt show 패키지이름 : 패키지 정보 확인
  • apt remove 패키지이름 : 패키지삭제(관리자권한)

관리자 권한 사용

  • 패키지 설치 및 삭제작업에는 관리자권한 필요(sudo)

오래걸리거나 문제가 생긴 경우

  • ctrl+c 키로 강제종료 및 사용자입력 되찾아오기

사용권한

폴더인지 파일인지

ll을 사용하여 터미널에 출력된걸 보면 가장 왼쪽에 출력된 내용이 -로 시작하면 “not directory”이고, d로 시작하면 “directory”이다. -는 파일, d는 폴더를 나타낸다. 이어지는 r,w,x는 각각 “read permission, write permission, execute permission으로 읽기권한, 쓰기권한, 실행권한이다. rw-r--r--은 소유자는 읽기쓰기가 가능하고 다른 사용자그룹은 읽기만 가능하다는 의미이다. img (출처 : https://konkuk-curry.tistory.com/entry/Linux-error-%ED%97%88%EA%B0%80%EA%B1%B0%EB%B6%80-%EA%B6%8C%ED%95%9C%EC%84%A4%EC%A0%95permission-deniedchmod)

user, qroup, and other

  • user : 파일의 소유자.
  • group : 여러 유저. 그룹에 속한 유저들은 파일에 동일한 권한이 주어짐.
  • other : 파일에 대한 다른 권한을 가진 유저.

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

  • chmod 명령어는 읽기,쓰기,실행권한을 변경할수있다.

  • OS에 로그인한 사용자와 소유자가 같을경우 chmod로 권한 변경가능.

  • OS에 로그인한 사용자와 소유자가 다를경우 sudo로 권한 변경가능.

    • chmod로 권한 변경하는 방식 2가지
    • +, -, =과 accessor유형을 표기해서 변경하는 Symbolic method
    • rwx를 3비트로 해석해서 숫자 3자리로 표기해서 변경하는 Absolute form

    Symbolic method

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

  • chmod 뒤에 액세스클래스 중 변경하려하는 조건에 맞기 입력하고, 연산자와 액세스타입을 입력.

Absolue form

  • Absolute form은 숫자 7까지 나타내는 3비트의 합으로 표기.
  • 유저,그룹,다른사용자마다 rwx가 나타나고 boolean 값으로 표기.

환경변수 (MACOS, LINUX)

  • 환경변수 : 프로그램 동작에 영향을 미치는 값
  • 환경변수는 지역환경변수와 전역환경변수로 분류.
    • 지역환경변수 : 환경변수를 생성한 특정 사용자만 사용가능 변수명=값 으로 생성. 공백이 있다면 변수명="여기에 값을 넣어요" 처럼 값 전체를 따옴표로 감싸야한다.
    • 전역환경변수 : 모든 사용자가 사용가능 export 변수명=값 으로 생성.

환경변수 값 확인하기

  • 설정한 환경변수의 값은 echo $변수명으로 확인 가능.
  • $를 붙이는 이유는 뒤의 문자열이 환경변수라는 의미를 터미널에 전달하기 위함.

환경변수 영구 적용

  • 환경변수를 영구적으로 적용하면 터미널을 닫거나 재부팅해도 환경변수가 초기화되지않는다.

지역환경변수 영구적용

  1. cd를 사용하여 home디렉토리로 이동한 후 ls -al을 통해 홈 내의 숨겨진 파일들까지 조회.
  2. 결과에 따라 다른 명령어 사용.
  • 목록에 .zshrc 존재, nano .zshrc입력하여 편집창 오픈.
  • 목록에 .bashrc 존재, nano .bashrc 입력하여 편집창 오픈.
  • 텍스트편집기는 어떤걸 사용해도 무방.
  1. vim을 사용하는 경우 Shift+g nano를 사용하는 경우 alt+/를 눌러 맨 아래로 이동 후, 환경변수 작성 및 저장.
  2. source .zshrc입력후 변경내용 적용, 내용 출력.

전역환경변수 영구적용

  1. 변경하고자하는 파일의 권한 수정.
  • 환경변수를 저장하는 파일은 루트/etc/profile.
  • profile은 기본적으로 r–r–r–로 설정.
  • sudo chmod 777 /etc/profile입력 후 비밀번호 입력하여 권한변경.
  1. nano /etc/profile을 입력하여 입력창열기.
  • 이 방법은 etc안에 있는 profile을 nano편집기로 여는것.
  1. vim을 사용하는 경우 Shift+g nano를 사용하는 경우 alt+/를 눌러 맨 아래로 이동 후, 환경변수 작성 및 저장.
  2. source /etc/profile입력후 변경내용 적용, 내용 출력.

export 키워드로 생성된 환경변수의 이름과 값을 확인.

  • 명령어 export를 입력하면 이미 설정되어있는 환경변수 및 export를 통해 설정한 환경변수들의 목록 확인 가능.

환경변수(Windows)

  1. 환경변수 검색 후 “시스템 환경 변수 편집” 열기
  2. 환경변수 클릭
  3. 환경변수 설정 3-1. 사용자변수에서 새로만들기 클릭 후, 이름과 값 입력 3-2. 시스템변수에서 새로만들기 클릭 후, 이름과 값 입력 3-3. 확인 클릭. 확인을 누르지않으면 저장안됨
  4. cmd 열고 set 명령어 입력해서 환경변수 확인

CLI 명령어

  • 명령어 옵션 -r, -f

    • r : recurve의 약자. 특정 행동 순환반복.
    • f : force의 약자. 어떤 행위를 강제함.
    • r은 rm으로 폴더를 삭제하고싶을때 붙여서 사용가능. cd나 다른 명령어도 가능
    • f는 보호되거나 존재하지않는 파일까지도 강제로 삭제 가능. 고로 사용할때주의!
  • 1
    
    cat
    

    대신 쓰는 명령어

    • 1
      
      cat
      

      은 항상 파일전체내용 출력. 원하는 정보만 찾기 힘듦.

      • head : 텍스트로된 파일의 앞부분을 지정한 만큼 출력.
      • tail : 파일의 마지막줄을 기준으로 지정한 줄까지의 파일내용 일부를 출력.
      • more : 파일을 읽어 화면 단위로 끊어서 출력. 위에서 아래 방향으로만 출력 되지만, 지나간 내용을 다시 볼 수 없다.
      • less : 파일을 읽어 화면에 출력하는 명령어. 한 번에 보여지는 만큼만 읽어서 출력.

터미널에서의 도움말 -h, -help


오늘은 리눅스에 대해 공부했다! 사실 독학하며 이미 리눅스에 대한 기초 지식은 있었지만 처음 배운다는 마음으로 공부했다. 리눅스를 사용하면서 패키지를 다운받던 중 오류가 있었다. wget을 다운 받고 urclass에 있는 링크로 텍스트파일을 다운받았어야했는데 wget이 링크를 인식하지를 못했다. 정말 당황스러웠지만서도 스스로 방법을 찾아내기 위해 구글링을 이용했다. 굉장히 많은 내용들이 나왔지만 따라해도 해결이 되지않아 참 막막했다. 하지만 이런걸로 포기한다면 백엔드 개발자로서 성공할수 있을까하는 생각이 들었고 터미널에 출력된 프롬프트를 보며 어떤 부분이 문제인지에 대해 고민했고, 문제인 부분을 찾아내어 그 부분을 해결하는 방법에 대해 구글링했다. 그리고 찾게된 방법이 /etc/resolv.conf 에서의 오류가 있었다. 네임서버가 등록되어있지 않다는 사실을 알았고 마침내 해결했다. 스스로 해결했을때, wget이 정상적으로 실행됐을때 정말 너무 많이 행복했다!! 코드스테이츠를 시작한 이후로 오늘 성장한 기분이 들었다.

Contents

[CodeStates] Backend 5일차 | 트위틀러 목업 제

[CodeStates] Backend 7일차 | Git 기초