Linux & Terminal

ㅎㅎ·2021년 6월 14일
0

📌 Linux

: 리누스 토발즈가 개발한 unix기반 운영체제이다.

- (인자한 미소의 리누스 토발즈씨)

  • CLI(Commnange Line Interface)기반
  • 사용자들을 위해 GUI(graphic user interface) 기능 추가

- 특징

  • 다양한 이유로 서버는 linux 기반으로 운영되고 있음
  • 안정적, 유연성, 무료 -> 오픈소스 활성화
  • 안드로이드 기반 스마트폰, 임베디드 시스템 등 사용됨.
  • 서버(로컬 서버, AWS 등에 설치된 인스턴스 등)에 설치된 리눅스 환경을 사용할 수 있음.
    • 우리가 만든 프로젝트를 AWS EC2을 통해 배포하려고 하는데 해당 서버에서는 순수한 우분투 외에는 아무것도 깔려있는 않은 상태고, 만약 GUI를 토해서만 사용할 줄 안다면 여러가지 프로그램과 환경설정, 그 프로그램들의 확장 프로그램을 모두 설치한 후에야 사용 가능함.

- 핵심 개념

- 각 폴더별 특징

  • FHS(Filesystem Hierarchy Standard) : tree 구조

  • root(/) : 루트 폴더. 최상위 경로
  • /home(~) : 유저의 공간, 가장 빈번하게 사용하게 되는 경로, 리눅스의 운영과 관리에 관련한 파일들이 존재하는 디렉토리들
  • /bin & /sbin: binary의 약자. os의 최소한의 구동을 위해 필요한 프로그램이 들어있는 폴더. cat,chmod,cp,date,kill,in,mkdir,ls 와 같은 기초 프로그램들이 포함되어 있다. /sbin 폴더는 bin과 유사하지만 오직 루트유저 전용 프로그램을 포함한다.
  • /boot : 부트로더 같이 시스템 부팅에 필요한 파일들이 위치한다.
  • /usr : user의 약자. 각 유저 이름에 해당하는 폴더 이름이 존재한다. bin,sbin,shared,lib과 같이 각 유저들이 사용할 수 있는 폴더가 생성되어 있음. 각각의 유저별로 다른 파티션으로 존재하기 때문에 다른 사용자들이 사용할 수 있도록 할수있지만 이 때는 수정할 수 없다.
  • /etc : etc 폴더에는 사용하는 설정 정보 등 엑스트라 데이터들이 저장된다.

- Configs

  • 리눅스에서는 설정을 주로 파일을 통해서한다. 그리고 여러 설정 파일들이 있다. 그 중 가장 중요한 설정 파일이 있는데 Bash 는.bashrc, zsh는.zshrc 설정 파일을 사용한다.
  • .으로 시작하는 파일, 디렉토리는 숨김파일로 간주한다. ls -la옵션으로 볼수 있다.
  • 이러한 설정 파일을 통해 많은 설정을 할 수 있지만 가장 중요한 것은 PATH 변수 설정이다.
  • alias(별칭)는 일종의 사용자 지정(나만의) 단축 명령어다. (.bashrc,.zshrc에 등록)
alias myip="ipconfig getifaddr en0" # macOS

- 환경 변수

  • 환경: 현재 돌아가고 있는 shell, 변수: 어떠한 값을 저장하고 있는 변수 즉, 환경 변수는 shell의 어떠한 설정 값을 가지고 있는 변수이다. 그리고 이 변수들은 shell이 돌아가는 동안 존재하고 , 사용된다.
  • 리눅스의 대표적 환경 변수 :
    • HOME - 유저의 home 디렉토리 경로를 저장한 환경 변수,
    • USER - 유저의 아이디를 저장한 환경 변수
    • PATH - path 값을 저장한 환경 변수
  • env 명령어로 리눅스의 환경변수 확인 가능
  • &PATH : 터미널에서 사용하는 명령어의 경로가 저장되어 있다. 여러 경로를 저장하기 위해 각 경로는 :로 구분된다.
PATH=/Users/apple/miniconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
  • 예를 들어 ls는 경로를 입력하지 않아도 실행이 된다. 명령어도 프로그램이기 때문에 경로를 알아서 실행하는데 경로없이도 실행이 된다. 그 이유는 PATH환경변수 덕분이다. /bin안에 들어있기때문에 어디서든 사용이 가능하다.
  • PATH가 중요한 이유는, 새로운 패키지를 설치할때 path가 설정이 제대로 안 되면 실행이 안된다. 따라서 설정 파일에서 꼭 잘 설정해줘야한다.
export PATH="/home/eun/bin/anaconda3/bin:$PATH"
`<PATH에 추가하고자 하는 경로>:$PATH`

- 자주 사용하는 명령어

  • cd : 폴더 이동
  • ls : 현재 경로 내 파일 목록 출력
  • pwd : 현재 경로 출력
  • mkdir/rmdir : 디렉토리 생성/ 제거
  • rm : 파일/ 디렉토리 제거
    • -r: 하위 디렉토리 파일까지 모두 삭제
  • cp : 파일/ 디렉토리 복사
  • mv : 파일/ 디렉토리 이동
  • cat: 터미널에 파일 내용 출력
  • chmod : 파일 생성 및 날짜정보 변경
  • | : pipe - 2개의 명령어를 이어주는 역활.
    • ex) commmand1 | command2 : command1의 결과값을 command2의 input으로 넘겨준다.
  • echo : 시스템의 환경 변수 또는 입력 내용을 화면에 출력


📌 Terminal

- 쉘(shell)

  • 쉘은 터미널 환경에서 운영체제의 커널과 사용자의 유저 스페이스를 이어주는 인터페이스 역활을 하는 프로그램이다. 즉 사용자의 명령어를 운영체제에 전달해 실행하고 그 결과물을 유저에게 전달하는 역할을 하는 프로그램이다.
  • 인터페이스 역할 외에도 쉘 스크립트(shell script)라는 쉘 전용 프로그래밍 언어를 상요해서 터미널 환경에서 자동화를 실행한다.
  • 대표적인 쉘로는 Bash가 있다. Bash는 리눅스 기반의 운영체제에서 기본 쉘로 설치된다. 하지만 최근 인기가 있는 쉘로는 ZSH(Z shell)이 있다.

Terminal != Shell

  • terminal은 shell을 실행시키는 프로그램이다. 즉 terminal에서 Bash나 ZShell을 실행시킬 수 있다.

0개의 댓글