Linux Basics

hyounglee·2020년 8월 25일
0

Developer

목록 보기
2/10

리눅스란?

Linux는 1991년 Linus Torvals가 개발한 운영체제이다. 오픈소스이며 누구나 코드를 볼 수 있기 때문에 가장 널리 사용되는 운영체제가 되었다. 시스템 서버는 대부분 Linux 기반으로 운영되기 때문에 개발자는 Linux를 잘 알아야 한다.

Filesystem Hierarchy Standard (FHS)

리눅스는 다음과 같이 tree 형태로 구성되어있다. FHS의 가장 위에는 / (Root) 디렉토리가 있다. 하위 디렉토리들 역시 /로 구분된다.

Home Directory

가장 중요하고 기본이 되는 디렉토리는 home directory이다. 이 디렉토리가 유저의 공간이기 떄문이다. home 디렉토리 경로를 나타낼 때는 ~ (tilda) 를 사용할 수 있다. Mac에서는 /home 디렉토리가 아니라 /Users 디렉토리에 유저의 home 디렉토리가 있다.
예) cd ~/bin == cd /home/bin

Directory 경로

디렉토리 경로에는 2가지 유형이 있다. absolute path와 relative path 이다.

Absolute Path

절대적 경로, 완전한 경로라고 생각하면 된다. Absolute Path는 Root 디렉토리부터 시작하는 경로를 의미한다. 현재 나의 위치와 상관 없이 항상 정확히 해당 경로로 이동할 수 있다.

Relative Path

이름 그대로 "상대적인 경로"를 뜻한다. 현재 내 위치를 기반으로 움직이는 경로이다. 두 가지 심볼을 사용한다. ., ..이다. Single dot은 현재 디렉토리를 의미하고, Double dot은 현재 디렉토리의 상위 디렉토리를 의미한다. ../../ 이렇게 되면 두 단계 상위 디렉토리라고 생각하면 된다.

Configs

Config file

리눅스는 설정을 주로 파일(config file)을 통해서 한다. 그 중 가장 중요한 설정 파일이 바로 Shell 설정 파일이다. zsh는 .zshrc 라는 설정 파일을 사용한다. Shell 설정 파일을 비롯하여 대부분의 설정 파일들이 유저의 home 디렉토리에 위치한다. 이러한 설정 파일을 통해 할 수 있는 것들 중 가장 중요한 것은 PATH 환경 변수 설정이다. 참고로 .파일은 숨겨져 있는 hidden file을 의미한다. 이러한 파일을 모두 보기 위해서는 ls 명령어에 a 옵션을 추가한다. ex) $ ls -a

PATH Environment Variable

environment variable, 즉 환경 변수는 말 그대로 어떠한 값을 저장하고 있는 변수이다. 환경은 현재 돌아가고 있는 Shell을 뜻한다. 이러한 환경 변수들은 Shell이 돌아가는 동안 계속 존재하며 사용된다.

> echo $HOME
/Users/MiaJLee

HOME 환경 변수 값을 출력하는 것을 볼 수 있다. HOME과 같은 환경 변수를 선언한 적이 없지만, 이미 Shell이 시작할때 자동으로 선언되었기 때문이다. 대표적인 환경 변수는 다음과 같다.

  • HOME : 유저의 home 디렉토리 경로를 저장한 환경 변수
  • USER : 유저의 아이디를 저장한 환경 변수
  • PATH : PATH 값을 저장한 환경 변수

PATH 환경 변수

명령어들을 찾을 수 있는 경로들을 저장해놓은 환경 변수이다. PATH 환경 변수 때문에 경로 없이도 명령어가 실행될 수 있는 것이다. 만일 경로가 지정되어있지 않으면 PATH 환경 변수에 저장되어 있는 경로들을 하나하나 보면서 프로그램을 찾고 실행한다.

> echo $PATH
/Users/MiaJLee/miniconda3/bin:/Users/MiaJLee/miniconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Mono.framework/Versions/Current/Commands

PATH 값을 출력하면 위와 같이 나온다. 여러 경로들을 담고 있으며, 각 경로들을 : 를 사용해서 구분한다.

PATH가 중요한 이유는 새로운 package를 설치하거나 시스템을 설정하거나 할때 PATH 설정이 제대로 되지 않았을 경우 실행이 안되는 경우가 많기 때문이다. PATH는 Shell 설정 파일에서 설정한다. Zsh의 경우 .zshrc 파일에서 설정하며 다음과 같이 설정한다.

export PATH="/Users/MiaJLee/bin/anaconda3/bin:$PATH"

export는 JavaScript의 var 키워드처럼 변수를 선언할 때 사용하는 키워드라고 생각하면 된다. <PATH에 추가하고자 하는 경로>:$PATH 여기서 $PATH 부분에 PATH 변수의 값이 치환된다. 이렇게 선언을 하면 기존의 PATH 값의 맨 앞쪽에 새로운 경로가 추가된다.

Useful Shell Tips

  • Shell에서 키를 누르면 이전에 입력했던 명령어를 다시 불러낼 수 있다.
  • Zsh에서 history-substring-search 플러그인을 설치했으면, 입력하고자 하는 명령어 중 일부분을 입력 후 키를 누르면 입력된 string이 포함된 이전 명령어만 불러낼 수 있다.
  • Ctrl + a : 커서가 해당 줄의 맨 앞으로 이동한다
  • Ctrl + e : 커서가 해당 줄의 맨 뒤로 이동한다.
  • cmd + k : 화면이 reset 된다. (Mac)

Basic Shell Commands

리눅스 쉘 기본 명령어 : 정리 너무 잘해주신 벨로거...

  • cd : 디렉토리를 변경
  • ls : 현재 디렉토리의 파일 목록을 나열
  • mv : 파일이나 디렉토리를 이동
  • cp : 파일이나 디렉토리를 복사
  • cat : 두 개 이상의 파일을 연결하여 출력
  • less : 파일 내용을 확인, 화면에 보여지는 만큼만 출력
  • tail : 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력 (default : 10행 출력)
  • nohup : 터미널을 종료해도 프로그램을 백그라운드에서 계속 실행
  • rm : 파일이나 디렉토리를 삭제
  • mkdir : 디렉토리를 생성
  • clear : 쉘 창의 기록을 모두 삭제 ( cmd + k )
  • pwd : 현재 작업중인 디렉토리의 절대 경로를 반환
  • chown : 파일이나 디렉토리의 소유권자 및 그룹식별자 변경
  • chmod : 해당 파일이나 디렉토리의 허용 권한 수정
  • grep : 특정 파일 내에서 지정한 패턴을 가진 문자열을 찾고, 해당 문자열을 출력
  • history : 이전에 입력했던 명령어 리스트를 출력
  • ps : 현재 작동하는 프로세스의 목록을 출력

Piping

| : Pipe 라고 한다. 일반적인 명령어가 아니라 2개의 명령어를 이어주는 역할을 한다. command1 | command2의 경우 command1의 결과값을 command2의 input으로 넘겨준다.
예를 들어, history 명령어는 이제까지 입력한 명령어들을 출력해주는 명령어다. | 을 사용해 grep과 같이 사용하면, history가 출력하는 값들 중 원하는 값만 필터링 할 수 있다. ex) history | grep ls

Man page(Manual page)

명령어를 어떻게 쓰는지 설명해준다. ex) man ls Man page의 단점은 너무 길다는 것이다. 그래서 나온 유용한 패키지가 바로 tldr(Too long Didn't)이다. 자주 사용하는 옵션이나 사용법만 간략히 알려준다. ex) tldr ls

profile
(~˘▾˘)~♫❝ 쉽게만 살아가면 재미없어 빙고 .ᐟ ❞•*¨*•.¸¸♪

0개의 댓글