Loading…

소개 온라인 셸 스크립트 포맷터

셸 스크립트를 붙여넣고 "포맷"을 누르면 `shfmt` 기반의 깔끔하고 일관된 출력을 얻을 수 있습니다. DevOps 파이프라인, 도트파일, 컨테이너 진입점, 프로덕션 준비 배포 스크립트에 이상적입니다. 설치 없음, 로그인 없음 – 바로 커밋할 수 있는 가독성 높은 셸 코드입니다.

이 셸 스크립트 포맷터를 사용하는 이유

  • POSIX sh, Bash, mksh 및 관련 셸에 대한 즉시 포맷팅
  • 들여쓰기, 간격 및 case/esac 블록을 위한 shfmt 스타일 규칙
  • 들여쓰기 크기, 탭 대 공백, 리다이렉트 간격과 같은 옵션 지원 설계
  • 원시 코드를 붙여넣거나 `.sh`, `.bash`, `.ksh`, `.mksh`, `.bats` 파일 업로드
  • CI/CD 파이프라인, Docker 엔트리포인트 및 도트파일에 완벽한 동반자
  • shfmt 스타일 로직을 실행하는 보안 백엔드를 통해 포맷팅 - 로컬 설치 불필요
  • 정리된 스크립트 한 번의 클릭으로 복사 또는 다운로드

🛠️ 온라인에서 셸 스크립트 포맷팅하는 방법 for shell-script-formatter

1

1. 스크립트 붙여넣기 또는 업로드

📥 셸 코드를 편집기에 붙여넣거나 `.sh`, `.bash`, `.ksh`, `.mksh`, `.bats` 파일을 드래그 앤 드롭하세요. 구문 강조로 구조와 명령어를 쉽게 확인할 수 있습니다.

2

2. (선택사항) 고급 설정 조정

⚙️ 프로젝트에서 사용자 정의 스타일 규칙을 사용하는 경우, UI에서 사용 가능할 때 들여쓰기나 기타 고급 옵션을 조정하세요. 그렇지 않으면 기본 프로필이 일반적인 shfmt 관행과 이미 일치합니다.

3

3. 스크립트 포맷팅

✨ **포맷**을 클릭하여 스크립트를 보안 포맷팅 API로 전송하세요. 동작을 보존하면서 들여쓰기, 간격 및 특정 구문을 재작성합니다.

4

4. 결과 복사 또는 다운로드

📤 포맷팅된 스크립트를 편집기로 다시 복사하거나, git, CI 또는 프로덕션 배포를 위해 준비된 `.sh` 파일로 다운로드하세요.

기술 사양

지원 형식 및 확장자

실제 시스템에서 접하는 일반적인 Bourne 스타일 셸 방언을 지원합니다:

형식 / 방언일반 확장자설명
POSIX sh.sh/bin/sh와 호환되는 이식성 셸 스크립트
Bash.sh, .bashGNU Bash 스크립트 및 대화형 도우미
Korn shell (ksh).ksh레거시 환경의 Korn shell 스크립트
mksh.mkshMirBSD 콘 셸 스크립트
Bats 테스트.batsBats를 사용하는 셸 기반 테스트 스위트

포맷팅 동작 (shfmt 스타일)

백엔드 포맷터는 일관된 셸 레이아웃을 위해 shfmt 스타일 규칙을 따릅니다.

측면동작이점
들여쓰기`if`, `for`, `while`, `case`, 함수 및 서브셸에서 들여쓰기를 정규화합니다제어 흐름과 중첩을 시각적으로 파악하기 더 쉽습니다.
간격할당에서 `=` 주변과 적절한 경우 이항 연산자 주변에 공백을 추가합니다시각적 노이즈와 실수로 인한 구문 분석 오류를 줄입니다.
리다이렉트shfmt 스타일 규칙에 따라 `>`, `>>`, `<` 주변 간격을 지원합니다파일 리다이렉션의 가독성을 향상시킵니다.
케이스 블록`case`, 패턴 분기 및 `esac`을 일관되게 정렬합니다깊게 중첩되거나 압축된 case 문을 방지합니다.
멱등성 출력포맷터를 다시 실행해도 동일한 결과를 얻습니다pre-commit 훅과 CI에 안전하게 통합할 수 있습니다.

입력 제한 및 크기

비사소한 스크립트에서도 빠르고 예측 가능하도록 설계되었습니다.

매개변수제한 / 동작참고
최대 입력 크기 (텍스트)≈ 2 MB이보다 큰 스크립트는 shfmt로 로컬에서 포맷하는 것이 더 좋습니다.
최대 파일 크기 (업로드)≈ 5 MB대부분의 배포 스크립트와 유틸리티 모음에 이상적입니다.
인코딩UTF-8 권장포맷팅 전에 ISO-8859-1과 같은 레거시 인코딩을 변환하세요.

실행 모델

포맷터는 shfmt 스타일 로직을 사용하는 보안된 백엔드를 통해 실행됩니다.

측면동작참고사항
전송`/api/shell-script-formatter` 엔드포인트로의 HTTPS 호출스크립트 포맷팅 중 도청을 방지합니다.
타임아웃요청당 약 25초매우 크거나 비정상적인 입력에 대한 작업 폭주를 방지합니다.
의미론공백 및 레이아웃만스크립트 로직은 보존되며, 포맷팅만 변경됩니다.

shfmt CLI 동등 명령어

터미널이나 CI 파이프라인에서 동일한 동작을 원하시나요? `shfmt`를 직접 사용하세요:

리눅스 / 🍎 macOS / 🪟 Windows (WSL 또는 Go 통해)

Go를 사용하여 shfmt 설치

go install mvdan.cc/sh/v3/cmd/shfmt@latest

`shfmt` 바이너리를 Go bin 디렉토리(예: `~/go/bin`)에 설치합니다.

2칸 들여쓰기로 셸 파일 포맷팅

shfmt -i 2 -w script.sh

일관된 포맷팅 출력으로 `script.sh`를 덮어씁니다.

포맷팅 후 stdout으로 출력

shfmt -i 4 script.sh

4칸 들여쓰기를 사용하며 파일을 수정하지 않고 stdout으로 출력합니다.

CI에서 포맷팅 확인 (변경 없음)

shfmt -d scripts/

재포맷팅이 필요한 파일의 diff를 보여주며, 변경이 필요하면 0이 아닌 값으로 종료합니다.

CI 파이프라인이나 pre-commit 훅에 `shfmt -d` 단계를 추가하여 모든 스크립트가 자동으로 깔끔하고 일관성 있게 유지되도록 하세요.

셸 포맷팅의 실용적인 사용 사례

데브옵스 & CI/CD 파이프라인

중요 업무용 스크립트를 가독성 있고 검토 가능하며 프로덕션 안전하게 유지합니다.

  • `main`에 병합하기 전에 배포 및 롤백 스크립트 정리.
  • `.git/hooks`, `scripts/` 및 CI 헬퍼의 훅 정규화.
  • Docker 엔트리포인트 및 컨테이너 부트스트랩 스크립트 포맷팅.
shfmt -i 2 -w ./scripts/deploy.sh
shfmt -i 2 -w ./scripts/*.sh

팀 협업 & 오픈소스

스타일 논쟁을 피하고 리뷰에서 로직에 집중합니다.

  • 모든 기여자의 셸 스크립트에 단일 스타일을 일괄 적용합니다.
  • 도트파일과 헬퍼를 깔끔하게 유지하여 온보딩을 더 쉽게 만듭니다.
  • 들여쓰기와 간격을 표준화하여 노이즈가 많은 diff를 줄입니다.
shfmt -w hooks/*.sh
shfmt -i 2 -ci -bn -w .

셸 스크립팅 학습 및 교육

학생과 주니어 개발자에게 모범 사례를 보여줍니다.

  • 슬라이드나 문서에 넣기 전에 예제를 정리합니다.
  • 학생 제출물을 자동 포맷하여 의미론적 피드백에 집중합니다.
  • 레이아웃이 가독성과 버그 발견에 어떻게 영향을 미치는지 시연합니다.

❓ Frequently Asked Questions

🔍shfmt란 무엇인가요?

`shfmt`는 mvdan이 만든 셸 스크립트용 오픈소스 명령줄 포맷터입니다. 셸 코드를 파싱하고 POSIX sh, Bash 및 유사한 방언에 대해 일관된 들여쓰기, 간격 및 구조로 재작성합니다.

⚙️들여쓰기 공백 수를 선택할 수 있나요?

네. CLI 사용 시 `-i` 플래그로 들여쓰기를 제어할 수 있습니다(예: `-i 2` 또는 `-i 4`). 이 온라인 도구는 포맷팅 백엔드를 통해 동등한 들여쓰기 선호도를 지원하도록 설계되었습니다.

🚫이 웹 도구는 제 파일을 덮어쓰나요?

아니요. 포맷터는 정리된 스크립트를 브라우저에서 반환합니다. 에디터에 복사할지 새 파일로 다운로드할지는 사용자가 결정합니다. 원본 파일은 사용자가 직접 덮어쓰지 않는 한 그대로 유지됩니다.

💬Bash 전용 구문을 이해하나요?

네. 기본 shfmt 스타일 엔진은 POSIX sh뿐만 아니라 일반적인 Bash 구조체와 mksh, ksh 등의 추가 셸을 지원합니다.

🔒민감한 스크립트를 여기서 포맷해도 안전한가요?

일반 용도의 스크립트에는 이 도구가 편리하고 안전합니다. 매우 민감한 데이터(내장된 비밀, 내부 인프라 세부 정보 등)를 포함하는 스크립트의 경우, 일반적으로 shfmt를 로컬에서 또는 자체 CI 환경 내에서 실행하는 것이 더 안전합니다.

Pro Tips

Best Practice

모든 커밋 전에 shfmt를 실행하여 git 기록이 공백이 아닌 실제 변경 사항에 집중하도록 하세요.

Best Practice

`shfmt -d`를 CI와 결합하여 스크립트가 제대로 포맷되지 않을 때 병합을 차단하세요.

Best Practice

이 포맷터와 ShellCheck를 함께 사용하여 셸 스크립트의 스타일과 논리 문제를 모두 잡으세요.

Best Practice

모든 스크립트에서 shebang(`#!/usr/bin/env bash`)을 일관되게 유지하여 미묘한 이식성 문제를 피하세요.

Additional Resources

Other Tools