TIL9: Linux & Terminal

Seoyul Kim·2020년 4월 4일
0

Terminal&Linux

목록 보기
1/1

Linux란?

  • 1991년 Linus Torvals가 개발한 운영체제로 오픈소스이며 누구나 코드를 볼 수 있다.
  • 시스템을 운영하는데 가능 널리 사용되는 운영체제로 linux에 시스템을 실행하고 유지하고 관리한다.
  • linux의 파일구조는 tree 형태로 되어있으며, 가장 위에는 /(root) 디렉토리가 있고, 각 하위 디렉토리들 안에 또 하위 디렉토리들이 존재하며 각 디렉토리들을 /(slash)로 구분한다.
    • Mac은 /home 디렉토리가 아닌 /Users 디렉토리에 유저의 home 디렉토리가 있다.

1. Home Directory

  • home directory가 유저의 공간이기 때문에 가장 중요하고 기본이 되는 디렉토리이다.
  • home directory 이외의 다른 directory들은 주로 system directory라고 하며 리눅스의 운영과 관리에 관련한 파일들이 존재한다.

2. Directory의 경로

  • absolute path와 relative path 두가지가 있다.

absolute path

  • 완전한 경로로 root디렉토리부터 시작하는 경로를 뜻하며 현재 나의 위치와 상관 없이 항상 정확히 해당 경로로 이동할 수 있다.

relative path

  • 상대적인 경로이며 현재 내 위치를 기반으로 움직이는 경로이다.
  • .(single dot)은 현재 위치를 나타내며 .. 는 현재 디렉토리의 상위 디렉토리를 뜻한다.

3. Configs

  • 리눅스에서는 설정을 주로 파일을 통해서 하며 여러 config file(설정 파일)들이 존재한다.
  • 그중 가장 중요한 설정 파일은 shell 설정파일이다. 각 shell마다 고유 설정 파일이 있는데 Bash는 .bashrc라는 설정 파일을 사용하고 zsh는 .zshrc 설정 파일을 사용한다.

zsh 설정 파일

  • shell 설정파일을 비롯한 많은 설정 파일들이 대부분 유저의 home 디렉토리에 있으며 zsh설정 파일도 마찬가지 이다.
  • .zshrc 파일은 hidden file이다. 파일 이름이 .으로 시작하는 파일이나 디렉토리는 자동으로 숨겨직게 된며 dot file이라고 한다.(dot file은 ls에 -a 옵션을 주어 숨겨진 파일까지 모두 나열되게 하여 볼수 있다.)
  • 이러한 설정 파일을 통해 PATH 환경 변수를 설정할 수 있다.

3. PATH Enviroment Variable

  • 환경변수란 shell의 어떠한 설정 값을 가지고 있는 변수를 뜻한다. 그리고 shell이 돌아가는 동안 계속 존재하며 사용된다.
>echo $HOME  #HOME 환경변수는 유저의 홈 디렉토리 경로이다.
/home/david
  • 환경 변수들은 shell이 시작할 때 자동으로 선언된다. Shell은 이러한 환경 변수들을 통해 설정된다.
    • HOME
      유저의 home 디렉토리 경로를 저장한 환경 변수
    • USER
      유저의 아이디를 저장한 환경 변수
    • PATH
      명령어들을 찾을 수 있는 경로들을 저장해놓은 환경 변수이다.

PATH 환경변수

명령어 사용시 만일 경로가 지정되지 않으면 shell이 PATH 환경변수에 저장되어 있는 경로들을 하나하나 보면서 실행하고자 하는 프로그램이 위치해 있는지 찾고, 찾으면 실행시킨다.
새로운 package를 설치하거나 시스템을 설정하거나 할 때 PATH가 설정이 제대로 안되면 실행이 안될 수가 있다.

export PATH="/home/david/bin/anaconda3/bin:$PATH
  • export는 var 키워드처럼 변수를 선언할때 사용하는 키워드이다.
  • $PATH 는 PATH 변수의 값이 치환된다.

4. Piping

pipe(|)

  • 일반적인 명령어가 아니라 2개의 명령어를 이어주는 역활을 한다.
  • command1 | command2
  • command1의 결과 값을 command2의 input으로 넘겨준다.

5. Man page

man ls
  • manual page의 줄임말
  • 명령어를 어떻게 쓰는지 설명해준다
  • 단점은 너무 길고 글이 많아서 읽기가 힘들다. 그래서 대신 사용할 수 있는 packag가 tldr(too long don't read)이다. tldr명령어는 자주 사용하는 옵션이나 사용법만 간략하게 알려준다.

6. Basic Shell Commands

cd

  • change directory의 약자로 특정 디렉토리로 이동할 때 사용한다.
  • cd 명령어 다음에 가고자 하는 디렉토리 경로를 입력하면 된다.

ls

  • list의 약자로 해당 디렉토리의 내용물들의 나열해 준다.

pwd

  • 현재 자신이 위치한 경로를 반환한다.

mkdir

  • make directory의 줄임말로 디렉토리를 생성한다.

mv

  • move의 약자로 디렉토리나 파일 이동할 때 사용하며 파일 이름을 바꾸고 싶을 경우에도 사용할 수 있다.

cp

  • copy
  • 파일을 복사하거나 -r 옵션을 사용하여 디렉토리 이동한다.
cp -r cba abc  #cba를 복제한 abc

cat

  • 터미널에서 바로 프롬프트에 파일 내용 불러준다.
cat abc.txt

rm

  • remove
  • 파일이나 디렉토리를 지워준다.
  • 디렉토리를 지우고 싶을 경우 -r 옵션을 사용한다.
rm -r cba

clear

  • 프로롬프트 화면을 정리한다.

Terminal

Shell

  • 쉘은 터미널 환경에서 운영체제의 커널과 사용자의 유저 스페이스를 이어주는 인터페이스 역활을 하는 프로그램이다.
  • 사용자의 명령어를 운영체제에 전달아혀 실행되게 하고 그 결과물을 유저에게 전달하는 역활을 한다.
  • 대표적인 쉘로는 Bash(Bourne-Again-Shell)가 있다. 거의 대부분의 리눅스 기반의 운영체제에서 기본 쉘로 설치된다.
  • Bash 이외에도 다양한 쉘이 있는데 그중 최근에 인기를 얻고 있는 쉘은 ZSH(Z Shell)이다. 기본적인 기능은 Bash와 큰 차이는 없으나 여러 다양한 편리한 기능을 제공하며 특히 Oh My Zsh라는 ZSH 설정 매니저 플러그인을 통해 편리하게 쉘을 설정할 수 있다.

Package Manager

  • terminal 상에서 원한는 프로그램을 설치하고 사용할 수 있도록 해주기 위해 package manager 혹은 package management system이 있다.
  • Mac에서는 homebrew라는 package manager를 사용하고 Ubuntu 에서는 apt 혹은 apt-get을 사용한다.

Mac- Homebrew

  • package 설치 방법
brew install package이름
  • 설치한 package 삭제
brew uninstall package이름
  • 설치된 package upgrade
brew upgrade package이름
  • 설치하고 싶은 package 이름 검색(만약 package 이름은 기억 안나지만 spark라는 단어가 들어간다면)
brew search spark

0개의 댓글