LYMARU

Mac(맥 미니) 초기 세팅 및 필수 유틸리티 설정

새로운 Mac(또는 Mac Mini)을 구매하거나 포맷한 후, 쾌적한 개발 및 작업 환경을 구축하기 위해 가장 먼저 해야 할 시스템 설정과 필수 유틸리티 설치 방법을 정리했습니다.


1. Mac 시스템 및 환경 설정

기본적으로 제공되는 불편한 설정들을 윈도우(Windows)나 일반적인 마우스 환경에 맞게 튜닝합니다. (macOS Ventura 이상 기준)

마우스 설정

  • 마우스 휠 방향 변경:  (애플 로고) > 시스템 설정 > 마우스로 이동하여 '자연스러운 스크롤'을 선택 해제합니다. (해제해야 휠을 내릴 때 화면이 아래로 내려갑니다.)
  • 마우스 가속 끄기 (정밀한 컨트롤):  > 시스템 설정 > 마우스 > 고급에서 '포인터 가속'을 해제합니다.

키보드 보조 키(Command/Control) 변경

윈도우용 키보드를 사용할 경우 Alt와 Win 키의 위치를 Mac에 맞게 변경해야 합니다. *  > 시스템 설정 > 키보드 > 키보드 단축키 > 보조 키 * 연결된 키보드를 선택한 후, Option(⌥) 키와 Command(⌘) 키의 역할을 서로 바꿔줍니다.

Finder (파인더) 개발자 세팅

파일의 정확한 경로와 남은 용량을 한눈에 파악하기 위해 하단 막대를 활성화합니다. * Finder 실행 후 상단 메뉴 바에서 '보기' 클릭 * '경로 막대 보기(Show Path Bar)' 및 '상태 막대 보기(Show Status Bar)' 클릭

원격 접속 (SSH) 허용

외부 기기나 홈 서버에서 이 Mac에 터미널로 접속하려면 SSH를 열어주어야 합니다. *  > 시스템 설정 > 일반 > 공유 * '원격 로그인(Remote Login)' 스위치를 켬으로 변경합니다. (상세 권한은 'i' 아이콘 클릭)


2. 패키지 매니저 및 터미널 환경 구축

Homebrew 설치 (Mac 필수 패키지 매니저)

앱스토어를 거치지 않고 터미널에서 각종 프로그램과 라이브러리를 설치할 수 있게 해주는 도구입니다.

# 1. Xcode Command line tools 설치
xcode-select --install

# 2. Homebrew 설치 스크립트 실행
/bin/bash -c "$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh](https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh))"

# 3. M칩(Apple Silicon) 경로 환경변수 등록
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

터미널 테마 및 플러그인 (Oh My Zsh)

맥의 기본 셸인 Zsh를 강력하게 꾸며주는 프레임워크와 유용한 플러그인을 설치합니다.

# 1. Oh My Zsh 설치
sh -c "$(curl -fsSL [https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh](https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh))"

# 2. Zsh 명령어 구문 강조 플러그인 (문법 오류 방지)
brew install zsh-syntax-highlighting

# 3. Zsh 명령어 자동 완성 플러그인 (과거 이력 기반)
git clone [https://github.com/zsh-users/zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions) ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

참고: 플러그인 적용 방법 vi ~/.zshrc 로 설정 파일을 열어 plugins=(git) 부분을 plugins=(git zsh-autosuggestions)로 수정하고, 파일 맨 밑에 source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh를 추가한 뒤 source ~/.zshrc를 실행하세요.


3. Mac 필수 생산성 유틸리티 (무료/오픈소스)

Homebrew가 설치되어 있다면 복잡한 웹사이트 검색 없이 터미널 명령어로 대부분 설치 가능합니다.

Rectangle (화면 분할)

윈도우처럼 키보드 단축키나 마우스 드래그(스냅)로 창을 좌우, 상하로 쉽게 분할해 주는 필수 앱입니다. * 설치: brew install --cask rectangle (또는 공식 홈페이지 다운로드)

Maccy (클립보드 매니저)

복사했던 텍스트와 이미지 히스토리를 저장하고, 단축키(Cmd + Shift + C)로 빠르게 찾아 다시 붙여넣을 수 있는 가벼운 오픈소스 앱입니다. * 설치: brew install --cask maccy

RunCat (시스템 리소스 모니터링)

메뉴 바에서 뛰는 애니메이션 속도로 CPU 상태를 알려주며, 메모리와 네트워크 사용량 등을 직관적으로 보여줍니다. * 설치: Mac App Store에서 RunCat 검색 후 설치

Joplin (오픈소스 마크다운 노트)

Evernote나 Notion을 대체할 수 있는 강력한 오픈소스 마크다운 노트 앱입니다. 자체 클라우드 연동도 가능합니다. * 홈페이지: https://joplinapp.org/

Docker Desktop

홈 서버 구축이나 컨테이너 기반 개발을 위한 필수 도구입니다. * 홈페이지: https://docs.docker.com/desktop/setup/install/mac-install/

Ghostty (차세대 터미널 에디터)

최근 개발자들 사이에서 빠르고 가벼워 주목받고 있는 터미널 에뮬레이터입니다. * 설정 디렉토리 및 테마 적용:

mkdir -p ~/.config/ghostty
vi ~/.config/ghostty/config

# config 파일 내용 예시
theme = Arthur
font-size = 16

YOLOv7 윈도우 환경 설정

1. 시스템 사양 및 버전 호환성

딥러닝 환경 세팅에서 가장 중요한 것은 버전 호환성입니다.

구분 추천 환경 (현재 표준) 비고
OS Windows 10 / 11
GPU NVIDIA RTX 3070 VRAM 8GB 이상 권장
Python 3.9 또는 3.10 YOLOv7 호환성이 가장 높음
CUDA 11.8 (또는 12.1) PyTorch 2.x 안정화 버전 기준
cuDNN 8.7.0 이상 (CUDA 버전에 맞춤)
PyTorch 2.x 대 최신 Stable 버전

Tip: 맹목적으로 무조건 최신 버전을 설치하기보다는, PyTorch 공식 홈페이지에서 현재 지원하는 안정화(Stable) CUDA 버전이 무엇인지 먼저 확인하고 그에 맞춰 CUDA를 설치하는 것이 핵심입니다.


2. NVIDIA CUDA 및 cuDNN 설치

1) CUDA Toolkit 설치

  1. NVIDIA CUDA Toolkit Archive에 접속합니다.
  2. 시스템 환경에 맞춰 CUDA 11.8 (또는 호환되는 최신 버전)의 Windows용 런타임(exe_local)을 다운로드하고 설치합니다.

2) cuDNN 설치 및 덮어쓰기

  1. NVIDIA cuDNN Archive에 접속합니다. (NVIDIA 로그인 필요)
  2. 설치한 CUDA 버전에 맞는 cuDNN 압축 파일(zip)을 다운로드합니다.
  3. 압축을 해제하면 bin, include, lib 세 개의 폴더가 나옵니다.
  4. 이 세 폴더 안의 파일들을 복사하여, 앞서 설치한 CUDA 디렉토리에 그대로 덮어쓰기 합니다.
    • CUDA 기본 설치 경로: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8

3) 환경 변수 설정

  1. Windows 키 ➡️ 환경 변수 검색 ➡️ '시스템 환경 변수 편집' 클릭
  2. [환경 변수] 버튼 클릭 ➡️ 하단의 '시스템 변수' 중 Path 더블 클릭
  3. 아래 경로들이 등록되어 있는지 확인하고, 없다면 [새로 만들기]로 추가합니다. text C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\extras\CUPTI\lib64

3. Anaconda 설치 및 독립된 가상환경 생성

  1. Anaconda 공식 홈페이지에서 설치 파일을 다운로드하여 설치합니다.
  2. 시작 메뉴에서 'Anaconda Prompt'를 실행합니다.
  3. 아래 명령어를 입력하여 yolov7이라는 이름의 Python 3.9 가상환경을 생성하고 활성화합니다.
# yolo_v7 전용 가상환경 생성
conda create -n yolov7 python=3.9 -y

# 가상환경 활성화 (매번 터미널을 열 때마다 실행해야 함)
conda activate yolov7

4. PyTorch 및 YOLOv7 세팅

가상환경이 활성화된 상태((yolov7) C:\...)에서 딥러닝 프레임워크와 YOLOv7 코드를 다운로드합니다.

1) PyTorch 설치

설치한 CUDA 버전에 맞춰 PyTorch를 설치합니다. (CUDA 11.8 기준 명령어)

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y

설치가 완료되면 Python을 실행하여 import torch; print(torch.cuda.is_available())을 입력했을 때 True가 나와야 GPU 세팅이 완벽하게 된 것입니다.

2) YOLOv7 소스코드 클론 및 요구 패키지 설치

원하는 작업 폴더(Workspace)로 이동한 후, 공식 GitHub에서 코드를 가져옵니다.

# YOLOv7 저장소 복제
git clone [https://github.com/WongKinYiu/yolov7.git](https://github.com/WongKinYiu/yolov7.git)

# 폴더 이동
cd yolov7

# YOLOv7 구동에 필요한 추가 패키지 일괄 설치
pip install -r requirements.txt

도커(Docker) 명령어 정리

1. Ubuntu 환경 Docker 최신 설치 방법

# 1. 필수 패키지 업데이트 및 설치
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 2. Docker 공식 GPG 키 추가 (최신 keyrings 방식)
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 3. Docker 레포지토리 설정
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. Docker 엔진 설치
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

권한 추가 및 편의 기능

# sudo 없이 docker 명령어를 사용하기 위해 현재 계정을 docker 그룹에 추가
sudo usermod -aG docker $USER

# 도커 서비스 재시작
sudo systemctl restart docker.service

# (재부팅 또는 로그아웃 후 다시 로그인해야 권한이 적용됩니다)

# 도커 명령어 자동완성 기능 설치
sudo apt install bash-completion

2. 도커 컨테이너 실행 및 관리

기본 실행 (Run) 옵션

docker run -d --name my_container -p 8080:80 -v /host_data:/container_data nginx
옵션 설명
-d Detached mode (백그라운드에서 컨테이너 실행)
-p 포트 포워딩 [호스트포트]:[컨테이너포트]
-v 볼륨 마운트 [호스트경로]:[컨테이너경로] (작업 환경은 컨테이너에, 데이터는 호스트에 저장)
-e 컨테이너 내에서 사용할 환경변수 설정
--name 컨테이너 이름 설정
--rm 프로세스 종료 시 컨테이너 자동 제거 (일회용 컨테이너에 유용)
-it 터미널 입력을 위한 옵션 (i: 상호입출력, t: tty 활성화)
--restart=always 서버 재부팅 시 컨테이너 자동 시작
--gpus all 호스트의 모든 GPU 사용 (nvidia-container-toolkit 설치 필수)
--shm-size=8g 컨테이너의 공유 메모리 크기 지정 (딥러닝 학습 시 필수)
--link (Deprecated) 컨테이너 간 연결. (현재는 docker network 사용을 권장합니다)

컨테이너 이름 변경

docker rename [기존이름] [새이름]

3. 이미지 저장 및 백업 (Save / Load / Commit)

컨테이너 상태를 이미지로 굽기 (Commit)

docker commit {컨테이너_이름} {생성할_이미지_이름}

이미지를 압축 파일(tar)로 저장 (Save)

docker save {이미지_이름} -o {저장할_파일명.tar}

압축 파일(tar)을 도커 이미지로 불러오기 (Load)

docker load -i {파일명.tar}

4. Dockerfile 기본 문법

Dockerfile이 있는 경로에서 빌드 명령어를 실행합니다. .dockerignore 파일을 활용하면 빌드 시 불필요한 파일이 데몬으로 전송되는 것을 막아 속도를 높일 수 있습니다.

docker build -t {생성할_이미지명} -f {Dockerfile_이름} .
명령어 설명
FROM 베이스로 사용할 이미지 지정
LABEL 이미지 메타데이터 설정 (기존 MAINTAINER를 대체함)
RUN 빌드 과정에서 실행할 리눅스 명령어 (apt install 등)
EXPOSE 컨테이너가 사용할 포트 명시 (실제 포트 개방은 run 옵션에서 함)
ENV 컨테이너 내부에서 사용할 환경 변수 설정
ARG 빌드 시점(docker build)에만 사용할 변수
ADD / COPY 호스트의 파일을 컨테이너 내부로 복사
CMD 컨테이너가 시작될 때 실행할 기본 명령어
ENTRYPOINT 컨테이너 시작 시 강제로 실행할 프로세스 (CMD보다 우선)
WORKDIR 명령어(RUN, CMD 등)가 실행될 작업 디렉토리 설정
USER 명령을 실행할 사용자 계정 설정

Dockerfile 예시 (한글 언어팩 및 타임존 설정)

FROM ubuntu:20.04

# 작성자 명시 (최신 방식)
LABEL maintainer="your_email@domain.com"

EXPOSE 8080

# 언어 설정
RUN apt-get update && apt-get install -y locales
RUN locale-gen ko_KR.UTF-8
ENV LANG ko_KR.UTF-8
ENV LANGUAGE ko_KR.UTF-8
ENV LC_ALL ko_KR.UTF-8
 
# TimeZone 설정 (Seoul)
ENV TZ Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

5. 유용한 도커 활용 팁

호스트 GUI 환경을 도커에서 사용하기 (X11)

# 호스트에서 xhost 권한 허용
xhost +local:docker

# 컨테이너 실행 시 디스플레이 소켓 공유
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY ubuntu /bin/bash

도커 자원 일괄 정리 (Prune)

# 1. 중지된 컨테이너 및 이름 없는(dangling) 이미지 삭제
docker system prune -f

# 2. 어떤 컨테이너도 사용하지 않는 잉여 볼륨 삭제
docker volume prune -f

# 3. 사용하지 않는 도커 네트워크 삭제
docker network prune -f

# 4. <none> 태그를 가진 잉여 이미지 강제 일괄 삭제
docker rmi $(docker images -f "dangling=true" -q)

도커 컨테이너 포트 강제 변경

컨테이너를 지우지 않고 강제로 포트를 바꾸는 편법입니다. 설정 파일을 직접 건드리는 방식이므로 도커 데몬 구동에 에러가 발생할 수 있어 권장하지 않습니다. (가능한 한 docker run을 다시 하는 것이 안전합니다.)

# 1. 컨테이너 및 도커 서비스 중지
docker container stop [컨테이너_ID]
sudo systemctl stop docker

# 2. config 파일 수정 (ExposedPorts, Ports 변경)
sudo vi /var/lib/docker/containers/[컨테이너_ID]/config.v2.json

# 3. hostconfig 파일 수정 (PortBindings 변경)
sudo vi /var/lib/docker/containers/[컨테이너_ID]/hostconfig.json

# 4. 서비스 및 컨테이너 재시작
sudo systemctl start docker
docker start [컨테이너_ID]

리눅스 핵심 명령어 및 환경 설정 정리

1. 시스템 관리 및 패키지 설정

기본 패키지 업데이트 및 설치

# 시스템 업데이트 (&&를 사용하여 앞 명령어가 성공했을 때만 업그레이드 진행)
sudo apt update && sudo apt full-upgrade -y

# 필수 유틸리티 설치 (ssh, vim, net-tools, gcc 등)
sudo apt install -y openssh-server vim net-tools gcc make build-essential curl

# SSH 서비스 시작
sudo systemctl start ssh

시스템 정보 확인

# OS 및 커널 버전 확인
uname -a

# 배포판 상세 정보 확인
cat /etc/*release* # CentOS 등
cat /etc/issue        # Ubuntu

# 시스템 가동 시간, 로그인 사용자 수, 부하율 확인
uptime

# 부팅 이력 확인
last reboot

계정 및 권한 관리

# 계정 생성 (대화형 기본 설정 포함 - 권장)
sudo adduser [사용자명]

# 계정 생성 (환경변수 옵션 커스터마이징 용도)
sudo useradd [사용자명]

# Sudo 권한 부여 (visudo 사용 권장)
sudo visudo
# 파일 하단에 추가: [사용자명] ALL=(ALL:ALL) ALL

# 그룹 관리
groups                       # 소속 그룹 확인
sudo groupadd [그룹명]       # 그룹 생성
sudo groupdel [그룹명]       # 그룹 삭제
sudo gpasswd -a [유저] [그룹명]  # 사용자를 그룹에 추가
sudo gpasswd -d [유저] [그룹명]  # 사용자를 그룹에서 제거

2. 디스크 및 시스템 리소스 관리

디스크 용량 확인

# 파티션별 디스크 여유 공간 확인 (Human readable)
df -h

# 특정 디렉토리의 사용량 요약 확인 (깊이 1단계까지만)
du -h --max-depth=1 /home

메모리 상태 확인 (free)

free -h
total: 설치된 총 메모리

used: 사용 중인 메모리

free: 실제 사용 가능한 여유 메모리

shared: 프로세스 간 공유 메모리

buff/cache: 커널 버퍼와 페이지 캐시로 사용 중인 메모리

available: 스와핑 없이 새로운 프로세스에 할당 가능한 실질적 여유 메모리

디스크 마운트 (추가 및 영구 등록)

# 디스크 목록 및 파티션 확인
sudo fdisk -l

# 파티션 생성 (n -> p -> 1 -> enter -> enter -> p -> w)
sudo fdisk /dev/sdb

# 파일 시스템 포맷 (ext4)
sudo mkfs -t ext4 /dev/sdb1

# 임시 마운트
sudo mount /dev/sdb1 /data_folder
영구적인 마운트 (재부팅 시 자동 마운트)

# 디스크의 UUID 확인
sudo blkid /dev/sdb1

# fstab 수정
sudo vi /etc/fstab

# 아래 형식으로 맨 밑에 내용 추가
# UUID={확인한_UUID}  /data_folder  ext4  defaults  0  2

3. 네트워크 및 방화벽 설정

고정 IP 설정 (Ubuntu 20.04 Netplan 기준)

sudo vi /etc/netplan/01-netcfg.yaml
YAML
network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.219.12/24]
      gateway4: 192.168.219.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
# 설정 적용
sudo netplan apply

방화벽 설정 (Firewalld – CentOS)

sudo firewall-cmd --permanent --add-port=8080/tcp    # 포트 개방
sudo firewall-cmd --permanent --remove-port=8080/tcp # 포트 차단
sudo firewall-cmd --reload                           # 룰 적용
sudo firewall-cmd --list-all                         # 리스트 확인

방화벽 설정 (UFW – Ubuntu)

sudo ufw status verbose         # 상태 및 적용된 룰 확인
sudo ufw allow 22/tcp           # 포트 허용
sudo ufw delete allow 22/tcp    # 허용 룰 삭제
sudo ufw reload                 # 룰 적용

4. 원격 데스크탑 및 파일 공유

XRDP (원격 데스크탑) 설정

sudo apt-get install -y xserver-xorg-core xorgxrdp xserver-xorg-input-all

# 권한 설정
sudo vi /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
Ini, TOML
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
# 배경색 설정 후 재부팅
sudo vi /etc/xrdp/xrdp.ini
# ls_top_window_bg_color=000000 추가
sudo reboot

NFS 파일 공유

sudo apt install -y nfs-common nfs-kernel-server

# 공유 폴더 설정
sudo vi /etc/exports
# 추가: /sh_data 192.168.1.0/24(rw,sync,no_subtree_check)

# 클라이언트에서 마운트
sudo mount [호스트IP]:/sh_data /local_folder

5. 파일 제어 및 탐색

TAR 압축 및 해제

# 압축하기
tar -cvf [압축이름.tar] [압축할_폴더]

# 압축 풀기
tar -xvf [압축이름.tar]

SCP 데이터 전송 (SSH 기반)

# Local -> Remote (내 PC에서 원격지 서버로 보내기)
scp -P [포트번호] [보낼_파일] [계정]@[원격지IP]:[도착_디렉토리]

# Remote -> Local (원격지 서버에서 내 PC로 가져오기)
scp -P [포트번호] [계정]@[원격지IP]:[가져올_파일] [내_PC_저장경로]

파일 검색 (find)

# 특정 이름으로 파일 검색
find / -name "*.log"

# 7일 이상 수정되지 않은 파일 찾기
find . -mindepth 1 -maxdepth 1 -mtime +7

# 7일 이상 수정되지 않은 파일 찾아서 바로 삭제 (-exec 활용)
find . -mindepth 1 -maxdepth 1 -mtime +7 -exec rm -rf {} \;
파일 내 문자열 검색 (grep 정규표현식)
Bash
grep '^a' 파일명      # a로 시작하는 행
grep 'apple$' 파일명  # apple로 끝나는 행
grep 'a.....e' 파일명 # a로 시작하고 e로 끝나는 7자리 단어
grep '[a-d]' 파일명   # a, b, c, d 중 하나로 시작하는 단어
grep -i 'apple' 파일명 # 대소문자 구분 없이 검색
grep -v 'apple' 파일명 # apple이 포함되지 않은 행만 출력

6. 텍스트 프로세싱 및 스크립트

AWK (오크) 활용 행과 열 기반으로 데이터를 필터링하고 가공하는 데 탁월한 스크립트 언어입니다.

# 특정 필드(열) 값 출력
awk '{ print $1 }' file.txt

# 특정 조건식 (5번째 필드가 80 이상인 전체 행 출력)
awk '{ if ( $5 >= 80 ) print ($0) }' file.txt

# 합계 및 평균 구하기 (BEGIN, END 패턴)
awk '
BEGIN { sum = 0; cnt = 0 }
{ sum += $5; cnt++ }
END { print ("Sum: " sum ", Avg: " sum/cnt) }' file.txt
쉘 스크립트 기초 문법
쉘 스크립트 파일은 최상단에 #!/bin/bash 선언이 필수입니다.
#!/bin/bash

# 변수 선언 (공백이 없어야 함!)
NAME="Lymaru"
echo "Hello, ${NAME}"

# 배열 사용
arr=("A" "B" "C")
echo ${arr[@]}    # 전체 출력

# 조건문 (띄어쓰기 주의)
if [ -f "test.txt" ]; then
    echo "test.txt 파일이 존재합니다."
fi

# 반복문
for i in {1..5}; do
    echo "Count: ${i}"
done

7. 기타 유용한 팁

백그라운드 프로세스 실행

# 일반 백그라운드 실행
./script.sh &

# 터미널 종료 후에도 실행 유지 (nohup) 및 로그 버리기
nohup python3 app.py > /dev/null 2>&1 &

터미널 주요 단축키 Ctrl + C: 현재 프로세스 강제 종료

Ctrl + D: 로그아웃 (EOF)

Ctrl + L: 화면 지우기 (clear)

Ctrl + R: 명령어 히스토리 검색

Ctrl + A: 커서를 라인 맨 앞으로 이동

Ctrl + E: 커서를 라인 맨 뒤로 이동

Ctrl + S: 화면 스크롤 잠금 (멈춤)

Ctrl + Q: 스크롤 잠금 해제

VIM (vi) 주요 명령어 :set nu : 줄 번호 표시

:set paste : 외부 텍스트 붙여넣기 시 들여쓰기 꼬임 방지

:sp [파일명] : 화면 상하 분할

:vs [파일명] : 화면 좌우 분할

:%s/이전문자열/새문자열/g : 파일 전체에서 문자열 찾아 바꾸기