Lệnh mkdir là lệnh dùng để tạo thư mục mới trong hệ thống file trên Linux/Unix. Đây là công cụ cơ bản để xây dựng và tổ chức cấu trúc thư mục, đặc biệt quan trọng trong các script cài đặt, deploy và tự động hóa. Trong bài viết này, mình sẽ hướng dẫn cách sử dụng lệnh mkdir để tối ưu hóa quy trình vận hành và tự động hóa thao tác tạo thư mục hiệu quả.
Những điểm chính
- Khái niệm: Hiểu rõ
mkdirlà lệnh dùng để tạo thư mục mới. - Lợi ích: Nắm được các lợi ích chính như tối ưu hóa quy trình, đảm bảo tính ổn định cho script và tăng cường bảo mật.
- Các tùy chọn của lệnh mkdir: Có được một bảng tra cứu nhanh các tùy chọn quan trọng, giúp bạn tùy chỉnh việc tạo thư mục một cách linh hoạt.
- Cách tối ưu khi dùng trong script: Biết được tổ hợp lệnh
mkdir -pvlà giải pháp tối ưu để tạo thư mục trong các script tự động hóa. - Các ứng dụng thực tế: Thành thạo cách sử dụng lệnh
mkdirtrong các tình huống thực tế, từ tạo thư mục cơ bản, phân cấp, đến thiết lập quyền và tạo hàng loạt. - Hướng dẫn chuẩn hóa môi trường Deploy: Học cách sử dụng tổ hợp
mkdir -pv -mđể chuẩn hóa và bảo mật môi trường triển khai ứng dụng. - Lưu ý: Nắm được các lưu ý quan trọng để sử dụng
mkdirmột cách an toàn và hiệu quả, tránh các lỗi phổ biến liên quan đến quyền hạn và ký tự đặc biệt. - Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh mkdir trong Linux.
Lệnh mkdir là gì?
Lệnh mkdir (viết tắt của make directory) trong Linux được dùng để tạo mới một hoặc nhiều thư mục trong hệ thống file của hệ điều hành. Lệnh này hoạt động trong giao diện dòng lệnh và cho phép tạo các thư mục rỗng cũng như đặt quyền truy cập cho chúng ngay tại thời điểm tạo.
Để sử dụng lệnh mkdir, người dùng phải có quyền tạo thư mục trong thư mục cha, nếu không sẽ nhận được thông báo lỗi “permission denied”. Cú pháp lệnh mkdir như sau:
mkdir [TÙY_CHỌN] TÊN_THƯ_MỤCTrong đó:
- mkdir: Là lệnh chính được sử dụng để tạo thư mục.
- [TÙY_CHỌN]: Là các tùy chọn bổ sung để điều chỉnh hành động của lệnh.
- TÊN_THƯ_MỤC: Là tên của thư mục bạn muốn tạo, có thể là một hoặc nhiều tên.

Những lợi ích khi sử dụng lệnh mkdir
Dưới đây là các lợi ích chính khi sử dụng lệnh mkdir trong quản trị hệ thống Linux:
- Tối ưu hóa quy trình khởi tạo: Sử dụng tùy chọn -p cho phép bạn xây dựng toàn bộ cấu trúc thư mục phân cấp sâu nhanh chóng trong một câu lệnh duy nhất.
- Đảm bảo tính ổn định cho Script: Các file lệnh tự động hóa hoạt động liên tục mà không bị lỗi gián đoạn do thư mục đích đã tồn tại trước đó.
- Tăng cường bảo mật: Hệ thống cho phép bạn thiết lập chính xác quyền truy cập ngay tại thời điểm khởi tạo thông qua tham số -m, loại bỏ rủi ro bảo mật giữa các bước cấu hình.
- Nâng cao hiệu suất thao tác: Bạn có thể tạo hàng loạt thư mục cùng cấp hoặc theo mẫu phức tạp một cách nhanh chóng bằng cách kết hợp với tính năng mở rộng của Shell.
- Hỗ trợ giám sát và kiểm toán: Quy trình vận hành trở nên minh bạch hơn khi bạn sử dụng chế độ -v để ghi lại nhật ký chính xác các thư mục vừa được tạo thành công.

Các tùy chọn của lệnh mkdir
| Tùy chọn | Chức năng kỹ thuật | Ví dụ minh họa |
|---|---|---|
| -p | Parents: Tạo thư mục đệ quy (nested), bao gồm cả thư mục cha nếu chưa có. | mkdir -p /home/user/project/src |
| -v | Verbose: Hiển thị chi tiết quá trình tạo thư mục ra màn hình (stdout). | mkdir -v logs |
| -m | Mode: Thiết lập quyền truy cập (permissions) ngay thời điểm tạo (tương tự chmod). | mkdir -m 755 backup |
| –help | Hiển thị tài liệu hướng dẫn nhanh. | mkdir --help |
| –version | Kiểm tra phiên bản của tiện ích. | mkdir --version |
Cách tối ưu khi dùng mkdir trong script
Để đảm bảo tính ổn định cho các script cài đặt hoặc triển khai, bạn nên ưu tiên sử dụng tổ hợp tùy chọn thay vì gọi lệnh mkdir mặc định. Cú pháp như sau:
mkdir -pv /path/to/new/folderTrong đó:
-p(Parents): Tự động tạo toàn bộ các thư mục cha còn thiếu trong đường dẫn và không báo lỗi nếu thư mục đích đã tồn tại, giúp script mang tính idempotent và không bị gián đoạn.-v(Verbose): Hiển thị thông báo xác nhận cho từng thư mục được tạo, hỗ trợ quá trình debug và ghi log trong môi trường vận hành thực tế.
Các ứng dụng thực tế của lệnh mkdir
- Tạo thư mục cơ bản
- Tạo cấu trúc thư mục phân cấp
- Tạo thư mục và hiển thị tên
- Thiết lập bảo mật ngay từ đầu
- Tạo hàng loạt thư mục
- Tích hợp với date để tạo folder theo ngày
- Kết hợp với lệnh find
1. Tạo thư mục cơ bản
Để tạo một thư mục đơn lẻ, bạn thực hiện lệnh sau:
mkdir my_folder
Lưu ý
2. Tạo cấu trúc thư mục phân cấp
Thay vì phải dùng lệnh cd để di chuyển và tạo từng cấp, bạn sử dụng tùy chọn -p để xây dựng đường dẫn trong một lệnh duy nhất. Cú pháp như sau:
mkdir -p project/src/components
3. Tạo thư mục và hiển thị tên
Bạn sử dụng tùy chọn -v để nhận phản hồi trực quan, xác nhận rằng thư mục đã được tạo thành công. Cú pháp như sau:
mkdir -v logsKết quả sẽ hiển thị thông báo: mkdir: created directory 'logs'

4. Thiết lập bảo mật ngay từ đầu
Lệnh mkdir -m 750 private_data dùng để tạo thư mục private_data và đồng thời thiết lập quyền truy cập ngay tại thời điểm tạo. Bạn dùng lệnh sau để thực hiện:
mkdir -m 750 private_dataÝ nghĩa quyền 750:
- Chủ sở hữu (owner): Có toàn quyền đọc, ghi, thực thi (7).
- Nhóm (group): Có quyền đọc và thực thi, không được ghi (5).
- Người khác (others): Không có bất kỳ quyền truy cập nào (0).

Lệnh trên sẽ đảm bảo thư mục chứa dữ liệu quan trọng được bảo vệ đúng quyền ngay từ đầu, không cần chạy chmod thêm bước sau đó. Ngoài ra, lệnh cũng giúp giảm rủi ro cấu hình sai permission trong các hệ thống lưu trữ như private_data, đặc biệt hữu ích trong môi trường Production.
5. Tạo hàng loạt thư mục
Lệnh sau dùng để tạo hàng loạt thư mục con input, output, temp bên trong thư mục data:
mkdir -p data/{input,output,temp}
6. Tích hợp với date để tạo folder theo ngày
Lệnh dưới đây dùng để tạo thư mục backup mới theo ngày hiện tại:
mkdir -p backups/$(date +%Y-%m-%d)
Cụ thể:
- -p: Tự động tạo thư mục backups nếu chưa tồn tại và không báo lỗi nếu đã có.
- $(date +%Y-%m-%d): Sinh chuỗi ngày theo định dạng YYYY-MM-DD, dùng làm tên thư mục con.
Lệnh trên thường được ứng dụng cho các cron job backup tự động hằng ngày, giúp tổ chức dữ liệu sao lưu theo từng ngày, dễ quản lý và khôi phục.
7. Kết hợp với lệnh find
Để tìm tất cả các thư mục có tên bắt đầu bằng module rồi tự động tạo thư mục backup tương ứng cho mỗi thư mục đó, bạn thực thi lệnh sau:
find . -type d -name "module*" -exec mkdir -p {}_backup \;
Hướng dẫn chuẩn hóa môi trường deploy
Để nâng cao tính ổn định và bảo mật cho các script triển khai ứng dụng, bạn thực thi lệnh sau:
mkdir -pv -m 750 /var/www/project/{logs,tmp}Trong đó:
- -p: Đảm bảo lệnh không bị thất bại khi /var/www/project chưa tồn tại hoặc các thư mục đích đã có sẵn, giúp script triển khai giữ được tính ổn định.
- -v: Ghi lại thông tin chi tiết về các thư mục được tạo, hỗ trợ việc kiểm tra và truy vết khi cần.
- -m 750: Thiết lập quyền chặt chẽ cho logs và tmp ngay từ thời điểm tạo, chỉ cho phép owner toàn quyền, group truy cập hạn chế và chặn hoàn toàn các user khác, tăng cường bảo mật cho môi trường deploy.
Những lưu ý khi sử dụng lệnh mkdir
Dưới đây là các lưu ý quan trọng khi sử dụng lệnh mkdir trong quản trị hệ thống Linux:
- Giới hạn tài nguyên Inode: Lệnh mkdir sẽ thất bại nếu phân vùng đĩa cứng đã cạn kiệt số lượng Inode cho phép, ngay cả khi dung lượng lưu trữ vẫn còn trống.
- Kiểm soát quyền truy cập mặc định: Bạn cần lưu ý rằng quyền hạn của thư mục mới sẽ phụ thuộc vào giá trị umask hiện tại của hệ thống nếu không sử dụng tùy chọn -m để thiết lập cụ thể.
- Xử lý xung đột định danh: Hệ thống sẽ báo lỗi và từ chối tạo thư mục nếu tại vị trí đích đã tồn tại một tập tin (file) thường có cùng tên gọi.
- Tuân thủ quy tắc đặt tên: Các tập lệnh có thể gặp lỗi cú pháp nghiêm trọng nếu tên thư mục chứa khoảng trắng hoặc ký tự đặc biệt mà không được bao bọc bởi dấu ngoặc kép hoặc ký tự thoát (\).
- Đảm bảo tính liên tục: Việc thiếu tùy chọn -p trong các script tự động hóa sẽ khiến quy trình bị ngắt quãng với lỗi “File exists” nếu thư mục đích đã được tạo từ lần chạy trước đó.

Câu hỏi thường gặp
Khi sử dụng lệnh mkdir -p -m 777 project/logs, các thư mục cha có nhận quyền 777 không?
Câu trả lời là không. Tùy chọn -m chỉ áp dụng quyền truy cập cho thư mục cuối cùng trong chuỗi đường dẫn. Các thư mục cha trung gian được tạo ra bởi tùy chọn -p sẽ nhận quyền mặc định dựa trên thiết lập umask của hệ thống (thường là 755 hoặc 775).
Tại sao lệnh mkdir data lại báo lỗi “File exists” dù tôi kiểm tra chưa có thư mục nào tên là “data”?
Trong hệ điều hành Linux, mọi tập tin, thư mục, thiết bị,… đều được quản lý dưới dạng file. Nếu trong thư mục hiện tại đã tồn tại một tập tin có tên là “data”, hệ thống sẽ ngăn chặn việc tạo một thư mục trùng tên để đảm bảo tính duy nhất của định danh.
Làm thế nào để tạo một thư mục có tên chứa khoảng trắng bằng mkdir?
Hệ thống Shell mặc định coi khoảng trắng là ký tự phân tách các đối số. Để tạo thư mục có tên chứa khoảng trắng, bạn cần đặt tên trong dấu ngoặc kép hoặc sử dụng ký tự thoát:
– Cách 1: mkdir “New Folder”
– Cách 2: mkdir New\ Folder
Tóm lại, lệnh mkdir là công cụ nền tảng giúp bạn chủ động tạo và tổ chức cấu trúc thư mục một cách khoa học trên Linux. Khi nắm vững các tùy chọn như tạo nhiều thư mục cùng lúc, tạo thư mục lồng nhau hay gán quyền truy cập phù hợp, bạn sẽ quản lý dữ liệu gọn gàng hơn và hạn chế lỗi trong quá trình vận hành hệ thống. Hy vọng qua bài viết này, mình đã giúp bạn hiểu và áp dụng lệnh mkdir hiệu quả hơn trong công việc cũng như học tập hằng ngày.




