챕터 18 선수지식: Linux 기초에 들어가기 전 알아야 할 것
1. 18챕터는 무엇을 하려는 장인가요?
18챕터부터는 실습편입니다. 이제 이론을 읽는 데서 그치지 않고, 실제 데이터를 컴퓨터에서 다루기 시작합니다. 그 출발점이 Linux입니다.
생명정보학 도구는 Linux 환경에서 돌아가는 경우가 많습니다. NGS 데이터 처리 도구, 정렬 도구, 변이 호출 도구, R/Python 분석 패키지, 서버와 고성능 컴퓨팅 환경이 대부분 Linux와 잘 맞습니다. 그래서 의생명정보학을 실제로 하려면 Linux 명령줄에 익숙해져야 합니다.
처음에는 검은 화면에 글자만 치는 것이 낯설 수 있습니다. 하지만 Linux 명령줄은 마우스로 하나씩 클릭하는 방식보다 대량 파일 처리와 자동화에 강합니다. Fastq 파일 수백 개를 한꺼번에 처리하거나, 여러 샘플에 같은 분석을 반복하거나, 서버에서 며칠 동안 돌아가는 작업을 실행하려면 명령줄 방식이 훨씬 유리합니다.
18장의 기본 목표는 다음입니다.
파일과 디렉토리를 명령어로 이동하고, 프로그램을 설치하고, 데이터를 연결해 처리하고, 반복 작업을 자동화하는 기초 감각을 잡는 것입니다.
2. 운영체제는 컴퓨터 자원을 관리하는 관리자입니다
Linux를 이해하려면 운영체제(OS)가 무엇인지 알아야 합니다. 운영체제는 컴퓨터의 관리자입니다. 프로그램이 CPU를 쓰게 하고, 메모리를 나누어주고, 파일을 저장하고, 키보드와 화면 같은 장치를 연결해줍니다.
Windows, macOS, Linux는 모두 운영체제입니다. 차이는 사용 방식과 철학, 소프트웨어 생태계에 있습니다. Windows는 개인용 PC에서 많이 쓰이고, macOS는 애플 기기에서 쓰입니다. Linux는 서버, 연구용 컴퓨팅, 클라우드, 슈퍼컴퓨터, 생명정보학 분석 환경에서 매우 널리 쓰입니다.
Linux 자체는 정확히 말하면 커널(kernel)을 가리키는 경우가 많습니다. 커널은 운영체제의 핵심 부분으로, 하드웨어와 프로그램 사이에서 자원을 관리합니다. 그런데 우리가 실제로 쓰는 Linux 시스템은 커널만으로 이루어진 것이 아닙니다. 명령어 도구, 패키지 관리자, 쉘, 라이브러리, 데스크톱 환경 등이 함께 묶여 있습니다.
그래서 GNU/Linux라는 표현도 나옵니다. GNU 프로젝트에서 만든 많은 도구들과 Linux 커널이 결합해 우리가 쓰는 운영체제 환경이 만들어졌다는 뜻입니다.
3. 배포판은 “Linux를 사용하기 쉽게 묶어놓은 세트”입니다
Linux는 하나만 있는 것이 아닙니다. Ubuntu, Debian, CentOS, Fedora, Rocky Linux 같은 여러 배포판(distribution)이 있습니다. 배포판은 Linux 커널과 여러 기본 프로그램, 설치 도구, 패키지 관리자, 설정 방식을 묶어놓은 운영체제 세트입니다.
초보자는 스마트폰 제조사 비유로 생각해도 됩니다. Android라는 큰 기반은 같지만 삼성, 샤오미, 구글 픽셀의 구성과 기본 앱이 조금씩 다릅니다. Linux도 비슷하게 기본 원리는 비슷하지만 배포판마다 패키지 설치 방식이나 관리 방식이 조금씩 다릅니다.
생명정보학 실습에서는 Ubuntu 계열을 많이 접할 가능성이 큽니다. Ubuntu는 Debian 계열이고, 패키지 관리자로 apt를 사용합니다. Red Hat 계열은 yum이나 dnf를 사용합니다.
| 계열 | 대표 배포판 | 패키지 관리자 |
|---|---|---|
| Debian 계열 | Debian, Ubuntu | apt |
| Red Hat 계열 | RHEL, CentOS, Rocky Linux, Fedora | yum, dnf |
패키지 관리자는 프로그램 설치를 도와주는 도구입니다. 스마트폰의 앱스토어처럼 생각하면 됩니다. 다만 서버와 연구 환경에서는 명령어로 설치하는 경우가 많습니다.
4. 쉘은 “명령어를 받아 운영체제에 전달하는 창구”입니다
쉘(shell)은 사용자가 입력한 명령어를 해석해서 운영체제에 전달하는 프로그램입니다. 우리가 터미널에 ls, cd, python 같은 명령어를 입력하면 쉘이 그것을 읽고 실행합니다.
가장 흔한 쉘은 bash입니다. zsh, fish 같은 쉘도 있습니다. macOS에서는 zsh가 기본인 경우가 많고, Linux 서버에서는 bash를 자주 만납니다.
터미널(terminal)과 쉘은 비슷하게 쓰이지만 정확히는 다릅니다. 터미널은 글자를 입력하고 출력하는 화면 프로그램이고, 쉘은 그 안에서 명령어를 해석하는 프로그램입니다. 초보 단계에서는 “터미널을 열면 쉘에 명령어를 입력한다”고 이해하면 충분합니다.
명령줄을 무서워할 필요는 없습니다. 명령어는 결국 짧은 문장입니다. 예를 들어 ls는 “현재 폴더 안에 뭐가 있는지 보여줘”라는 뜻이고, cd data는 “data 폴더로 이동해줘”라는 뜻입니다.
5. 파일시스템은 “컴퓨터 안의 주소 체계”입니다
Linux에서 파일과 디렉토리는 나무처럼 연결되어 있습니다. 가장 위에는 /가 있습니다. 이것을 루트 디렉토리라고 합니다. 여기서부터 모든 경로가 시작됩니다.
Windows에서는 C:\Users\... 같은 경로를 많이 봅니다. Linux에서는 /home/user/project처럼 /로 구분된 경로를 씁니다.
경로에는 절대경로와 상대경로가 있습니다. 절대경로는 /에서 시작하는 전체 주소입니다. 예를 들어 /home/hyunseok/data/sample.fastq는 어디에서 보든 같은 파일을 가리킵니다. 상대경로는 현재 위치를 기준으로 한 주소입니다. 예를 들어 현재 /home/hyunseok에 있다면 data/sample.fastq라고 써도 같은 파일을 가리킬 수 있습니다.
현재 내가 어디 있는지 확인하는 명령어가 pwd입니다. 이동할 때는 cd를 씁니다. 목록을 볼 때는 ls를 씁니다.
초보자가 가장 먼저 익혀야 할 세 명령어는 이것입니다.
pwd
ls
cd 디렉토리명
이 세 가지는 “내가 어디 있는지 보고, 주변에 뭐가 있는지 보고, 원하는 곳으로 이동하는” 기본 동작입니다.
6. 파일과 디렉토리 명령어는 실제 물건 정리와 비슷합니다
Linux 명령어는 처음에는 암호처럼 보이지만, 대부분 실제 파일 정리 행동과 대응됩니다.
mkdir은 새 디렉토리를 만듭니다. cp는 복사합니다. mv는 이동하거나 이름을 바꿉니다. rm은 삭제합니다. cat이나 less는 파일 내용을 봅니다.
| 행동 | 명령어 | 쉬운 설명 |
|---|---|---|
| 현재 위치 확인 | pwd |
내가 어느 디렉토리에 있는지 봅니다. |
| 목록 보기 | ls |
현재 디렉토리 안의 파일을 봅니다. |
| 이동 | cd |
다른 디렉토리로 들어갑니다. |
| 폴더 만들기 | mkdir |
새 디렉토리를 만듭니다. |
| 복사 | cp |
파일을 복사합니다. |
| 이동/이름 변경 | mv |
파일 위치나 이름을 바꿉니다. |
| 삭제 | rm |
파일을 지웁니다. |
| 내용 보기 | cat, less |
텍스트 파일을 확인합니다. |
주의할 점은 rm입니다. Linux에서 rm으로 삭제한 파일은 휴지통으로 가는 것이 아니라 바로 사라지는 경우가 많습니다. 특히 rm -r은 디렉토리 전체를 지울 수 있습니다. 생명정보학 데이터는 용량이 크고 다시 만들기 어려운 경우도 있으므로 삭제 명령은 매우 조심해야 합니다.
명령어를 외우는 것보다 중요한 것은 “명령어가 파일에 어떤 변화를 일으키는가”를 생각하는 습관입니다.
7. 권한은 “누가 읽고, 쓰고, 실행할 수 있는가”입니다
Linux에는 파일 권한(permission) 개념이 있습니다. 어떤 파일은 읽을 수만 있고, 어떤 파일은 수정할 수 있고, 어떤 파일은 실행할 수 있습니다.
권한은 보통 읽기(read), 쓰기(write), 실행(execute)으로 나뉩니다.
- 읽기 권한은 파일 내용을 볼 수 있는 권한입니다.
- 쓰기 권한은 파일을 수정하거나 삭제할 수 있는 권한입니다.
- 실행 권한은 프로그램이나 스크립트를 실행할 수 있는 권한입니다.
chmod는 권한을 바꾸는 명령어입니다. 예를 들어 쉘 스크립트를 실행하려면 실행 권한이 필요할 수 있습니다.
chmod +x script.sh
./script.sh
여기서 chmod +x는 “이 파일을 실행할 수 있게 해줘”라는 뜻입니다. ./script.sh는 현재 디렉토리에 있는 script.sh를 실행한다는 뜻입니다.
루트(root) 권한도 중요합니다. root는 시스템 관리자 권한입니다. 모든 것을 바꿀 수 있는 강력한 권한이기 때문에 위험하기도 합니다. 프로그램 설치나 시스템 설정 변경에는 root 권한이 필요할 수 있지만, 아무 명령에나 무심코 sudo를 붙이는 습관은 좋지 않습니다.
8. 패키지 매니저와 가상환경은 “도구 상자를 관리하는 방법”입니다
생명정보학 실습에서는 여러 프로그램과 라이브러리를 설치해야 합니다. 예를 들어 samtools, bwa, bedtools 같은 도구가 필요할 수 있고, Python에서는 numpy, pandas, matplotlib, biopython 같은 패키지가 필요할 수 있습니다.
문제는 프로젝트마다 필요한 버전이 다를 수 있다는 점입니다. 어떤 프로젝트는 Python 3.9와 특정 버전의 numpy가 필요하고, 다른 프로젝트는 Python 3.13과 최신 numpy가 필요할 수 있습니다. 모든 것을 한 공간에 섞어 설치하면 충돌이 생길 수 있습니다.
그래서 가상환경이 필요합니다. 가상환경은 프로젝트별 도구 상자입니다. 한 프로젝트의 도구 상자 안에 설치한 패키지는 다른 프로젝트에 영향을 덜 줍니다.
18장에서는 Micromamba와 uv가 나옵니다. 둘은 역할이 조금 다릅니다.
Micromamba는 Conda 계열의 빠른 대안으로, Python뿐 아니라 R, samtools, bwa, bedtools 같은 생명정보학 도구를 설치하는 데 유용합니다. uv는 Python 패키지와 Python 실행 환경을 빠르게 관리하는 도구입니다.
처음에는 이렇게 구분하면 됩니다.
| 도구 | 주로 잘하는 일 |
|---|---|
| apt | 운영체제 수준의 프로그램 설치입니다. |
| Micromamba | 생명정보학 도구와 다양한 언어 환경 관리입니다. |
| uv | Python 프로젝트와 Python 패키지 관리입니다. |
실습을 하다 보면 설치 명령어를 그대로 따라 치게 될 수 있습니다. 이때 중요한 것은 “내가 지금 전역 시스템에 설치하는가, 특정 가상환경 안에 설치하는가”를 구분하는 것입니다.
9. 표준입출력은 “프로그램의 입구와 출구”입니다
Linux가 강력한 이유 중 하나는 프로그램들의 입출력을 쉽게 연결할 수 있기 때문입니다. 이를 이해하려면 표준입력, 표준출력, 표준에러를 알아야 합니다.
표준입력(stdin)은 프로그램으로 들어가는 입력입니다. 보통 키보드나 파일에서 들어옵니다. 표준출력(stdout)은 프로그램의 일반 결과가 나가는 곳입니다. 보통 화면에 출력됩니다. 표준에러(stderr)는 에러 메시지가 나가는 곳입니다.
리다이렉션은 이 입출력 방향을 바꾸는 것입니다.
ls > file_list.txt
이 명령은 ls의 결과를 화면에 보여주는 대신 file_list.txt에 저장합니다. >는 덮어쓰기입니다. >>는 기존 파일 뒤에 추가합니다.
ls >> file_list.txt
에러만 따로 저장할 수도 있습니다.
command 2> error.log
여기서 2는 표준에러를 뜻합니다. 처음에는 숫자가 낯설지만, Linux에서는 표준입력 0, 표준출력 1, 표준에러 2라는 번호를 씁니다.
표준출력과 표준에러를 함께 저장하는 경우도 있습니다
실습을 하다 보면 결과와 에러 메시지를 한 파일에 함께 남기고 싶을 때가 있습니다.
command > all.log 2>&1
이 명령은 표준출력은 all.log로 보내고, 표준에러도 같은 곳으로 합치라는 뜻입니다. 2>&1은 “2번 통로인 표준에러를 1번 통로인 표준출력이 가는 곳으로 보내라”는 의미입니다.
반대로 결과와 에러를 따로 저장할 수도 있습니다.
command > result.txt 2> error.log
초보자는 >가 일반 결과, 2>가 에러 메시지, 2>&1이 둘을 합치는 방법이라고 먼저 기억하면 됩니다.
10. 파이프는 “한 명령어의 결과를 다음 명령어에 넘기는 연결관”입니다
파이프(pipe)는 Linux 명령줄의 핵심입니다. 기호는 |입니다. 한 명령어의 출력을 다음 명령어의 입력으로 넘깁니다.
예를 들어 다음 명령은 현재 디렉토리의 파일 목록 중 .txt가 들어간 줄만 보여줍니다.
ls -la | grep ".txt"
여기서 ls -la의 출력이 바로 grep의 입력으로 들어갑니다. grep은 특정 패턴이 들어간 줄을 찾는 명령어입니다.
생명정보학에서는 큰 파일을 처리할 때 파이프가 특히 중요합니다. 예를 들어 압축된 파일을 풀어서 화면에 출력하고, 그중 특정 패턴을 찾고, 정렬하고, 개수를 세는 작업을 한 줄로 연결할 수 있습니다.
zcat large_file.gz | grep "pattern" | sort | uniq -c | head -10
처음 보면 길어 보이지만, 하나씩 나누면 단순합니다.
zcat large_file.gz: 압축 파일 내용을 읽습니다.grep "pattern": 원하는 패턴이 있는 줄만 고릅니다.sort: 정렬합니다.uniq -c: 같은 줄의 개수를 셉니다.head -10: 앞의 10줄만 봅니다.
이렇게 작은 도구들을 연결해 큰 작업을 만드는 것이 Linux식 사고입니다.
본편에서 추가로 자주 만나는 명령어들
18장 본편에는 기본 명령어가 많이 나옵니다. 모두 외우기보다 “무슨 계열의 작업인지”로 묶어두면 좋습니다.
| 명령어 | 하는 일 | 쉬운 감각 |
|---|---|---|
wget |
인터넷 주소에서 파일을 내려받습니다. | 웹에서 데이터 파일 가져오기 |
ln -s |
심볼릭 링크를 만듭니다. | 긴 경로 대신 쓰는 바로가기 만들기 |
htop |
실행 중인 프로세스와 자원 사용량을 봅니다. | 컴퓨터가 얼마나 바쁜지 보기 |
groups |
내가 속한 사용자 그룹을 확인합니다. | 권한 묶음 확인하기 |
rmdir |
빈 디렉토리를 삭제합니다. | 비어 있는 폴더만 제거하기 |
ln -s는 특히 생명정보학에서 자주 보입니다. 원본 데이터를 복사하지 않고 다른 위치에서 바로가기처럼 연결해 쓰면 저장 공간을 아낄 수 있습니다.
11. grep과 정규표현식은 “문자열 속에서 원하는 패턴을 찾는 도구”입니다
생명정보학 데이터는 대부분 텍스트 파일로 저장되는 경우가 많습니다. Fastq, SAM, VCF, BED, GTF 같은 파일은 형식은 다르지만 결국 줄 단위 텍스트로 읽을 수 있는 경우가 많습니다. 그래서 문자열 검색 능력이 중요합니다.
grep은 파일에서 특정 글자가 들어간 줄을 찾는 명령어입니다.
grep "BRCA1" genes.txt
이 명령은 genes.txt 파일에서 BRCA1이 들어간 줄을 찾아 보여줍니다.
정규표현식(regular expression)은 단순한 글자 검색보다 더 넓은 패턴을 표현하는 방법입니다. 예를 들어 줄의 시작, 숫자 반복, 특정 문자 범위 같은 조건을 쓸 수 있습니다.
grep "^>" sequences.fasta
FASTA 파일에서 >로 시작하는 줄은 보통 서열 이름을 나타내는 헤더입니다. ^는 줄의 시작을 뜻합니다. 따라서 이 명령은 FASTA 파일에서 헤더 줄만 찾습니다.
처음부터 정규표현식을 완벽하게 외울 필요는 없습니다. 하지만 다음 기호들은 자주 나옵니다.
| 기호 | 의미 |
|---|---|
. |
아무 문자 하나입니다. |
* |
앞 문자가 0번 이상 반복됩니다. |
+ |
앞 문자가 1번 이상 반복됩니다. |
^ |
줄의 시작입니다. |
$ |
줄의 끝입니다. |
[A-Z] |
A부터 Z 중 하나입니다. |
정규표현식은 생명정보학에서 유전자 이름, 염색체 이름, FASTA 헤더, 특정 서열 패턴을 찾을 때 매우 유용합니다.
12. 쉘 스크립트는 “명령어 묶음을 파일로 저장한 자동화 도구”입니다
분석을 한 번만 한다면 명령어를 직접 치면 됩니다. 하지만 생명정보학에서는 같은 작업을 여러 샘플에 반복해야 하는 경우가 많습니다. 샘플 100개에 대해 Fastq 품질검사를 하고, 정렬하고, 결과 파일을 정리해야 한다면 손으로 하나씩 입력하는 것은 비효율적이고 실수도 많아집니다.
쉘 스크립트는 여러 명령어를 파일에 저장해 한 번에 실행하는 방법입니다.
가장 단순한 쉘 스크립트는 다음처럼 생겼습니다.
#!/bin/bash
echo "Hello, World!"
첫 줄의 #!/bin/bash는 셔뱅(shebang)이라고 합니다. 이 파일을 어떤 프로그램으로 실행할지 알려주는 줄입니다. 여기서는 bash로 실행한다는 뜻입니다.
쉘 스크립트에서는 변수도 사용할 수 있습니다.
sample="sample1"
echo $sample
반복문을 쓰면 여러 파일을 한꺼번에 처리할 수 있습니다.
for fastq in *.fastq.gz; do
echo "Processing: $fastq"
done
이 코드는 현재 디렉토리에 있는 모든 .fastq.gz 파일을 하나씩 돌면서 처리합니다. 아직 실제 분석 명령어는 없지만, 이 구조 안에 품질검사나 정렬 명령을 넣으면 자동화가 됩니다.
if와 while은 조건을 다루는 기본 도구입니다
본편에서는 for뿐 아니라 if, while도 만날 수 있습니다. if는 조건이 맞을 때만 실행하는 구조입니다.
if [ -f sample.fastq.gz ]; then
echo "file exists"
fi
이 코드는 sample.fastq.gz라는 파일이 있으면 메시지를 출력합니다. 여기서 -f는 “일반 파일이 존재하는가”를 확인하는 조건입니다.
while은 조건이 참인 동안 반복합니다. 파일을 한 줄씩 읽을 때 자주 나옵니다.
while read line; do
echo "$line"
done < samples.txt
이 코드는 samples.txt를 한 줄씩 읽어 line 변수에 넣고 출력합니다. 처음에는 문법을 외우기보다 “조건 실행은 if, 조건 반복은 while”이라고 잡으면 됩니다.
13. 실습에서 가장 중요한 태도는 “작게 확인하고, 기록하고, 자동화하기”입니다
Linux 실습에서 초보자가 자주 하는 실수는 너무 긴 명령어를 한 번에 실행하는 것입니다. 명령어가 길수록 어디서 틀렸는지 찾기 어렵습니다. 그래서 처음에는 작은 단위로 확인하는 습관이 중요합니다.
예를 들어 큰 파일을 처리하기 전에 head로 앞부분만 봅니다.
head sample.fastq
압축 파일이면 zcat과 head를 연결해 봅니다.
zcat sample.fastq.gz | head
파일 개수를 세기 전에 먼저 파일 목록이 제대로 잡히는지 봅니다.
ls *.fastq.gz
그다음 반복문을 만들고, 처음에는 실제 분석 대신 echo로 어떤 명령이 실행될지 출력해봅니다.
for fastq in *.fastq.gz; do
echo "fastqc $fastq"
done
이렇게 하면 실수로 파일을 덮어쓰거나 삭제하는 일을 줄일 수 있습니다. 생명정보학 분석에서는 재현성도 중요합니다. 내가 어떤 명령어를 어떤 순서로 실행했는지 기록해야 나중에 같은 결과를 다시 만들 수 있습니다.
14. 18장을 읽기 전 꼭 잡아야 할 핵심 정리
18장은 실습편의 문입니다. 여기서 Linux를 완벽하게 마스터할 필요는 없습니다. 하지만 파일 위치를 이해하고, 명령어로 파일을 보고 옮기고, 프로그램을 설치하고, 입출력을 연결하고, 반복 작업을 스크립트로 자동화하는 감각은 반드시 필요합니다.
| 핵심 개념 | 읽을 때 필요한 감각 |
|---|---|
| Linux | 생명정보학 도구가 많이 돌아가는 연구용 운영체제 환경입니다. |
| 쉘 | 명령어를 읽고 실행하는 프로그램입니다. |
| 경로 | 파일의 주소입니다. 절대경로와 상대경로가 있습니다. |
| 패키지 매니저 | 프로그램을 설치하고 관리하는 도구입니다. |
| 가상환경 | 프로젝트별로 도구와 패키지를 분리하는 공간입니다. |
| 리다이렉션 | 명령어의 출력을 파일로 보내는 방식입니다. |
| 파이프 | 한 명령어의 출력을 다음 명령어 입력으로 연결하는 방식입니다. |
| 쉘 스크립트 | 여러 명령어를 파일로 저장해 자동 실행하는 방법입니다. |
18장을 읽을 때는 “이 명령어가 현재 디렉토리, 파일, 입력, 출력 중 무엇을 바꾸는가?”를 계속 생각하면 됩니다. 명령어를 많이 외우는 것보다, 파일과 데이터가 어디에서 어디로 흐르는지 이해하는 것이 훨씬 중요합니다.
문제 풀이
Linux 기초
주관식 답안은 Gemini API로 채점합니다. API 키는 이 브라우저에만 저장됩니다.
-
1. [쉬움] 객관식
운영체제의 역할로 가장 적절한 것은 무엇인가?
-
2. [쉬움] 객관식
쉘에 대한 설명으로 가장 적절한 것은 무엇인가?
-
3. [쉬움] 객관식
절대경로에 대한 설명으로 가장 적절한 것은 무엇인가?
-
4. [쉬움] 객관식
파이프
|의 역할로 가장 적절한 것은 무엇인가? -
5. [보통] 객관식
리다이렉션
>에 대한 설명으로 가장 적절한 것은 무엇인가? -
6. [보통] 객관식
가상환경을 사용하는 이유로 가장 적절한 것은 무엇인가?
-
7. [어려움] 객관식
권한 표기
rwxr-xr--에 대한 설명으로 가장 적절한 것은 무엇인가? -
8. [어려움] 객관식
생명정보학 실습에서 명령어를 실행할 때 가장 안전한 태도로 적절한 것은 무엇인가?
-
1. [쉬움] 객관식
다음 명령어의 의미로 가장 적절한 것은 무엇인가?
pwd -
2. [쉬움] 객관식
다음 명령어의 의미로 가장 적절한 것은 무엇인가?
ls -lh -
3. [쉬움] 객관식
다음 명령어 실행 후 현재 위치로 가장 적절한 것은 무엇인가?
cd /data/project -
4. [쉬움] 객관식
다음 명령어에서
mkdir의 역할로 가장 적절한 것은 무엇인가?mkdir results -
5. [보통] 객관식
다음 명령어의 위험으로 가장 적절한 것은 무엇인가?
cat sample.txt > sample.txt -
6. [보통] 객관식
다음 명령어에서
>>의 의미로 가장 적절한 것은 무엇인가?echo "done" >> log.txt -
7. [보통] 객관식
다음 명령어의 데이터 흐름으로 가장 적절한 것은 무엇인가?
cat genes.txt | grep TP53 -
8. [보통] 객관식
다음 명령어가 하는 일로 가장 적절한 것은 무엇인가?
grep -c "error" run.log -
9. [보통] 객관식
다음 명령어의 의미로 가장 적절한 것은 무엇인가?
chmod +x run.sh -
10. [어려움] 객관식
다음 스크립트 첫 줄의 역할로 가장 적절한 것은 무엇인가?
#!/bin/bash echo "start" -
11. [어려움] 객관식
다음 명령어의 결과로 가장 적절한 것은 무엇인가?
ls no_such_file 2> error.log -
12. [어려움] 객관식
다음 명령어의 의미로 가장 적절한 것은 무엇인가?
ls -la | grep ".txt" -
13. [어려움] 객관식
다음 명령어 흐름에서
head -10의 역할로 가장 적절한 것은 무엇인가?zcat large_file.gz | grep "pattern" | sort | uniq -c | head -10 -
14. [어려움] 객관식
다음 명령어가 실습 기록에 유용한 이유로 가장 적절한 것은 무엇인가?
ls > file_list.txt -
23. [보통] 객관식
다음 명령어의 의미로 가장 적절한 것은 무엇인가?
command > all.log 2>&1 -
24. [보통] 객관식
ln -s raw/sample.fastq.gz sample.fastq.gz의 의미로 가장 적절한 것은 무엇인가? -
25. [어려움] 객관식
다음 쉘 코드의 의미로 가장 적절한 것은 무엇인가?
if [ -f sample.fastq.gz ]; then echo "exists" fi -
26. [어려움] 객관식
다음 코드의 큰 흐름으로 가장 적절한 것은 무엇인가?
while read line; do echo "$line" done < samples.txt -
주관식 1. [쉬움] 주관식 · Gemini 채점
절대경로와 상대경로의 차이를 예시와 함께 설명하라.
-
주관식 2. [보통] 주관식 · Gemini 채점
파이프와 리다이렉션의 차이를 설명하라.
-
주관식 3. [어려움] 주관식 · Gemini 채점
생명정보학 분석에서 원본 파일을 보호하며 명령어를 실행하는 습관을 설명하라.