TIL -32 Linux & Terminal

이동근·2021년 1월 21일
0

리눅스

목록 보기
1/1

데이터의 정복을 위해 Back End를 갔으면 다른 사람은 몰라도 우리 리눅스를 만드신 Linus Torvals 아저씨는 알아야한다!

Linux

리눅스는 라이너즈 토발즈가 개발한 오픈소스 운영체계이다. windows나 application이 아닌 이상 일반적으로 시스템 서버는 linux 기반으로 운영되고 있다. 그럼으로 개발자는 linux에 대해 잘 알아야 한다. linux에 시스템을 실행하고 유지하고 관리하기 때문이다.
Linux Directory Structure, PATH, Confings, shell Commands 등이 대표적인 linux 용어들이다........ 처음 들어 봤지만 괜찮다. 사람이 만든 것이라서 우리도 다 할 수 있다. 다만 익숙하지 않을 뿐이다.

linux의 파일구조 - tree

1. root directory - 가장 상위에 있는 디렉토리를 뜻하며, Root는 뿌리라는 뜻이다. Tree 형태의 FHS의 뿌리가 된다는 뜻이다. 참고로 directory는 windows 운영체제에서 folder와 동일한 개념이다. 제일 상위 directory인 root의 아래에 여러 하위 directory 가 있고, 그 하위 디렉토리가 있고, 쭉 가지치기 형식으로 나가는게 tree 형식의 구조라고 생각하면 된다. 각 디렉토리는 '/'로 구분한다.

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

3. ls - list의 약자이며 해당 디렉토리의 내용물들을 나열해 주는 역할을 한다.

4. Home directory linux file system에는 여러 디렉토리가 있지만 그 중 가장 중요하고 기본이 되는 디렉토리는 home 디렉토리 - 주로 home 디렉토리에서 많은 것을 하게 된다.(다른 것들의 이해도 중요하지만 가장 기초가 되는 home 디렉토리에 익숙해져 야 한다.) Home 디렉토리 경로를 나타낼때 ~를 사용해서 나타낼 수 있기 까지 하다. cd~ 입력하면 home 디렉토리로 간다. cd ~/bin 명령어를 사용하면 home 디렉토리의 하위 디렉토리 bin으로 이동한다.

File PATH

디렉토리에 관한 경로만 보았는데, 파일로 가는 경로도 디렉토리 경로와 동일한다.(직접경로(Absolute Path)/ 간접경로(Relative Path))

1. Absolute Path(절대경로)

완전한 경로라는 뜻을 가지고 있다. root 디렉토리 부터 시작하는 경로를 뜻한다. root디렉토리부터 시작하기때문에 현재 나의 위치와 상관없이 항상 정확히 해당 경로로 이동 할 수 있다.

2. Relative Path(상대경로)

상대적인 경로를 뜻하며, 현재 내 위치와 상관없이 이동 할 수 있는 absolute path와 다르게 relative path는 현재 내 위치를 기반으로 움직이는 경로이다. 여기에서 기억해야할 중요한 2가지는 '.', '..'이다.

경로를 이야기 할때 .(single dot)은 현재 디렉토리를 이야기 한다. '..'는 현재 디렉토리 바로 전 디렉토리, 즉 현재 디렉토리의 상위 디렉토리를 뜻한다. cd..
을 적게 되면 상위디렉토리로 이동한다. 많이 쓰이니까 기억하자

Configs

Config file

리눅스에는 설정을 주로 파일을 통해서 한다. 그리고 여러 config file 즉 여러 설정 파일들이 있따. 너무나 다양한 설정 파일들이 있어서 다 알기가 힘들 정도 이다. 그 중 가장 중요한 설정 파일이 바로 shell 이다. 각 shell마다 고유 설정 파일이 있다. Bash.bashrc 라는 설정파일을 사용하고 zsh.zshrc라는 설정 파일을 사용한다. 여기서 ls 커맨드는 모든 파일을 보여주는데 숨김 파일은 보여주지 않는데, 이때 a를 사용하면 숨겨진 파일까지 모두 볼 수 있다.. ls -a 이런식으로 사용하면 되고 숨겨진 파일이든 안숨겨진 파일이든 다 나열하라는 뜻이다.

PATH Enviroment Variable(환경변수)

Path 환경 변수를 이해할려면 먼저 environment variable, 즉 환경 변수가 무엇인지 알아보자 변수는 말 그대로 variable이다. 즉 어떠한 값을 저장하고 있는 변수인 것이다. 여기서 환경은 현재 돌아가고 있는 shell을 뜻 한다. 그럼 환경변수란 shell이 어떠한 설정 값을 가지고 있는 변수를 뜻한다. 그럼으로 환경 변수란 shell의 어떠한 설정 값을 가지고 있는 변수를 뜻한다. 그리고 이러한 환경 변수들은 shell이 돌아가는 동안 계속 존재하며 사용된다. home이라는 환경변수를 선언한 적이 없지만 이미 존재하고 있는 것을 알 수 있따. 그 이유는 환경 변수들은 shell이 시작할때 이미 자동으로 선언되었기 때문이다. shell은 이러한 환경변수들을 통해 설정이 된다.
PATH - 명령어들을 찾을 수 있는 경로들을 저장해 놓은 환경변수이다. 왜 중요하냐면, 새로운 package를 설치하거나 시스템을 설정하거나 할때 PATH가 설정이 제대로 안되면 실행이 제대로 안되는 경우가 많기 때문이다.
ex) python 가상환경 매니저인 miniconda를 설치했는데 conda가 실행이 안되는 경우 conda의 경로가 PATH에 설정이 안되어 있을 확률이 높다.
PATH는 shell 설정 파일에서 설정한다. Zsh의 경우 .zshrc 파일에서 설정하며 다음처럼 설정한다.
expert PATH='/home/eun/bin/anaconda3/bin:$PATH"
여기서 $PATH 부분은 PATH 변수값이 치환된다.

Useful shell Tips

  • shell 에서 위 화살표를 누르면 이전에 입력했던 명령어를 다시 불러낼 수 있다.위쪽 화살표를 통해 이전 그 이전에 입력했던 명령어가 나오면서 이전 명령어들을 계속해서 볼 수 있다.
  • control + a를 누르면 커서가 해당 줄의 맨 앞으로 이동한다.
  • control + e 누르면 커서가 해당 줄의 맨 뒤로 이동한다.
  • mv move의 약자로 파일이나 디렉토리를 원하는 곳으로 옮기거나, 이름을 변경시 사용
  • cp 파일이나 디렉토리를 워하는 곳에 원하는 이름으로 복사할 수 있는 명령어 입니다.
  • cat은 두 개 이상의 파일을 연결해서 출력할 때 사용됩니다.
  • less 파일 내용을 확인하는 명령어들 중 하나, 수정은 불가능 합니다.
  • tail 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력해 줍니다. 아무 옵션을 주지 않으면 기본적으로 10개 행을 출력해 줍니다.
  • nohup 터미널을 종료해도 프로그램이 백그라운드에서 계속 실행되도록하는 명령어
  • rm 약자로 파일과 디렉토리 삭제에 사용되는 명령어
  • mkdir 'make directory' 의 약자로 새로운 디렉토리를 만들 수 있는 명령어 입니다.(touch를 통해 새로운 파일을 만들 수 있습니다.)
  • clear 쉘 창에 있는 기록을 모두 지워 줍니다
  • pwd 'print working directory'의 약자로 현재 작업 중인 디렉토리의 절대경로를 반환해줍니다.... 지금 현재 위치가 어디 인 줄 모르겠으면 pwd ㄱㄱ
  • chown 파일이나 디렉토리의 그룹식별자를 바꾸는 명령어
  • chmod 해당 파일이나 디렉토리의 퍼미션을 수정할 수 있는 명령어 입니다.
  • grep 특정 파일 내에서 지정한 패턴을 가진 문자열을 찾은 후, 해당 문자열을 출력해 줍니다. 그리고 패턴에는 정규표현식 패턴을 사용합니다.
  • history 현재까지 쳤던 모든 명령어 리스트를 행 넘버와 함께 출력해 줍니다.
  • ps 현재 작동하는 프로세스의 목록을 출력해 줍니다.

piping '|'

pipe라고 한다. 위에서 아래로 내려가는 줄이 꼭 파이프 기둥 처럼 생겨서 그렇게 이름이 붙어졌다. 일반적으로 명령어가 아니라 2개의 명령어를 이어주는 역활을 한다.
즉 command1 | command2 : command1의 결과값을 command2의 input으로 넘겨준다.

history명령어는 이제까지 입력한 명령어들을 출력해주는 명령어이다. history만 실행하면 화면에 출력되지만 history |grep IS -> is 값만 출력

Man page = Manual Page

명령어를 어떻게 쓰는지 설명해 주는 역활을 한다. but 너무 길다. 그래서 tldr이다. 그래서 tldr 명령어는 자주 사용하는 옵션이나 사용법만 간략하게 알려준다. dafault로 포함되어 나오는 package가 아니므로 package manager를 사용해서 설치애햐 나다.

명령어들은 추후에 다시 정리해서 블로깅~!! 하겠습니다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글