Lệnh mkdir trong Linux — Tạo thư mục mới ngay lập tức

mkdir là lệnh tạo thư mục trong Terminal Linux, cho phép người dùng khởi tạo một hoặc nhiều thư mục cùng lúc với quyền truy cập tùy chỉnh. Khi triển khai dự án trên VPS hoặc thiết lập cấu trúc thư mục cho Web Server, quản trị viên thường cần tạo cây thư mục phân cấp rõ ràng để tổ chức mã nguồn, file cấu hình và log hệ thống. Lệnh mkdir hỗ trợ các tùy chọn như tạo thư mục cha tự động với tham số `-p`, thiết lập quyền truy cập ngay lúc khởi tạo bằng `-m`, giúp xử lý công việc từ thao tác cơ bản đến quản lý hệ thống phức tạp trong môi trường Linux. Nắm vững cách dùng mkdir là kỹ năng nền tảng không thể thiếu đối với bất kỳ quản trị viên nào.

Cần chuẩn bị gì trước khi dùng lệnh mkdir?

Cú pháp lệnh mkdir là gì?

Lệnh mkdir hỗ trợ 3 dạng cú pháp trên Linux: tạo thư mục đơn lẻ, tạo nhiều thư mục cùng lúc, và tạo cây thư mục lồng nhau.

mkdir [OPTION]... DIRECTORY...

mkdir DIRECTORY
mkdir DIRECTORY_1 DIRECTORY_2 DIRECTORY_N
mkdir -p /PATH/TO/DIRECTORY/CHILD
mkdir -p /PATH/TO/DIRECTORY/CHILD_1 /PATH/TO/DIRECTORY/CHILD_2
mkdir -m 755 DIRECTORY
mkdir -pv /PATH/TO/DIRECTORY/CHILD_1 /PATH/TO/DIRECTORY/CHILD_2

Các tùy chọn của lệnh mkdir là gì?

Lệnh mkdir hỗ trợ nhiều tùy chọn để điều chỉnh quyền truy cập, tạo thư mục lồng nhau và hiển thị thông báo trong quá trình tạo thư mục.

Tùy chọn ngắnTùy chọn dàiMô tả
-m --mode=CHẾ ĐỘ Đặt quyền truy cập cho thư mục mới tạo (mặc định là 0777 trừ đi umask).
-p --parents Tạo các thư mục cha nếu chưa tồn tại; không báo lỗi nếu thư mục đã có.
-v --verbose In thông báo mỗi khi một thư mục được tạo thành công.
-Z --context=CTX Đặt ngữ cảnh bảo mật SELinux cho thư mục mới thành CTX.
--help Hiển thị trợ giúp và thoát.
--version Hiển thị thông tin phiên bản và thoát.

Các ví dụ thực tế khi dùng lệnh mkdir trong công việc hàng ngày?

Trong thực tế vận hành hệ thống và phát triển phần mềm, mkdir là lệnh tôi dùng gần như mỗi ngày — từ tạo thư mục deploy, sắp xếp log, đến thiết lập cấu trúc dự án mới. Dưới đây là các tình huống cụ thể tôi hay gặp nhất.

Tạo thư mục đơn lẻ để sắp xếp dự án

mkdir /home/admin/projects/api-gateway

Thư mục api-gateway được tạo ngay bên trong /home/admin/projects. Đây là thao tác nhanh nhất khi bắt đầu một dự án mới trên server.

Tạo nhiều thư mục cùng lúc cho cấu trúc dự án hoàn chỉnh

mkdir -p /var/www/laravel-app/{public,storage/logs,bootstrap/cache,resources/views}

Tuỳ chọn -p tạo cả thư mục cha lẫn thư mục con mà không báo lỗi nếu đường dẫn đã tồn tại. Cấu trúc Laravel chuẩn được tạo trong một dòng lệnh duy nhất.

Thiết lập thư mục backup định kỳ với quyền hạn chế

mkdir -p /backup/mysql/2026-07-01 && chmod 700 /backup/mysql/2026-07-01

Thư mục backup theo ngày được tạo và chmod 700 để chỉ root mới đọc/ghi. Kết hợp với cron job chạy hàng đêm, đây là workflow backup mà tôi triển khai trên hầu hết server production.

Tạo thư mục workspace cho team trên server dùng chung

mkdir -p /home/shared/{frontend,backend,docs} && chmod 775 /home/shared/frontend /home/shared/backend && chmod 770 /home/shared/docs

Thư mục frontend và backend có quyền 775 để cả team đọc/ghi, còn docs chỉ có 770 cho nhóm kỹ thuật nội bộ. Phân quyền ngay từ lúc tạo giúp tránh phải chmod lại sau.

Tự động tạo thư mục deploy từ script CI/CD

RELEASE_DIR="/var/www/releases/$(date +%Y%m%d-%H%M%S)"
mkdir -p "$RELEASE_DIR"/{public,config,storage/runtime}
ln -sfn "$RELEASE_DIR" /var/www/current

Script CI/CD tạo thư mục release theo timestamp để support deploy rollback. Symbolic link /var/www/current luôn trỏ sang bản release mới nhất, và thư mục con được tạo đồng thời trước khi deploy code.

Xử lý lỗi thường gặp với lệnh mkdir

Khi làm việc với thư mục trên Linux, mkdir là lệnh tưởng chừng đơn giản nhưng lại dễ gây lỗi bất ngờ khi gặp phải trường hợp thư mục đã tồn tại, phân quyền chặt hoặc đường dẫn không hợp lệ. Nắm vững cách xử lý lỗi giúp tiết kiệm thời gian debug đáng kể.

1. Bảng lỗi thường gặp

Lỗi Nguyên nhân Khắc phục
mkdir: cannot create directory 'foo': File exists
Thư mục foo đã tồn tại trong thư mục hiện tại. Mặc định mkdir không ghi đè. Dùng mkdir -p để bỏ qua nếu thư mục đã tồn tại, hoặc xóa thư mục cũ trước bằng rm -r foo
mkdir: cannot create directory 'a/b/c': No such file or directory
Thư mục cha a hoặc b chưa tồn tại. mkdir không tự tạo thư mục trung gian. Dùng mkdir -p /path/to/a/b/c để tạo toàn bộ cây thư mục cùng lúc
mkdir: cannot create directory 'foo': Permission denied
Người dùng hiện tại không có quyền ghi (write) trong thư mục cha nơi muốn tạo thư mục mới. Kiểm tra quyền bằng ls -ld /parent_dir, sau đó dùng sudo mkdir foo hoặc yêu cầu admin cấp quyền
mkdir: cannot create directory 'foo': Read-only file system
Filesystem đích được mount ở chế độ read-only (thường gặp khi mount USB lỗi hoặc hệ thống recovery). Kiểm tra mount point bằng mount | grep /target; chuyển sang thư mục có quyền ghi hoặc remount filesystem
mkdir: missing operand
Không truyền tên thư mục cần tạo. Thường do quên đối số hoặc dùng biến rỗng. Kiểm tra lại cú pháp: mkdir ten_thu_muc. Với biến, dùng echo "$VAR" để xem giá trị trước

2. Tình huống lỗi cụ thể

Tình huống 1: Tạo thư mục con nhưng thư mục cha chưa tồn tại

$ mkdir project/src/utils
mkdir: cannot create directory 'project/src/utils': No such file or directory

Nguyên nhân: Thư mục project/src chưa được tạo nên mkdir không thể tạo thư mục con utils.

Khắc phục:

$ mkdir -p project/src/utils

Flag -p tạo toàn bộ cây thư mục trung gian. Nếu bất kỳ thư mục nào đã tồn tại, lệnh vẫn tiếp tục mà không báo lỗi.


Tình huống 2: Tạo thư mục trùng tên đã có

$ mkdir backups
mkdir: cannot create directory 'backups': File exists

Nguyên nhân: Thư mục backups đã tồn tại trong thư mục hiện tại.

Khắc phục: Có hai hướng xử lý tùy mục đích.

# Cách 1: Tạo thư mục mới với timestamp trong tên
$ mkdir backups_$(date +%Y%m%d)

# Cách 2: Xóa thư mục cũ rồi tạo mới (CẨN THẬN: mất dữ liệu)
$ rm -r backups && mkdir backups

# Cách 3: Dùng -p để bỏ qua lỗi nếu chỉ muốn đảm bảo thư mục tồn tại
$ mkdir -p backups

Tình huống 3: Không có quyền ghi vào thư mục cha

$ mkdir /var/www/myapp
mkdir: cannot create directory '/var/www/myapp': Permission denied

Nguyên nhân: Người dùng thường không có quyền ghi trong /var/www. Kiểm tra bằng:

$ ls -ld /var/www
drwxr-xr-x 2 root root 4096 Jun 10 09:00 /var/www

Thư mục thuộc về root và chỉ root mới có quyền ghi.

Khắc phục:

# Dùng sudo nếu có quyền admin
$ sudo mkdir /var/www/myapp

# Hoặc tạo trong thư mục cá nhân rồi di chuyển
$ mkdir -p ~/myapp && sudo mv ~/myapp /var/www/

3. Mẹo debug

mkdir khác gì so với rmdir và install?

Trên Linux, mỗi lệnh tạo thư mục đều có điểm mạnh và giới hạn riêng. Nắm rõ sự khác biệt giúp bạn chọn đúng công cụ cho từng kịch bản thay vì dùng lệnh bất kỳ chỉ vì "nó cũng tạo được thư mục".

Tiêu chímkdirrmdirinstall
Chức năng chínhTạo thư mục mớiXóa thư mục rỗngSao chép file và tự động tạo thư mục đích
Cú pháp cơ bảnmkdir [thư_mục]rmdir [thư_mục]install [nguồn] [đích]
Tạo thư mục cha tự độngCó, với tùy chọn -pKhôngCó, mặc định
Phạm vi áp dụngChỉ tạo thư mụcChỉ xóa thư mục rỗngPhân phối file vào hệ thống
Có sẵn hay cần càiMặc định trong coreutilsMặc định trong coreutilsMặc định trong coreutils
Quyền thư mục sinh raThừa hưởng umaskKhông áp dụngTùy chọn -m

Tạo cấu trúc thư mục lồng nhau nhanh nhất

Khi cần tạo một chuỗi thư mục cha lẫn thư mục con cùng lúc, mkdir -p là lựa chọn tối ưu. Lệnh này không báo lỗi nếu thư mục đã tồn tại, trong khi install chỉ tạo thư mục đích khi đồng thời sao chép file vào và rmdir không hỗ trợ tạo thư mục ở bất kỳ tình huống nào.

Xóa thư mục trống sau khi dọn file xong

Khi đã dùng rm xóa hết nội dung bên trong một thư mục và muốn xóa luôn thư mục cha đó, rmdir là công cụ an toàn vì nó chỉ xóa khi thư mục thực sự rỗng. Dùng mkdir hay install ở đây hoàn toàn sai mục đích.

Cài đặt file vào thư mục hệ thống mà không cần tạo thư mục trước

Trong script cài đặt, install -D vừa sao chép file vừa tự tạo thư mục cha nếu chưa có, thay vì phải chạy mkdir -p trước rồi mới chạy lệnh sao chép. Đây là cách các công cụ đóng gói như Makefile thường dùng.

Tóm tắt nhanh

Quy trình thực tế tạo cấu trúc thư mục dự án web với Nginx?

Trong một dự án triển khai web app với Nginx trên Ubuntu, trước khi gán quyền sở hữu và phân quyền truy cập cho thư mục dự án, ta cần tạo cấu trúc thư mục hoàn chỉnh theo chuẩn đặt tên.

Những câu hỏi thường gặp về lệnh mkdir?

Dưới đây là các câu hỏi phổ biến nhất từ người dùng khi mới tiếp cận lệnh tạo thư mục trên Linux.

Lệnh mkdir dùng để làm gì trên Linux?

mkdir (viết tắt của "make directory") là lệnh dùng để tạo thư mục mới trên hệ thống tệp Linux. Khi bạn cần tạo một thư mục mới để lưu trữ tệp hoặc tổ chức dữ liệu, đây là lệnh cơ bản nhất để thực hiện việc đó.

Cú pháp cơ bản của lệnh mkdir là gì?

Cú pháp cơ bản của mkdir rất đơn giản: mkdir tên_thư_mục. Ví dụ, mkdir projects sẽ tạo một thư mục tên "projects" trong thư mục hiện tại. Bạn cũng có thể chỉ định đường dẫn đầy đủ như mkdir /home/user/documents.

Làm sao tạo nhiều thư mục cùng lúc với mkdir?

Bạn chỉ cần liệt kê các tên thư mục cách nhau bằng dấu cách. Ví dụ: mkdir folder1 folder2 folder3. Lệnh này sẽ tạo đồng thời ba thư mục trong vị trí hiện tại mà không cần chạy lệnh riêng lẻ cho từng thư mục.

Cách tạo thư mục con nhiều cấp cùng lúc như thế nào?

Dùng tùy chọn -p (parents) để tạo toàn bộ cây thư mục lồng nhau trong một lần lệnh. Ví dụ: mkdir -p projects/web/assets/images sẽ tạo cả "projects", "web", "assets" và "images" nếu chúng chưa tồn tại mà không báo lỗi.

Nếu thư mục đã tồn tại thì mkdir có báo lỗi không?

Có, mkdir sẽ báo lỗi "File exists" nếu bạn cố tạo thư mục trùng tên trong cùng vị trí. Tuy nhiên, khi dùng tùy chọn -p, lệnh sẽ bỏ qua và không báo lỗi nếu thư mục đã có sẵn.

Sự khác nhau giữa lệnh mkdir và touch là gì?

mkdir tạo thư mục, còn touch tạo tệp rỗng. Đây là hai lệnh hoàn toàn khác nhau: mkdir tạo đơn vị lưu trữ dạng thư mục để chứa tệp bên trong, còn touch chỉ tạo một tệp trống không có nội dung. Người mới thường hay nhầm lẫn hai lệnh này với nhau.

Có thể phân quyền thư mục ngay khi tạo bằng mkdir không?

Có, dùng tùy chọn -m (mode) để đặt quyền truy cập ngay khi tạo. Ví dụ: mkdir -m 755 secure_folder sẽ tạo thư mục với quyền rwxr-xr-x. Nếu không dùng -m, thư mục sẽ được tạo với quyền mặc định theo cấu hình umask của hệ thống.

Tạo thư mục có tên chứa dấu cách thì viết lệnh thế nào?

Bạn cần đặt tên thư mục trong dấu ngoặc kép hoặc dùng dấu gạch ngược trước dấu cách. Ví dụ: mkdir "My Documents" hoặc mkdir My\ Documents. Nếu không xử lý đúng, hệ thống sẽ hiểu "My" và "Documents" là hai đối số riêng biệt và báo lỗi.

mkdir là lệnh nền tảng giúp tạo thư mục mới trên hệ thống Linux, với -p cho phép tạo cây thư mục lồng nhau và -m để thiết lập quyền truy cập ngay lúc khởi tạo. Việc nắm vững cách phối hợp các tham số này giúp bạn xây dựng cấu trúc thư mục có tổ chức và an toàn ngay từ đầu.

Nếu bạn cần dọn dẹp thư mục rỗng, rmdir là lựa chọn phù hợp. Để kiểm tra kết quả sau khi tạo, hãy kết hợp với ls nhằm xác nhận cấu trúc và quyền truy cập đã được thiết lập đúng ý muốn.

Hãy mở terminal và thực hành tạo các thư mục lồng nhau với mkdir -p ngay trong môi trường thử nghiệm. Khi đã quen thuộc với cú pháp và các tùy chọn, bạn có thể tự tin áp dụng vào các dự án thực tế một cách chính xác.

Bài viết liên quan