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이 정상적으로 실행됐을때 정말 너무 많이 행복했다!! 코드스테이츠를 시작한 이후로 오늘 성장한 기분이 들었다.

This post is licensed under CC BY 4.0 by the author.