3 분 소요

이 장에서 배울 것

이번 장에서는 리눅스(Linux)와 터미널(terminal)을 배웁니다. 리눅스는 생물정보학에서 가장 많이 쓰이는 운영체제 계열입니다. 터미널은 마우스로 클릭하는 대신 글자로 명령을 입력해 컴퓨터를 조작하는 창입니다.

핵심 용어를 먼저 정리하겠습니다.

  • 리눅스(Linux): 연구실 서버, 클라우드, 생물정보학 도구에서 널리 쓰이는 운영체제입니다.
  • 터미널(terminal): 명령어를 입력하는 창입니다.
  • 셸(shell): 사용자의 명령을 해석해서 컴퓨터에 전달하는 프로그램입니다.
  • 명령어(command): 컴퓨터에게 시키는 짧은 지시입니다.
  • 옵션(option): 명령어의 행동을 조금 바꾸는 추가 설정입니다.
  • 파이프(pipe): 한 명령어의 결과를 다른 명령어로 넘기는 기능입니다. 기호 |를 씁니다.
  • 리다이렉션(redirection): 결과를 화면이 아니라 파일로 보내는 기능입니다. 기호 >를 자주 씁니다.

Linux와 터미널

가장 쉬운 비유: 말로 조종하는 컴퓨터

평소에는 폴더를 열고 파일을 클릭합니다. 이것은 그래픽 사용자 인터페이스(GUI)를 쓰는 방식입니다. 터미널은 반대로 글자로 명령합니다.

예를 들어 “현재 폴더에 뭐가 있는지 보여줘”라는 말을 터미널에서는 이렇게 씁니다.

ls

처음에는 딱딱해 보이지만, 대량 파일을 처리할 때는 터미널이 훨씬 강력합니다. FASTQ 파일 100개를 하나씩 클릭해서 확인하는 것은 힘들지만, 명령어로는 한 번에 처리할 수 있습니다.

기본 명령어

가장 먼저 익혀야 할 명령어는 다음과 같습니다.

pwd      # 현재 위치 출력
ls       # 현재 폴더의 파일 목록 보기
cd data  # data 폴더로 이동
mkdir results  # results 폴더 만들기
cp a.txt b.txt # a.txt를 b.txt로 복사
mv old.txt new.txt # 이름 바꾸기 또는 이동
rm temp.txt # 파일 삭제

주의할 점은 rm입니다. 삭제 명령은 되돌리기 어렵습니다. 초보자는 rm을 쓸 때 파일 이름을 꼭 확인해야 합니다.

파일 내용 보기

큰 파일을 열 때는 메모장으로 전체를 여는 것이 위험할 수 있습니다. 파일이 너무 크면 프로그램이 멈출 수 있습니다. 그래서 일부만 보는 명령어를 씁니다.

cat genes.txt      # 파일 전체 출력
head genes.txt     # 앞부분 보기
tail genes.txt     # 뒷부분 보기
less genes.txt     # 한 화면씩 보기

FASTQ 같은 대용량 파일은 보통 head로 앞부분만 확인합니다.

head sample.fastq

글자 찾기: grep

grep은 파일 안에서 특정 글자를 찾는 명령어입니다.

grep BRCA1 genes.txt

이 명령은 genes.txt에서 BRCA1이 들어간 줄을 찾아 보여줍니다. 유전자 이름, 샘플 이름, 특정 패턴을 찾을 때 유용합니다.

파이프: 명령어 이어 붙이기

파이프(|)는 한 명령어의 결과를 다음 명령어로 넘깁니다.

cat genes.txt | grep BRCA1

뜻은 이렇습니다.

  1. cat genes.txt로 파일 내용을 출력한다.
  2. 그 결과를 grep BRCA1로 넘긴다.
  3. BRCA1이 들어간 줄만 남긴다.

처음에는 낯설지만, 파이프는 생물정보학 실무에서 매우 자주 쓰입니다.

리다이렉션: 결과를 파일로 저장하기

명령어 결과를 화면에만 보여주지 않고 파일로 저장할 수도 있습니다.

grep BRCA1 genes.txt > brca1_result.txt

이 명령은 genes.txt에서 BRCA1이 들어간 줄을 찾아 brca1_result.txt에 저장합니다.

권한과 실행

리눅스에서는 파일마다 읽기, 쓰기, 실행 권한이 있습니다. 초보 단계에서는 ls -l을 보면 권한이 표시된다는 정도만 알면 됩니다.

ls -l

스크립트를 실행하려면 실행 권한이 필요할 수 있습니다. 다만 입문 단계에서는 대부분 다음처럼 프로그램 이름을 직접 호출하는 방식으로 충분합니다.

python analyze.py

생물정보학에서 왜 중요한가

많은 생물정보학 도구는 터미널에서 실행됩니다.

fastqc sample.fastq
samtools view aligned.bam

지금은 이 도구들의 뜻을 몰라도 됩니다. 중요한 것은 “생물정보학 분석 도구는 터미널 명령어 형태로 많이 쓰인다”는 점입니다. 그래서 터미널을 모르면 분석 도구를 설치하고 실행하는 단계에서 막힙니다.

실전 감각: 명령어를 작은 분석 파이프라인으로 만들기

터미널의 힘은 명령어를 이어 붙일 때 나옵니다. 유전자 목록에서 BRCA가 들어간 줄 수를 세려면 다음처럼 쓸 수 있습니다.

grep BRCA genes.txt | wc -l

grep BRCA genes.txt가 먼저 해당 줄만 고르고, 그 결과를 wc -l이 받아 줄 수를 셉니다. 압축된 FASTQ의 앞부분을 확인할 때는 다음처럼 쓸 수 있습니다.

zcat sample.fastq.gz | head

>>>도 반드시 구분해야 합니다. >는 파일을 새로 쓰므로 기존 결과를 덮어쓸 수 있고, >>는 기존 파일 끝에 덧붙입니다.

grep BRCA genes.txt > result.txt
grep TP53 genes.txt >> result.txt

*는 여러 글자를 대신하는 와일드카드입니다. ls *.fastq.gz는 현재 폴더에서 .fastq.gz로 끝나는 파일을 모두 보여줍니다.

초보자가 자주 하는 실수는 현재 위치를 확인하지 않고 상대경로를 쓰기, rm을 너무 쉽게 실행하기, >로 중요한 결과를 덮어쓰기, 압축 파일을 일반 텍스트 파일처럼 읽으려 하기입니다. 터미널은 분석을 시작하기 전 데이터를 확인하는 품질관리 도구이기도 합니다.

미니 실습 블록: Linux 명령어로 FASTQ 파일 목록 점검하기

이 실습은 Linux 명령어로 FASTQ 파일 목록 점검하기를 직접 손으로 확인하는 연습입니다. 왜 필요한가 하면, 수십~수천 개 파일을 마우스로 확인하는 방식은 생물정보학 분석에서 금방 한계가 오기 때문입니다.

ls data/raw
ls data/raw/*.fastq.gz
ls data/raw/*.fastq.gz | wc -l
head data/raw/metadata.tsv
ls data/raw | grep sample01

각 코드 요소의 의미를 풀어보면 다음과 같습니다. |는 왼쪽 명령의 출력을 오른쪽 명령으로 넘기는 파이프입니다. wc -l은 줄 수를 세므로 파일 목록이 한 줄에 하나씩 나오면 파일 개수를 확인할 수 있습니다.

생물정보학/계산생물학에서 쓰이는 장면은 분명합니다. paired-end 샘플 3개를 받았다면 보통 R1/R2가 있어 FASTQ 6개가 기대됩니다.

흔한 오해 또는 주의점도 있습니다. 결과가 5개라면 파일 누락이나 확장자 불일치를 먼저 의심해야 합니다. rm은 원본 폴더에서 특히 조심합니다.

핵심 정리

터미널은 명령어로 컴퓨터와 대화하는 창입니다. pwd, ls, cd, mkdir, cp, mv, rm, head, grep 같은 기본 명령어를 알면 파일을 빠르게 탐색하고 처리할 수 있습니다. 생물정보학에서는 대량 파일을 다루므로 터미널은 선택이 아니라 기본 도구입니다.

문제 풀이

Linux와 터미널

0 / 40
Gemini AI 채점

주관식 답안은 Gemini API로 채점합니다. API 키는 이 브라우저에만 저장됩니다.

API KEY 미등록
  1. 1. [쉬움] 객관식

    터미널(terminal)의 설명으로 적절한 것은?

    선택지
  2. 2. [쉬움] 객관식

    pwd 명령어의 역할은?

    선택지
  3. 3. [쉬움] 객관식

    ls 명령어의 역할은?

    선택지
  4. 4. [쉬움] 객관식

    cd data의 의미는?

    선택지
  5. 5. [쉬움] 객관식

    mkdir results의 의미는?

    선택지
  6. 6. [쉬움] 객관식

    cp a.txt b.txt의 의미로 적절한 것은?

    선택지
  7. 7. [보통] 객관식

    mv old.txt new.txt는 어떤 작업에 쓸 수 있는가?

    선택지
  8. 8. [보통] 객관식

    rm temp.txt를 조심해야 하는 이유는?

    선택지
  9. 9. [쉬움] 객관식

    큰 파일의 앞부분만 보고 싶을 때 적절한 명령어는?

    선택지
  10. 10. [보통] 객관식

    파일 안에서 BRCA1이 들어간 줄을 찾는 명령어로 적절한 것은?

    선택지
  11. 11. [보통] 객관식

    파이프 |의 역할로 적절한 것은?

    선택지
  12. 12. [보통] 객관식

    리다이렉션 >의 역할로 적절한 것은?

    선택지
  13. 13. [보통] 객관식

    grep TP53 genes.txt > result.txt의 의미로 적절한 것은?

    선택지
  14. 14. [쉬움] 객관식

    cat genes.txt의 역할로 적절한 것은?

    선택지
  15. 15. [보통] 객관식

    less genes.txt가 유용한 상황은?

    선택지
  16. 16. [보통] 객관식

    ls -l에서 볼 수 있는 정보로 설명한 것은?

    선택지
  17. 17. [보통] 객관식

    생물정보학에서 터미널이 중요한 이유는?

    선택지
  18. 18. [보통] 객관식

    python analyze.py의 의미로 적절한 것은?

    선택지
  19. 19. [쉬움] 객관식

    옵션(option)의 설명으로 적절한 것은?

    선택지
  20. 20. [보통] 객관식

    셸(shell)의 역할로 적절한 것은?

    선택지
  21. 21. [중간] 객관식

    grep BRCA genes.txt | wc -l의 의미로 가장 적절한 것은?

    선택지
  22. 22. [중간] 객관식

    기존 result.txt를 덮어쓰지 않고 뒤에 결과를 추가하려면 어떤 기호를 쓰는가?

    선택지
  23. 23. [중간] 객관식

    현재 폴더의 모든 .fastq.gz 파일을 나열하는 명령으로 가장 적절한 것은?

    선택지
  24. 24. [중간] 객관식

    head sample.fastq를 쓰는 주된 이유는?

    선택지
  25. 25. [중간] 객관식

    grep TP53 genes.txt > tp53.txt 실행 결과로 맞는 것은?

    선택지
  26. 26. [중간] 객관식

    압축된 FASTQ의 앞부분을 확인하는 흐름으로 가장 적절한 것은?

    선택지
  27. 27. [중간] 객관식

    pwd를 먼저 확인하는 습관이 중요한 이유는?

    선택지
  28. 28. [중간] 객관식

    초보자가 rm *.fastq.gz를 조심해야 하는 가장 큰 이유는?

    선택지
  29. 29. [실전] 객관식

    ls data/raw/*.fastq.gz | wc -l의 의미는?

    선택지
  30. 30. [실전] 객관식

    paired-end 샘플 3개인데 FASTQ 파일이 5개만 보일 때 먼저 의심할 점은?

    선택지
  31. 주관식 31. [실습] 주관식 · Gemini 채점

    현재 폴더의 파일 목록을 보고, 그중 앞부분만 확인하고 싶은 파일이 sample.fastq라면 어떤 명령어 두 개를 쓸 수 있는지 쓰라.

  32. 주관식 32. [실습] 주관식 · Gemini 채점

    grep BRCA1 genes.txt > brca1.txt 명령을 단계별로 설명하라.

  33. 주관식 33. [실습] 주관식 · Gemini 채점

    rm 명령어를 사용할 때 조심해야 하는 이유를 설명하라.

  34. 주관식 34. [실습] 주관식 · Gemini 채점

    파이프 |가 왜 대량 파일 처리에 유용한지 설명하라.

  35. 주관식 35. [실습] 주관식 · Gemini 채점

    mkdir resultsmv output.txt results/output.txt를 실행하면 어떤 일이 일어나는지 설명하라.

  36. 주관식 36. [실습] 주관식 · Gemini 채점

    터미널과 GUI의 차이를 설명하라.

  37. 주관식 37. [실습] 주관식 · Gemini 채점

    grep BRCA genes.txt | wc -l > brca_count.txt가 어떤 순서로 동작하는지 설명하라.

  38. 주관식 38. [실습] 주관식 · Gemini 채점

    FASTQ 파일 30개가 있는 폴더에서 ls *.fastq.gzhead sample1.fastq를 쓰는 상황을 비교해 설명하라.

  39. 주관식 39. [실습] 주관식 · Gemini 채점

    data/raw 안의 .fastq.gz 파일 개수를 세는 명령어를 작성하라.

  40. 주관식 40. [실습] 주관식 · Gemini 채점

    실제 파일은 .fastq.gz인데 ls *.fq.gz 결과가 없다. 원인을 설명하라.