여행 후 느슨해진 일상에 자극을 주고자 부트캠프에 지원해 운이 좋게 참여할 수 있게 되었다. 아직 여러 부분에서 부족하기 때문에 긴장 만땅 상태로 수업을 들었다. 첫 수업의 주제는 리눅스였다.
작년에 학교에서 오픈소스 관련 수업을 들었고, 자연스레 유닉스와 리눅스에 대해 공부했던 기억이 있어 꽤나 반가웠다. 갓 2학년때 들은 리눅스와 2.999 학년인 지금 받아들이는 것에 어떤 차이가 있을지 ...
1. 리눅스란 ?
리눅스는 쉽게 말하면 운영체제 중 하나라고 보면 된다. 여기서 운영체제는 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터의 하드웨어 자원을 운영, 관리하고 프로그램을 실행할 수 있는 환경을 제공한다.
리눅스 운영체제를 사용하는 운영체제에는 안드로이드 OS, iOS, MacOsX 등이 있다.
윈도우에서는 리눅스 지원이 안 되기 때문에 무료 리눅스 운영체제를 제공하는 우분투를 사용하게 된다. 그런데 하나의 pc에 운영체제가 2개일 수 없고, 그렇다고 기존 운영체제를 지워버릴 수 없어서 가상머신을 만들고 그 위에서 리눅스를 돌린다.
가상머신 툴은 대표적으로 VMWare와 VirtualBox가 있고, 이 수업에선 VirtualBox를 사용했다.
2. 리눅스의 구조
리눅스의 구조는 위와 같이 이루어져 있다.
- 커널 (kernel)
- 운영체제의 핵심으로 하드웨어를 운영하고 관리한다.
- 프로세스, 파일, 메모리, 통신, 주변창치에 접근해 관리한다.
- 커널이 하드웨어를 관리함으로서 유저가 하드웨어에 대해 생각하지 않아도 되어 복잡성이 줄어든다는 장점이 있다.
- 시스템 호출 (system call)
- 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스 역할을 한다.
- 쉘 (shell)
- 사용자와 운영체제 사이의 인터페이스이다.
- 사용자가 입력한 명령어를 해석해 수행해주는 명령어 해석기
- 즉, 터미널이 쉘을 통해 커널로 명령어를 전달한다고 생각하면 된다.
3. 환경 설정
리눅스에 대해 얄팍하게 알아보았으니, 이제 실제로 이용해야 한다. 버추어박스에서 가상환경을 만들어두고, movaXterm으로 리눅스에 원격접속 하는 방식으로 실습을 진행했다.
📌 명령어 다운로드 -> 패키지 매니저 (apt) 사용
어떤 명령어를 쓸 땐 따로 설치하는 과정이 필요한데, 이때 사용하는 명령어가 apt이다. 패키지를 관리하는 명령어라고 생각하면 되고, 주요 명령어는 다음과 같다. 두꺼운 글씨는 관리자 권한이 필요하다 (sudo)
apt update : 패키지를 다운로드할 수 있는 저장소의 최신 정보를 업데이트한다.
apt list --upgradable : 업그레이드가 가능한 패키지 목록을 출력한다.
apt upgrade : 전체 패키지를 업그레이드한다.
apt --only-upgrade install 패키지명 : 특정 패키지만 업그레이드한다.
apt install 패키지명 : 특정 패키지를 설치한다.
apt list --installed : 설치된 패키지 목록을 출력한다.
apt search 검색어 : 패키지를 검색한다.
apt show 패키지명 : 특정 패키지에 대한 정보를 확인한다.
apt remove 패키지명 : 특정 패키지를 삭제한다.
가상머신은 아래와 같은 구조로 연결된다.
한마디로 리눅스에 접근하려면 내pc의 ip만 필요한거고, 이렇게 만들기 위해 버추어박스에서 포트포워딩을 설정한다.
호스트ip에 내 pc의 ip를, 게스트ip에 리눅스 ip를 입력하면 끝이다. ip주소를 모른다면, 터미널에 ifconfig 를 입력해보자.
여기서 조심할 것은 위 과정을 마치고 버추어박스를 켠 채로 movaXterm에 접속해야 한다는 것이다. 버추어박스를 켜놓지 않으면 연결이 되지 않는다.
4. 리눅스 명령어
솔직히 명령어가 그렇게 중요하다고 생각하진 않는다! 사용할 때 모르는 건 그때그때 구글링 해서 쓰면 되니까 ..!
그래도 많이 쓰는 명령어와 가물가물했던 명령어 가볍게 정리하려고 한다.
- touch : 빈 파일 생성. 이미 생성된 파일이라면 생성시간만 바뀜
- 사실상 만드는 명령어가 아니라 접근한다고 생각해주면 됨. 해당 파일이 없다면 새로운 빈 파일을 한 개 생성해 주는 것
- 옵션
- -c : 파일이 존재하지 않으면 새 파일을 만들지 않게 함
- rm / rmdir : 파일이나 디렉토리를 삭제하는 명령어
- rm : 파일삭제, 파일이 들어있는 디렉토리 삭제 (이 경우엔 -r 옵션)
- rmdir : 비어있는 디렉토리를 삭제
- 옵션 -i : 지울 때 한 번씩 질문 문구가 뜸
- echo : 작성한 것을 콘솔에 출력
- 파일에 간단한 문장 작성할 땐 꺽쇠 (>) 표시로 해줌
echo 'Hello World' > sample.txt
- 꺽쇠 한 개는 덮어쓰기, 두 개는 이어쓰기
- less : 내용이 긴 파일을 열 때 사용하는 명령어
- 페이지 넘길 때
- /문자열은 문자열을 아래 방향으로 검색
- ?문자열은 문자열을 위 방향으로 검색
- n은 검색 결과가 여러 개라면 다음 검색 결과로 이동
- N은 검색 결과가 여러 개라면 이전 검색 결과로 이동
- 열고 들어가서 /[찾고싶은 단어] 를 쓰면 찾은 문자열을 알려줌
- ex | /for → for이 들어간 부분들을 표시함
- 페이지 넘길 때
- 심볼릭 링크 → 원본파일이 사라져도 심볼릭 링크는 지워지지 않음
- 대신 실행시 오류 발생
- find
- 원하는 파일의 경로를 출력함
- ex | $ find . -type f -name hello.txt -print
- type이 f(file)이고, name이 hello.txt인 파일의 경로를 print 해라
- vim
- 로컬에서의 메모장 느낌
- 파일을 열기도 하고, 생성하기도 함 (없는 파일에 메소드 사용하면 해당 파일을 생성)
- vim hello2.txt
- 여기서 내용들의 행 번호를 띄우고 싶으면 Esc 누른 후, :set number 쓰면 됨
- sort
- 정렬해주는 명령어
- -k 옵션을 주면 원하는 위치의 필드를 기준으로 정렬을 할 수 있음
- -u 옵션을 주면 중복을 제거한 후 정렬할 수 있음 (unique)
- 계정생성 (sudo adduser 유저명)
- 권한 부여 ( chmod )
- grep
- 원하는 단어가 있는 행만 출력
- 행의 개수만 출력하려면 -n 옵션 이용
- 대소문자 구분 없애고 싶으면 -i 옵션 이용