Loading…

Giới thiệu Công Cụ Định Dạng Script Shell Trực Tuyến

Dán script shell của bạn, nhấn "Định dạng" và nhận kết quả sạch sẽ, nhất quán được cung cấp bởi `shfmt`. Lý tưởng cho pipeline DevOps, dotfiles, entrypoint container và script triển khai sẵn sàng cho sản xuất. Không cần cài đặt, không cần đăng nhập – chỉ cần mã shell dễ đọc sẵn sàng để commit.

Tại Sao Sử Dụng Công Cụ Định Dạng Script Shell Này

  • Định dạng ngay lập tức cho POSIX sh, Bash, mksh và các shell liên quan
  • Quy tắc kiểu shfmt cho lề, khoảng cách và khối case/esac
  • Được thiết kế để hỗ trợ các tùy chọn như kích thước lề, tab so với khoảng trắng và khoảng cách chuyển hướng
  • Dán mã thô hoặc tải lên tệp `.sh`, `.bash`, `.ksh`, `.mksh`, hoặc `.bats`
  • Người bạn đồng hành hoàn hảo cho pipeline CI/CD, entrypoint Docker và dotfiles
  • Được định dạng qua backend bảo mật chạy logic kiểu shfmt – không cần cài đặt cục bộ
  • Sao chép hoặc tải xuống script đã làm sạch chỉ với một cú nhấp chuột

🛠️ Cách Định Dạng Script Shell Trực Tuyến for shell-script-formatter

1

1. Dán hoặc Tải Lên Script Của Bạn

📥 Dán mã shell vào trình soạn thảo, hoặc kéo-thả tệp `.sh`, `.bash`, `.ksh`, `.mksh` hoặc `.bats`. Tô sáng cú pháp giúp dễ dàng nhận diện cấu trúc và lệnh.

2

2. (Tùy chọn) Điều Chỉnh Cài Đặt Nâng Cao

⚙️ Nếu dự án của bạn sử dụng quy tắc kiểu tùy chỉnh, hãy điều chỉnh thụt lề hoặc các tùy chọn nâng cao khác khi chúng có sẵn trong giao diện. Ngược lại, hồ sơ mặc định đã khớp với thực hành shfmt phổ biến.

3

3. Định Dạng Script Của Bạn

✨ Nhấp **Định dạng** để gửi script đến API định dạng bảo mật. Nó viết lại thụt lề, khoảng cách và một số cấu trúc trong khi bảo toàn hành vi.

4

4. Sao Chép hoặc Tải Xuống Kết Quả

📤 Sao chép script đã định dạng trở lại trình soạn thảo của bạn, hoặc tải xuống dưới dạng tệp `.sh` sẵn sàng cho git, CI, hoặc triển khai sản xuất.

Thông Số Kỹ Thuật

Định Dạng & Phần Mở Rộng Được Hỗ Trợ

Hỗ trợ các phương ngữ shell kiểu Bourne phổ biến bạn gặp trong hệ thống thực tế:

Định Dạng / Phương NgữPhần Mở Rộng Điển HìnhMô Tả
POSIX sh.shScript shell di động tương thích với /bin/sh
Bash.sh, .bashScript GNU Bash và trình hỗ trợ tương tác
Korn shell (ksh).kshScript Korn shell trong môi trường kế thừa
mksh.mkshKịch bản shell MirBSD Korn
Kiểm thử Bats.batsBộ kiểm thử dựa trên shell sử dụng Bats

Hành vi Định dạng (Kiểu shfmt)

Bộ định dạng backend tuân theo quy tắc kiểu shfmt để bố cục shell nhất quán.

Khía cạnhHành viLợi ích
Thụt lềChuẩn hóa thụt lề trên `if`, `for`, `while`, `case`, hàm và subshellDễ dàng phân tích luồng điều khiển và lồng nhau bằng mắt.
Khoảng cáchThêm khoảng trắng quanh `=` trong phép gán và quanh toán tử nhị phân khi phù hợpGiảm nhiễu hình ảnh và lỗi phân tích ngẫu nhiên.
Chuyển hướngHỗ trợ khoảng cách quanh `>`, `>>`, `<` theo quy ước kiểu shfmtCải thiện khả năng đọc của chuyển hướng tệp.
Khối caseCăn chỉnh `case`, nhánh mẫu và `esac` một cách nhất quánNgăn chặn câu lệnh case lồng sâu hoặc nén chặt.
Đầu ra bất biếnChạy lại bộ định dạng cho kết quả tương tựCho phép tích hợp an toàn trong hook pre-commit và CI.

Giới hạn & Kích thước Đầu vào

Được thiết kế để nhanh và dự đoán được ngay cả trên các kịch bản phức tạp.

Tham sốGiới hạn / Hành viGhi chú
Kích thước đầu vào tối đa (văn bản)≈ 2 MBCác kịch bản lớn hơn nên được định dạng cục bộ với shfmt.
Kích thước tệp tối đa (tải lên)≈ 5 MBLý tưởng cho hầu hết kịch bản triển khai và bộ tiện ích.
Mã hóaKhuyến nghị UTF-8Chuyển đổi mã hóa cũ như ISO-8859-1 trước khi định dạng.

Mô hình Thực thi

Bộ định dạng chạy qua một backend được bảo mật sử dụng logic kiểu shfmt.

Khía cạnhHành viGhi chú
Vận chuyểnGọi HTTPS đến điểm cuối `/api/shell-script-formatter`Ngăn chặn nghe lén trong khi kịch bản của bạn đang được định dạng.
Thời gian chờ~25 giây mỗi yêu cầuTránh các công việc không kiểm soát trên đầu vào cực lớn hoặc bất thường.
Ngữ nghĩaChỉ khoảng trắng và bố cụcLogic kịch bản của bạn được giữ nguyên; chỉ định dạng được thay đổi.

Tương đương CLI với shfmt

Muốn có hành vi tương tự trong terminal hoặc pipeline CI của bạn? Sử dụng trực tiếp `shfmt`:

Linux / 🍎 macOS / 🪟 Windows (qua WSL hoặc Go)

Cài đặt shfmt bằng Go

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

Cài đặt tệp nhị phân `shfmt` vào thư mục bin Go của bạn (ví dụ: `~/go/bin`).

Định dạng tệp shell với thụt lề 2 khoảng trắng

shfmt -i 2 -w script.sh

Ghi đè `script.sh` với đầu ra được định dạng nhất quán.

Định dạng và in ra stdout

shfmt -i 4 script.sh

Sử dụng thụt lề 4 khoảng trắng và in ra stdout mà không sửa đổi tệp.

Kiểm tra định dạng trong CI (không thay đổi)

shfmt -d scripts/

Hiển thị khác biệt cho các tệp sẽ được định dạng lại; thoát với mã khác không nếu cần thay đổi.

Thêm bước `shfmt -d` trong pipeline CI hoặc hook pre-commit để mọi kịch bản luôn sạch và nhất quán tự động.

Trường hợp sử dụng thực tế cho Định dạng Shell

DevOps & Pipeline CI/CD

Giữ các kịch bản quan trọng dễ đọc, dễ xem xét và an toàn cho sản xuất.

  • Dọn dẹp kịch bản triển khai và hoàn tác trước khi hợp nhất vào `main`.
  • Chuẩn hóa hook trong `.git/hooks`, `scripts/` và trợ giúp CI.
  • Định dạng điểm nhập Docker và kịch bản khởi động container.
shfmt -i 2 -w ./scripts/deploy.sh
shfmt -i 2 -w ./scripts/*.sh

Hợp tác nhóm & Mã nguồn mở

Tránh tranh cãi về phong cách và tập trung vào logic trong đánh giá.

  • Áp dụng một kiểu định dạng duy nhất cho tất cả các tập lệnh shell của người đóng góp.
  • Giúp việc hòa nhập dễ dàng hơn bằng cách giữ các dotfile và công cụ hỗ trợ gọn gàng.
  • Giảm sự khác biệt nhiễu bằng cách chuẩn hóa thụt lề và khoảng cách.
shfmt -w hooks/*.sh
shfmt -i 2 -ci -bn -w .

Học & Dạy Lập Trình Shell

Trình bày các phương pháp tốt nhất cho sinh viên và nhà phát triển mới.

  • Làm sạch ví dụ trước khi đưa vào slide hoặc tài liệu.
  • Tự động định dạng bài nộp của sinh viên để tập trung phản hồi vào ngữ nghĩa.
  • Minh họa cách bố cục ảnh hưởng đến khả năng đọc và phát hiện lỗi.

❓ Frequently Asked Questions

🔍shfmt là gì?

`shfmt` là một công cụ định dạng dòng lệnh mã nguồn mở cho tập lệnh shell được tạo bởi mvdan. Nó phân tích mã shell của bạn và viết lại với thụt lề, khoảng cách và cấu trúc nhất quán cho POSIX sh, Bash và các phương ngữ tương tự.

⚙️Tôi có thể chọn số khoảng trắng để thụt lề không?

Có. Trong sử dụng CLI, bạn có thể kiểm soát thụt lề với cờ `-i` (ví dụ `-i 2` hoặc `-i 4`). Công cụ trực tuyến này được thiết kế để hỗ trợ các tùy chọn thụt lề tương đương thông qua backend định dạng của nó.

🚫Công cụ web này có ghi đè lên tệp của tôi không?

Không. Công cụ định dạng trả về tập lệnh đã được làm sạch trong trình duyệt. Bạn quyết định có sao chép nó vào trình soạn thảo hoặc tải xuống như một tệp mới. Các bản gốc của bạn vẫn không bị thay đổi trừ khi bạn tự ghi đè chúng.

💬Nó có hiểu cú pháp đặc thù của Bash không?

Có. Công cụ shfmt cơ bản hỗ trợ các cấu trúc Bash phổ biến cũng như POSIX sh, cùng với các shell bổ sung như mksh và ksh.

🔒Có an toàn khi định dạng các tập lệnh nhạy cảm ở đây không?

Đối với các tập lệnh thông thường, công cụ này tiện lợi và an toàn. Đối với các tập lệnh chứa dữ liệu cực kỳ nhạy cảm (bí mật nhúng, chi tiết cơ sở hạ tầng nội bộ, v.v.), thường an toàn hơn khi chạy shfmt cục bộ hoặc trong môi trường CI của riêng bạn.

Pro Tips

Best Practice

Chạy shfmt trước mỗi lần commit để lịch sử git của bạn tập trung vào các thay đổi thực sự, không phải khoảng trắng.

Best Practice

Kết hợp `shfmt -d` với CI để chặn các hợp nhất khi tập lệnh không được định dạng đúng cách.

Best Practice

Kết hợp công cụ định dạng này với ShellCheck để phát hiện cả vấn đề về kiểu và logic trong tập lệnh shell của bạn.

Best Practice

Giữ nguyên shebangs (`#!/usr/bin/env bash`) nhất quán trên tất cả script để tránh các vấn đề tương thích ngầm.

Additional Resources

Other Tools