Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- sql
- 하루기록
- 이커머스데이터분석
- AIaaS마스터클래스2기
- 스나이퍼팩토리
- 데이터분석
- AIaaS
- tableau
- wecookieyou
- 개발자교육
- 포트폴리오
- 클라우드엔지니어
- 클라우드개발자
- 오늘의로하
- 카카오클라우드
- 인턴생활
- 한국생산성본부
- 하늘도시속눈썹
- 부트캠프
- 태블로
- Kaggle
- 카카오엔터프라이즈
- 하늘도시맛집
- 꾸석지돌판한우
- 판교생활
- olist
- 데이터분석포트폴리오
- 영종도카페
- 파이썬문법
- 판교타코익스프레스
Archives
- Today
- Total
Alroha
[스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 7주차(리눅스 기본) 본문
🐧 리눅스 (1일차)
1️⃣ 리눅스
✅ 특징
- 운영체제(OS): 앱이 하드웨어에서 돌아가게 해주는 기본 소프트웨어
- 강점: 오픈소스 🆓, 자동화 스크립팅 💡, 서버·네트워크에 강함 🌐, 멀티유저/멀티태스킹
- 약점: 상용 앱/멀티미디어 툴 부족, 한글 문서 미흡(영문 도움말 익숙해지기!)
- 실습 환경: VirtualBox + Ubuntu (RedHat 계열) 권장 → 되돌리기/복제 쉬움 (Rocky Linux 사용)
🧪 실습
- 가상 머신 생성 → Ubuntu ISO 부팅 → 사용자 계정/로케일 설정
- 네트워크 연결 후 reboot # 재부팅

2️⃣ 셸(Shell)
🧠 개념
- 커널: CPU/메모리/프로세스 관리(본체)
- 셸: 사용자의 명령을 받아 커널에 전달(인터페이스)
- 프롬프트: user@host:~$ (일반 $ / 루트 #)
- 로그인 셸 vs 비로그인 셸: 로그인 시 시작되는 최초 셸 / 셸 안에서 다시 켠 셸
🔁 자주 쓰는 셸
- bash(표준), zsh(기능 풍부), sh(표준 스크립팅), tcsh(대화형 강함)
- 임시 전환: bash, sh → 종료는 exit
3️⃣ 셸 편집·자동완성
⌨️ 커맨드라인 편집(단축키)
| Ctrl+a / Ctrl+e | 행 처음 / 끝 |
| Ctrl+b / Ctrl+f | 좌/우 한 글자 이동 |
| Esc, b / Esc, f | 단어 단위 좌/우 |
| Ctrl+h(Backspace) / Ctrl+d | 왼쪽/현재 글자 삭제 (빈 줄에서 Ctrl+d는 셸 종료) |
| Ctrl+w | 커서 앞 단어 삭제 |
| Ctrl+u / Ctrl+k | 커서~행 처음 / 커서~행 끝 삭제 |
| Ctrl+y | 마지막 삭제 내용 붙여넣기 |
🧩 자동완성
- Tab: 명령/경로 자동완성 (두 번 → 후보 목록)
- Ctrl+p / Ctrl+n: 이전/다음 명령
- Ctrl+r: 이력 검색 → Enter 실행 / Esc 커맨드라인으로
🚑 실습시 겪은 문제
| 입력이 멈춤 | Ctrl+s로 출력이 잠긴 상태 → Ctrl+q 해제 |
| 명령 무한 실행 | Ctrl+c 강제 중단 |
| 터미널 글자 깨짐 | Ctrl+l(화면 정리) → reset(초기화) |
4️⃣ 파일·디렉터리
🌲 구조·경로
- 단일 트리 /(루트) 아래로 계층화, 다른 디스크도 마운트로 연결
- 절대 경로: /usr/bin/perl / 상대 경로: ./, ../
- FHS(대표 디렉터리)
- /bin 일반 명령, /sbin 관리자 명령, /etc 설정, /home 사용자 홈
- /var 로그·가변 데이터, /tmp 임시, /usr 앱/라이브러리, /dev 디바이스 파일
🚶 디렉터리 이동 & 탐색
pwd # 현재 경로
cd /usr/lib # 절대 경로
cd .. # 한 단계 위
cd # ~ (홈)로 이동
cd ~/report # 틸드 확장
ls # 목록
🧰 명령어 치트시트 (자주 쓰는 옵션 포함)
📋 목록/경로/생성·삭제·이동
# 목록
ls # 기본
ls -l # 상세(권한/소유/크기/시간)
ls -a # 숨김 포함
ls -F # 종류 기호(/,* ,@) 표시
ls -lh # 사람이 읽기 쉬운 크기
ls -lt # 최근 수정순
# 경로 확장(셸이 처리)
ls *.txt # 확장자 패턴
ls ba?? # 글자수 지정
# 디렉터리
mkdir work
mkdir -p a/b/c # 중첩 생성
# 파일(빈 파일)
touch newfile
# 삭제(주의!)
rm file1
rm -i file1 # 삭제 전 확인
rm -r dir1 # 디렉터리 재귀 삭제
rm -rf dir1 # 강제 재귀(매우 위험)
# 복사/이동/이름변경
cp file1 file2
cp -r dirA dirB # 디렉터리 복사
cp -i file1 file2 # 덮어쓰기 확인
mv a b # 이름 변경 or 이동
mv -i a b # 덮어쓰기 확인
🔗 링크(하드링크, 심볼릭 링크)
- 하드링크는 원본파일이 삭제되어도 하드링크 파일의 내용이 유지되지만, 심볼릭 링크는 원본파일이 삭제되면 내용을 볼 수 없게 된다.
ln file1 file2 # 하드링크(같은 inode)
ln -s target link # 심볼릭 링크(별칭)
📖 내용 보기
cat file # 짧은 파일
cat -n file # 행 번호
less file # 스크롤/검색(/키워드, n/N, q 종료)
🔎 파일 찾기
# 디렉터리 트리 실시간 탐색(정확하지만 느림)
find . -name '*.txt' # 이름(대소문자 구분)
find . -iname '*.txt' # 대소문자 무시
find . -type d -name 'doc' # 디렉터리만
# AND 조건은 나열(-a 생략 가능)
find . -type f -name '*.sh' -print
# DB 기반 초고속 검색(사전 색인 필요)
sudo updatedb # 인덱스 갱신(최초/수동)
locate -i notes # 대소문자 무시
locate -b python # 파일명 기준(basename)
locate -A bash doc # AND 검색
❓ 명령어 위치/도움말
which ls # 실행될 실제 경로
which -a ls # PATH 내 모든 후보
<cmd> --help # 간단 도움말
man <cmd> # 상세 매뉴얼(less 조작 동일)
man -k copy # 키워드 검색(whatis db)
LANG=C <cmd> --help # 영문 도움말 강제
🧩 회고록
- 탭 완성 먼저! 긴 경로·오타 방지 → cd /u + Tab → /usr/
- 파괴적 명령 보호: alias rm='rm -i', alias cp='cp -i', alias mv='mv -i'
- 숨김 파일 체크: ls -la로 삭제 전 내부 안전 확인(.파일 존재 주의)
- 작업 전 위치 확인: 실수 줄이려면 pwd 습관화
✅ 과제
# 과제1
새로운 VM을 생성
- 1 vCPU 와 2048 MB 그리고 Disk 20GB
- 네트워크 어뎁터는 1번 NAT를 그대로 두고 2번 어뎁터 host-only 어뎁터 혹은 네트워크를 활성화 합니다.
- IP 는 192.168.56.210/24 으로 설정합니다.
- root 사용자 암호는 똑같이 지정 합니다.
- OS는 Rocky9 Linux로 설치 합니다.
# 과제2
기존 VM에서 새로운 VM으로 연결
- ping 명령어를 입력하여 연결을 확인 합니다. ping 192.168.56.210
64 bytes from 192.168.56.210: icmp_seq=41 ttl=64 time=2.99 ms
64 bytes from 192.168.56.210: icmp_seq=42 ttl=64 time=0.578 ms
64 bytes from 192.168.56.210: icmp_seq=43 ttl=64 time=2.92 ms
64 bytes from 192.168.56.210: icmp_seq=44 ttl=64 time=1.02 ms
- ssh 명령어를 이용하여 기존 VM 에서 새 VM으로 연결 합니다. ssh root@192.168.56.210
- 새로운 VM의 호스트 명을 ec2 로 설정합니다. hostnamectl set-hostname ec2
- bash 를 새롭게 실행해서 호스트 명이 변경되는 것을확인합니다. bash exit
- 작업 완료후 빠져 나와서 다시 연결합니다. exit ssh root@192.168.56.210
[root@localhost ~]# exit
logout
Connection to 192.168.56.210 closed.
[localhost work]#ssh root@192.168.56.210
root@192.168.56.210's password:
Last login: Tue Sep 16 15:41:49 2025 from 192.168.56.200
[root@ec2 ~]#
(+ 추가로 이름 한번 더 변경해 보았다!)
[root@ec2 ~]# hostnamectl set-hostname roha
[root@ec2 ~]# exit
logout
Connection to 192.168.56.210 closed.
[localhost work]#ssh root@192.168.56.210
root@192.168.56.210's password:
Last login: Tue Sep 16 15:43:57 2025 from 192.168.56.200
[root@roha ~]#
🐧 리눅스 (2일차)
5️⃣ 파일 조작
🔧 명령어 & 자주 쓰는 옵션
| 디렉터리 생성 | mkdir | mkdir work / mkdir -p a/b/c | 중첩은 -p |
| 빈 파일 | touch | touch a b c | 존재 시 타임스탬프 갱신 |
| 삭제(파일/디렉터리) | rm | rm f1 f2 / rm -i f / rm -r dir / rm -rf dir | -i 안전, -rf 매우 위험 ⚠️ |
| 빈 디렉터리 삭제 | rmdir | rmdir empty | 숨김 파일 있으면 실패 |
| 복사 | cp | cp f1 f2 / cp f1 f2 f3 dir/ / cp -r dirA dirB / cp -i | 덮어쓰기 확인은 -i |
| 이동/이름 변경 | mv | mv a b / mv f1 f2 dir/ / mv -i | 디렉터리 이동 시 -r 필요 없음 |
| 내용 보기 | cat, less | cat -n file / less file | 긴 파일은 less |
| 링크 | ln | 하드: ln a b / 심볼릭: ln -s target link | 심볼릭은 경로 별칭에 유리 |
🧪 실습
mkdir -p report/2021/05 && ls -F
touch report/2021/05/summary.txt notes.txt
cp -i notes.txt report/2021/05/
mv report/2021/05/summary.txt summary-202105.txt
ln -s report/2021/05 latest
ls -l latest
💡 팁
- 삭제·덮어쓰기 방지: alias rm='rm -i'; alias cp='cp -i'; alias mv='mv -i'
- 대량 작업은 와일드카드: *.txt, img_??.png
- 심볼릭 링크로 긴 경로 단축: ln -s ~/projects/big/path src
6️⃣ 파일 검색 & 명령어 도움말
🔎 정확 탐색: find (실시간 트리 순회)
find . -type f -name '*.txt' # 이름
find /etc -type d -name 'conf*' # 디렉터리만
find . -type l -iname '*lib*' # 심볼릭 링크(대소문자 무시)
- 패턴은 셸 확장 방지 위해 따옴표로 감싸기: -name '*.log'
- 조건 AND는 나열( -a 생략 가능), OR은 -o (괄호는 \( ... \) )
⚡ 빠른 탐색: locate
sudo updatedb # 색인 갱신
locate -i bashrc # 대소문자 무시
locate -b -i '\vim' # 베이스명만, 대소문자 무시
locate -A conf nginx # 둘 다 포함(AND)
- 최신 파일 즉시 반영 안 될 수 있음 → 급할 땐 find
❓ 사용법·위치 확인
cat --help
man cat # 상세 매뉴얼(less 조작 동일)
man -k copy # 키워드 검색
man 5 crontab # 섹션 지정
which -a ls # PATH 내 모든 후보
7️⃣ 텍스트 에디터
🧭 모드 체계
- 보통(normal): 명령 수행(기본)
- 입력(insert): 텍스트 입력 (i, a 등으로 진입, Esc로 복귀)
⌨️ vi 탐색 단축키
| 기동/종료 | vi file / :w / :q / :q! | 저장/종료/강종 |
| 이동 | h j k l / w b / 0 $ / gg G / 100G | 문자·단어·행·파일 단위 |
| 편집 | i a / x / dd / d$ d0 / yy p | 입력·삭제·행삭제·범위삭제·복사/붙여넣기 |
| 연결/되돌리기 | J / u / Ctrl+r | 행 연결 / undo / redo |
| 검색/치환 | /word ?word / n N / :%s/old/new/g | 방향 검색·다음/이전·전역 치환 |
🧪 실습
vim notes.txt # 파일 생성/열기
# (보통) i -> 내용 입력 -> Esc
:w # 저장
:%s/todo/TODO/g # 치환
:q # 종료
8️⃣ 배시(Bash) 설정
🧩 alias (자주 쓰는 옵션 기본화)
alias la='ls -a'
alias ll='ls -lh --group-directories-first'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias mkdir='mkdir -p'
type ls # 별칭 확인
\ls # 일시 해제(\)
⚙️ 배시 옵션
# set
set -o ignoreeof # Ctrl+D 종료 방지
set -o noclobber # > 덮어쓰기 방지 (>>는 허용)
# shopt
shopt -s autocd # 디렉터리명만 쳐도 이동
shopt -s cdspell # cd 오타 보정
shopt -s dotglob # 경로확장에 숨김 포함
shopt -s globstar # ** 패턴(재귀)
shopt -s histappend # 히스토리 누적
📄 설정 파일 운용
- 백업: cp ~/.bashrc ~/.bashrc.bak
- 수정: vim ~/.bashrc (다른 터미널 하나 더 열어두기)
- 즉시 반영: source ~/.bashrc 또는 . ~/.bashrc
- 필요 시 ~/.profile
권장 .bashrc 스니펫
# safer defaults
alias rm='rm -i'; alias cp='cp -i'; alias mv='mv -i'
shopt -s histappend cdspell autocd
set -o ignoreeof; set -o noclobber
export PATH="$PATH:$HOME/bin"
export LESS='--no-init'
PS1='[\u@\h \w]\$ '
본 후기는 [카카오엔터프라이즈x스나이퍼팩토리] 카카오클라우드로 배우는 AIaaS 마스터 클래스 2기(B-log) 리뷰로 작성 되었습니다.
'IT > Kakao cloud 부트캠프' 카테고리의 다른 글
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 8주차(클라우드를 위한 리눅스 - DNS/Nginx) (0) | 2025.09.24 |
|---|---|
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 7주차(입출력, 텍스트 처리) (0) | 2025.09.18 |
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(3) (0) | 2025.09.16 |
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(4) (0) | 2025.09.12 |
| [스나이퍼팩토리] 카카오클라우드 - 클라우드 개발자 교육 6주차(2) (2) | 2025.09.09 |