Linux

Ju Seol·2021년 6월 10일
0

Linux는 시스템을 운영하는데 가장 널리 사용되는 운영체제 이다.
Windows 시스템이나 application이 아닌 이상 일반적으로 시스템 서버는 linux 기반으로 운영되고 있다.
그럼으로 개발자는 linux에 대 잘 알아야 한다. Linux에 시스템을 실행하고 유지하고 관리하기 때문이다.

Linux File System Hierarchy(FHS)

FHS의 가장 위에는 / 디렉토리가 있다. Root 디렉토리 (directory) 라고 한다. Root은 뿌리 라는 뜻이다. 즉 Tree 형태의 FHS의 뿌리가 된다는 뜻이다. 참고로 디렉토리 (directory)는 윈도우스의 폴더(folder)와 동일한 개념이다.

시작점인 root 디렉토리 안에 여러 하위 디렉토리들이 있고 각 하위 디렉토리들안에 또 하위 디렉토리 들이 있는 식이다. 그리고 각 디렉토리들은 slash (/) 로 구분한다. 참고로 윈도우스는 back slash (\) 로 구분한다. 예를 들어, root 디렉토리 안에 home 이라는 하위 디렉토리가 있고 그 안에 eun 이라는 하위 디렉토리가 있고 그 안에 bin 이라는 디렉토리가 있다면 해당 bin 디렉토리까지의 경로는 다음과 같이 표현한다.

/home/eun/bin

실제로 터미널에서 linx 파일 구조를 보도록 하자.먼저 터미널에서 다음 명령어를 입력하여 root 디렉토리로 가보자.

cd 명령어는 "change directory"의 약자로 특정 디렉토리로 이동할때 사용된다. cd 명령어 다음에 가고자 하는 디렉토리 경로를 입력하면 된다. 여기서는 root 디렉토리로 가기 때문에 / 하나만 입력했다. 만일 root 디렉토리의 하위 디렉토리인 home 디렉토리 의 하위 디렉토리인 eun 디렉토리의 하위 디렉토리인 bin 디렉토리로 가고자 한다면 /home/eun/bin 을 입력해야 한다.

Root 디렉토리로 변경했으면 ls 명령어를 실행하자. ls 명령어는 list의 약자이며 해당 디렉토리의 내용물들을 나열해주는 역활을 한다. 다음과 비슷한 결과물을 볼 수 있을 것이다.

Root 디렉토리 안에 많은 하위 디렉토리들이 있는 것을 볼 수 있다. 그 중 home 디렉토리가 있는것을 볼 수 있다. home 디렉토리 안으로 가보면 자신의 유저 아이디와 동일한 디렉토리가 있을것이다. 이 디렉토리가 바로 유저의 home 디렉토리 이다.

Mac 에서는 다를 수 있다. Mac에서는 /home 디렉토리가 아니라 /Users 디렉토리에 유저의 home 디렉토리가 있다.

cd 명령어를 실행할때 디렉토리 경로를 생략하고 cd 만 입력하면 자동으로 home 디렉토리로 이동한다.
그 뿐만이 아니다. Home 디렉토리 경로를 나타낼때 ~ (tilda) 를 사용해서 나타낼수 있기 까지 하다. 예를 들어, cd ~ 명령어를 사용하면 home 디렉토리로 간다. 또한 cd ~/bin 명령어를 사용하면 home 디렉토리의 하위 디렉토리 bin 디렉토리로 이동한다. 즉 ~ == /home/"username" 이다.

Directory 경로

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

Absolute Path

Absolute path는 이름 그대로 절대적 경로 이다.

Absolute, 즉 "절대적" 이라는 이름이 붙으니 뭔가 반지의 제왕에 나오는 절대반지 가 생각날 수 도 있지만, 여기서 absolute의 의미는 "완전한"에 더 가깝다. 즉 완전한 경로이라는 뜻이다. Absolute path는 root 디렉토리 부터 시작하는 경로를 뜻한다.

앞서 보았던 /home/eun/bin 가 absolute path 이다. Root 디렉토리에서 부터 시작하기 때문에 현재 나의 위치와 상관 없이 항상 정확히 해당 경로로 이동 할 수 있다.

Relative Path

Relative path는 이름 그대로 "상대적인" 경로 이다.

현재 내 위치와 상관없이 이동 할 수 있는 absolute path와 다르게 relative path는 현재 내 위치를 기반으로 움직이는 경로이다. 여기서 기억해야할 중요한 2가지 심볼이 있다. . 과 .. 이다.

경로를 이야기 할때 . (single dot) 은 현재 디렉토리를 이야기 한다. 예를 들어, 현재 /home/eun 디렉토리에 위치해 있는데 eun 디렉토리의 하위 디렉토리 인 bin 디렉토리로 가고 싶다면 cd ./bin 명령어를 입력하면 된다. 여기서 . 은 현재 디렉토리를 뜻함으로 cd /home/eun/bin 과 동일하다. 디렉토리 경로가 길 경우 매번 긴 경로를 다 입력하기 귀찮음으로 편리하라고 만들어진 특별 심볼이다.

.. 는 현재 디렉토리 바로 전 디렉토리, 즉 현재 디렉토리의 상위 디렉토리를 뜻한다. 예를 들어, 현재 디렉토리가 /home/eun/ 인데 /home/yerikim 디렉토리로 가고 싶다면 cd ../yerikim 명령어를 사용하면 된다. /home/eun 디렉토리 에서 .. 는 상위 디렉토리 즉 /home 디렉토리를 뜻함으로 ../yerkim == /home/yerikim 이 된다.

File Path

지금까지는 디렉토리에 관한 경로만 보았는데, 파일로 가는 경로도 디렉토리 경로와 동일하다. 예를 들어, /home/eun/bin 디렉토리 안에 test.py 라는 파일을 열고 싶으면 open /home/eun/bin/tesst.py 라고 실행하면 된다.

Configs

Config file

리눅스에는 설정을 주로 파일을 통해서 한다. 그리고 여러 config file, 즉 여러 설정 파일들이 있다. 너무나 다양한 설정 파일들이 있어서 다 알기가 힘들 정도 이다. 그 중 가장 중요한 설정 파일이 바로 shell 설정 파일이다. 각 shell 마다 고유 설정 파일이 있다. Bash는 .bashrc 라는 설정파일을 사용하고 zsh는 .zshrc 라는 설정 파일을 사용한다.

앞서 Zsh를 이미 설치했을것임으로 Zsh 설정 파일을 보도록 하자.

먼저 zsh 설정 파일의 위치를 알아보도록 하자. Shell 설정 파일을 비롯한 많은 설정 파일들이 대부분 유저의 home 디렉토리에 있다. Zsh 설정 파일도 마찬가지 이다. 하지만 ls 명령어를 사용하면 .zshrc 파일이 보이질 않는다. 그 이유는 .zshrc 파일은 숨겨져 있는 hidden file이기 때문이다. .zshrc 파일 이름이 . 으로 시작하는것이 보일 것이다. 이렇게 . 으로 시작하는 파일이나 디렉토리는 자동으로 숨겨지게 된다. 그리고 이러한 파일을 "dot file" 이라고 한다.

dot file을 볼려면 ls 명령어에 a 옵션을 주어야 한다. 여기서 a는 all 의 약자인다. 즉 숨겨진 파일이든 안숨겨진 파일이든 다 나열 하라는 뜻이다.

Useful Shell Tips

  • Shell 에서 ⬆️(위방향 화살표 버튼)을 눌르면 이전에(previously) 입력했던 명령어를 다시 불러낼 수 있다. ⬆️ 를 또 누르면 이전 그 이전에 입력했던 명령어가 나오면서 이전 명령어들을 계속해서 볼 수 있다.
  • Zsh에서 history-substring-search 플러그인을 설치 했으면 (이 전 과제를 했다면 설치가 됬을것이다) 입력하고자 하는 명령어중 일부분을 입력 후 ⬆️ 버튼을 눌르면 입력된 string이 포함된 이전 입력된 명령어만 불러낼 수 있다.
  • Control + a 눌르면 커서가 해당 줄의 맨 앞으로 이동한다.
  • Control + e 눌르면 커서가 해당 줄의 맨 뒤로 이동한다.
  • Mac에서 Commnad + k 버튼을 눌르면 화면이 reset 된다. 화면에 출력된 것이 너무 많아서 복잡할때 사용하면 깔끔하다.

Basic Shell Commands

Shell 명령어들을 잘 알고 익숙해져야 linux를 잘 쓸수 있다. 다음은 기본적인 shell 명령어 들이다. 찾아보고 직접 실행해 봐서 익숙해지도록 하자.

  • cd
  • ls
  • mv
  • cp
  • cat
  • less
  • tail
  • nohup
  • rm
  • mkdir
  • clear
  • pwd
  • chown
  • chmod
  • grep
  • history
  • ps
profile
Hello!

0개의 댓글