211123 TIL (Linux)

리눅스(Linux)

운영체제

  • 사용자 인터페이스로 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위한 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어
  • 공급되는 시장에 따라 임베디드, 서버, 모바일, 데스크탑으로 종류가 갈린다.
  • MacoS, Windows, iosm android, Linux, ubuntu, unix ...

리눅스

  • 커널 : 리눅스의 핵심. 프로세스 관리, 메모리 관리, 파일 및 장치 관리 등 컴퓨터의 모든 자원을 초기화하고 제어하는 기능을 수행
  • 셸 : 리눅스 사용자 인터페이스로 사용자와 커널의 중간자 역할을 함
  • 응용 프로그램 : 리눅스는 각종 프로그래밍 개발 도구, 문서 편집 도구, 네트워크 관련 도구 등 다양한 응용 프로그램을 제공함

리눅스 계열

https://futurist.se/gldt/wp-content/uploads/12.10/gldt1210.png

데비안 계열

GNU 정신에 가장 충실한 배포판으로 GNU의 공식적인 후원을 받고 있는 유일한 배포판 일반 사용자를 대상으로 하기 때문에 사용자 친화적인 배포판이 많다.

우분투

  • 영국의 유한회사 캐노니컬이 만든 배포판.
  • 사용자 친화적이며 처음 사용하는 사람도 간단하게 사용할 수 있도록 함.
  • UNITY라는 독자적인 데스크톱 환경을 제공하며 많은 사용자를 보유하고 있음.

레드햇 계열

세계적으로 가장 인기 많은 배포판으로 RPM(REDHAT PACKAGING MANAGER)이라는 패키지 매니저를 통해 패키지의 설치, 삭제 및 업데이트를 편리하게 지원한다.

리눅스 민트

  • 우분투 기반과 데비반 기반 버전이 따로 존재한다.
  • 우분투의 개선한 파생형 배포판이며 가장 사용자 친화적이라는 평가를 받아 MAC이나 윈도우 환경에 익숙한 사용자들도 쉽게 접근 가능하다는 특징이 있다.

우분투(Ubuntu) 실습

클라우드 서비스

  1. SaaS(Software as a Serviece)

    SaaS는 가장 사용자 단에 친밀한 서비스이며 네트워크를 통해 애플리케이션 기능을 이용할 수 있는 서비스이다. 드롭박스, 구글 클라우드 등의 서비스가 여기에 속한다.

  2. PaaS(Platform as a Service)

    PaaS는 빠르게 어플리케이션을 개발하고 서비스할 수 있도록 고안된 것이다. 예를 들어 서버에는 이미 Node와 같은 런타임이 깔려있고 우리는 javascript 파일 빌드만 하면 된다.

  3. IaaS(infrastructure as a Service)

    IaaS는 인프라를 제공하는 클라우드 서비스이다. 기업에서 특히 많이 쓰인다. AWS의 EC2가 여기에 속한다.

구름IDE

실습을 위해서 설치가 필요없는 클라우드 환경을 이용하였다. 구름IDE라는 클라우드 서비스를 이용하여, Linux를 실습하였다.

실습환경)
1. 컨테이너를 하나 만든다. 컨테이너를 쉽게 생각해서 하나의 컴퓨터라고 생각하면 된다. 이름에는 대문자와 띄어쓰기가 포함되지 않도록 한다. 언어는 가장 기본적인 python 언어를 선택하여 만들었다.

  1. 상단 메뉴 바에서 창 > 새 터미널 창 을 눌러서 터미널 창을 킨다.

  2. 다음과 같은 터미널 창에서 실습을 진행한다.

명령어

  • mkdir 폴더이름 : 디렉토리 만들기, make directory 의 약자이다.
    mkdir -p one/two/three → 한 번에 여러 폴더 만들 수 있음. one> two> three
  • rmdir 폴더이름 : 디렉토리 지우기, remove directory의 약자이다. 단, 비어져있지 않은 디렉토리는 삭제 불가.
  • rm -r 폴더이름 : 비어있지 않은 디렉터리도 삭제 됨.
  • clear : shell창이 깨끗해 진다.
  • ls : 해당 디렉토리 내에 있는 디렉토리 및 파일을 출력한다. list의 약자
  • ls -a: 숨겨진 파일이나 디렉토리도 출력한다.
  • ls -l : 파일 권한, 크기 등의 데이터를 출력한다.
  • ls -al : ls -a 명령어와 ls -l 명령어를 동시에 사용한 효과. 숨긴파일까지 모두 조회하여 파일 권한, 크기 등 모든 데이터를 출력한다.
  • ll : ls -al과 같은 의미
  • cd 경로 : 경로 변경, change directory의 약자.
    cd / : 최상위 폴더, cd .. : 상위 폴더, cd ~ : root폴더
  • touch 파일이름 : 파일 만들기
  • shift + v : 선택
  • /찾을문자열
  • /찾을문자열 +소문자n : 다음 문자열로 이동
  • /찾을문자열 +대문자N : 이전 문자열로 이동
  • u : 실행취소
  • more 파일이름 : enter로 한줄씩 넘어가기, z/space로 한 페이지씩 넘어가기, b는 이전 페이지
  • echo 문자열 : 문자열 출력
  • echo 문자열 > test.txt : 출력 결과를 파일에 저장
  • mv abc.txt def.txt : abc.txt를 def.txt로 이름을 바꾸어 저장. (abc.txt는 사라짐)
  • mv abc.txt xyz/def.txt : abc.txt를 def.txt로 이름을 바꾸어 xyz 디렉토리에 저장.
  • cp abc.txt def.txt : abc.txt 파일을 def.txt로 이름을 바꾸어 복사.
  • cp abc.txt xyz/def.txt : abc.txt 파일을 xyz 디렉토리 안에 def.txt라는 이름으로 복사.

  • vi : 기본 editor
  • vi 파일명 : 해당 파일 editing 가능. (해당 파일명의 파일이 없는 경우 새로운 파일 생성됨)
  • ;: 명령어를 여러개 연결하여 입력할 수 있음. 앞의 명령어가 실패해도 다음 명령어 실행
    mkdir four;cd four : four라는 디렉토리를 만들고, 거기로 바로 이동.
    touch test2.txt;touch test3.txt test2.txt와 test3.txt를 동시에 만듦
  • && : 앞의 명령어가 성공했을 때 다음 명령어 실행
  • & : 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 싱행
  • wget + 이미지주소 : 이미지를 받아올 수 있음
  • sudo : super user do를 뜻함.
  • apt-get : 우분투의 앱스토어 같은 곳
  • git clone 깃헙주소 : 해당 git 정보가 불러와짐.
  • unzip a.zip: a.zip 알집을 푸는 명령어
  • zip -r cho.zip ./a : a폴더에 있는 모든 걸 cho.zip이라는 이름으로 알집을 만듦.
  • -r : Recursive (재귀). 하위 폴더가 있으면 하위 폴더도 검색. 하위폴더들을 깊이있게 끝까지 모두 둘러보며 폴더와 파일에 대해 명령어를 실행함.
  • pwd : 현재 경로 출력
  • ctrl +c : 명령어 중단
  • alias : 별칭 지정
    alias ls='ls -a' 이라고 지정해서 ls만 입력했을 때도, 숨겨진 파일까지 보이도록 지정
  • unalias : alias 해제
    unalias ls
  • nslookup : 도메인 명령으로 IP조회, 기본 설치가 안되어 있어서 apt-get update 후 apt-get install dnsutils로 설치해야 함
  • ping : 해당 사이트에 접속이 되는지 확인, sudo apt-get install iputils-ping
  • chmod 700 test.py : change mode, 파일의 종류/소유자/그룹 사용자/ 기타 사용자, rwx: 읽기(4)쓰기(2)실행(1)

    drwxr-xr-x 에서 가장 앞에 d는 디렉토리를 뜻한다. 그뒤에는 3개씩 묶어서 각각 소유자, 그룹사용자, 기타사용자를 뜻한다. r은 읽기, w는 쓰기, x는 실행을 뜻하며, -는 권한이 없음을 뜻한다.
    이 권한을 바꿀 때 사용하는 명령어가 chmod이다.
    소유자- 읽기,쓰기,실행 그룹-읽기,실행, 기타-읽기 권한을 주고싶다면, chmod 754 test.py.

파일 내에서,

       ESC     a, i, o 
편집모드 - 명령모드 - 입력모드
        :        ESC
  • i : 커서의 앞의 위치에서 입력모드
  • a: 커서의 뒤의 위치에서 입력모드
  • o : 커서의 한줄 밑의 위치에서 입력모드
  • shift + i : 해당 줄의 가장 앞에서 입력모드
  • shift + a : 해당 줄의 가장 뒤에서 입력모드

배포하기

  1. apt-get 업데이트
    sudo apt-get update

  2. nginx 설치
    sudo apt-get install nginx

  3. git 복제
    git clone https://github.com/paullabkorea/10000hour.git

  4. 경로 변경
    vi /etc/nginx/sites-available/default
    nginx의 기본 경로를, 배포하려는 디렉토리의 경로로 수정한다.
    root /var/www/html; 를 root /workspace/폴더이름/10000hour; 로 수정한다.
    esc /wq! 로 나온다

  1. sudo service nginx start

  2. 프로젝트 > 실행URL과 PORT > 바로가기


문제

  1. ls 명령 시 숨김 파일도 모두 출력되도록 alias를 설정하세요.

alias ls='ls -a'

  1. 위에서 설정한 alias를 해제하세요.

unalias ls

  1. 긴 명령어를 쳤는데 오타가 났다. 기존에 명령어를 불러와 수정하는 방법은 무엇인가요?

방향키 위

  1. 자동완성 키는 무엇인가요?

tab키

  1. 현재 폴더에 다음과 같이 폴더와 파일을 만들고 tree 명령어를 이용해 이를 아래와 같이 출력하세요.
    a. tree는 기본 설치가 안되어 있습니다. 인터넷을 통해 tree설치 명령어를 알아내세요.

    sudo apt-get install tree

    b. 폴더 트리

    
    .
    ├── README.md
    ├── a
    │   ├── one.txt
    │   └── two.txt
    └── b
        ├── c
        │   └── four.txt
        └── three.txt
    

    tree

  2. 현재 폴더 기준으로 확장자가 .js 파일을 모두 출력하세요.

find ./ -name '*.js'

  1. 현재 폴더 기준으로 확장자가 .js 파일인 것을 result.txt에 저장하세요.

find ./ -name '*.js' > result.txt

  1. 현재 경로를 표시해보세요.

pwd

  1. a 폴더에 있는 one.txt를 change.txt로 이름 변경을 해보세요.

cd a
mv one.txt change.txt

  1. change.txt를 b폴더에 옮겨놓으세요.

mv change.txt ../b/change.txt
or
mv change.txt ../b (확장자나 파일명이 같은 경우 적어주지 않아도 옮겨짐)


좋은 웹페이지 즐겨찾기