Linux 기초

수야·2020년 5월 4일
2

세션

목록 보기
1/4
post-thumbnail
post-custom-banner

1. Linux Basics

Linux는 1991년 Linus Torvals가 개발한 운영체제 이다. 참고로 Linus Torvals는 아직도 살아있고 여전히 Linux 개발을 이끌고 있다. 그리고 Linux는 오픈소스 이며 누구나 코드를 볼 수 있다.

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

Linux는 윈도우스 처럼 일반일을 위한 운영체제가 아니기 때문에 익숙치 않으면 linux 사용이 많이 어려울 수 있다. Linux를 처음 사용하는 사용자는 아마 다음 부분들을 가장 크게 어려워 할 것이다.

  • Linux Directory Structure
  • PATH
  • Configs
  • Shell Commands

위의 단어들을 처음 들어봤다면 어렵게 느껴질 수 도 있다. 그러나 어렵게 생각하지 않아도 된다. Linux도 외계인이 만든게 아니라 사람이 만든 것이며, 다른 사람들이 사용하라고 만든것이다. 그럼으로 기본적으로 누구나 사용할 수 있게 만들었다. 다만 익숙치 않을 뿐이다. 익숙해지면 어렵지 않다. 오히려 저자는 오랬동안 윈도우스를 사용하지 않았더니 윈도우스가 어렵다. 누가 나에게 윈도우스 고쳐달라고 하면 민망할 정도다.

2. Linux File System Hierarchy (FHS)

먼저 linux의 파일 구조가 어떻게 되어 있는지 알아보자. Linux의 파일 구조는 다음과 같은 tree 형태로 되어 있다.

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

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

/home/eun/bin

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

cd /

cd 명령어는 "change directory"의 약자로 특정 디렉토리로 이동할때 사용된다. cd 명령어 다음에 가고자 하는 디렉토리 경로를 입력하면 된다. 여기서는 root 디렉토리로 가기 때문에 / 하나만 입력했다. 만일 root 디렉토리의 하위 디렉토리인 home 디렉토리 의 하위 디렉토리인 eun 디렉토리의 하위 디렉토리인 bin 디렉토리로 가고자 한다면 /home/eun/bin 을 입력해야 한다.
Root 디렉토리로 변경했으면 ls 명령어를 실행하자. ls 명령어는 list의 약자이며 해당 디렉토리의 내용물들을 나열해주는 역활을 한다. 다음과 비슷한 결과물을 볼 수 있을 것이다.

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

  • 짙은 파란색이 디렉토리 이며 하늘색은 파일을 나타낸다.

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

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

3. Home Direcotry

Linux file system에는 여러 디렉토리가 있지만 그 중 가장 중요하고 기본이 되는 디렉토리는 바로 home 디렉토리 이다. 왜냐하면 home 디렉토리가 유저의 공간이기 때문이다. 주로 home 디렉토리에서 많은 것을 하게 된다.

Home 디렉토리 이외의 다른 디렉토리 들은 주로 system directory 라고 하는데, 즉 리눅스의 운영과 관리에 관련한 파일들이 존재하는 디렉토리 들이다. 이러한 system directory들에 대한 이해도 중요하지만 고급 내용이기 때문에 가장 기초 되는 home 디렉토리에 부터 익숙해져야 한다.

얼마나 중요하면 앞서 본 cd 명령어를 실행할때 디렉토리 경로를 생략하고 cd 만 입력하면 자동으로 home 디렉토리로 이동한다.

그 뿐만이 아니다. Home 디렉토리 경로를 나타낼때 ~ (tilda) 를 사용해서 나타낼수 있기 까지 하다. 예를 들어, cd ~ 명령어를 사용하면 home 디렉토리로 간다. 또한 cd ~/bin 명령어를 사용하면 home 디렉토리의 하위 디렉토리 bin 디렉토리로 이동한다. 즉 ~ == /home/eun 이다 (여기서 eun은 저자의 경우 이다. 다른 유저는 해당 유저의 home 디렉토리일것이다).

4. Basic Shell Commands

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

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

5. 실습내용 요약

  • cd / : 루트 디렉토리로 이동
  • pwd : 현재 디렉토리 절대경로 보여줌
  • ls : 하위 요소 검색
  • home 디렉토리 : 사용자가 유일하게 이용할 수 있는 디렉토리
  • cd : 만 쳐도 홈 디렉토리로 이동함 (cd ~)
  • ls -a : 숨겨진 파일도 볼 수 있음
    • 닷파일(.파일)은 숨겨진 파일로서 설정파일임
  • .(싱글닷) : 현재경로 의미 / ..(더블닷) : 상위경로 의미
    • cd ../../../ : 3개의 상위경로로 이동
    • cd ./seungholee : 현재 위치 하위 seungholee로 이동
  • ls -la : 조금 더 자세히 보는 옵션
  • which ls : ls가 어디에 위치하는지 알아보기
  • echo $PATH : PATH의 환경변수 값이 출력
  • echo $HOME : home의 환경변수 값이 출력
  • mkdir bin : 디렉토리 만들기
  • vi .bash_profile로 들어가서,
  • export PATH="/Users/seungholee/bin:$PATH" 저장
  • source .bin
  • echo $PATH
  • bin라는 경로가 추가된 것을 확인할 수 있음
  • mv abc cba : 이름 혹은 경로 변경하기
  • cp -r: 카피하기
  • vi abc.txt : abc 파일 만들기
  • cat abc.txt : abc 파일 실행하기
  • rm abc.txt : 파일 지우기 (remove)
  • rm -r abc : 디렉토리 지우기
  • rmdir abcd : 디렉토리 지우기
  • clear : 화면창 정리
  • ls | grep m : m이 포함된 디렉토리를 보여줌
  • history : 여때까지 명령어 히스토리 보여줌
  • man ls : ls 매뉴얼을 보여줌 (너무 복잡함)
  • tldr ls : 핵심적인 매뉴얼만 보여줌 (tldr 설치 완료했음)



참고링크

https://stackoverflow.com/c/wecode/questions/301/302#302
https://velog.io/@jcinsh/%EB%A6%AC%EB%88%85%EC%8A%A4-%EA%B8%B0%EC%B4%88

profile
운동을 좋아하는 QA 및 개발자
post-custom-banner

0개의 댓글