Chắc hẳn khi làm việc với Linux, bạn thường xuyên phải tạo các thư mục mới để tổ chức file và dữ liệu. Thao tác này nghe có vẻ đơn giản, nhưng nếu thực hiện thủ công qua giao diện đồ họa, đặc biệt là trên môi trường máy chủ (server), sẽ rất tốn thời gian và thiếu chuyên nghiệp. Lệnh mkdir trong Linux ra đời chính là để giải quyết vấn đề này, giúp bạn tạo thư mục một cách nhanh chóng và hiệu quả chỉ với một dòng lệnh. Tuy nhiên, việc không nắm vững cú pháp hoặc các tham số của nó có thể dẫn đến những lỗi không đáng có như “Permission denied” hay “File exists”, gây gián đoạn công việc.
Bài viết này sẽ là kim chỉ nam toàn diện của bạn về lệnh mkdir. Chúng ta sẽ cùng nhau đi từ những khái niệm cơ bản nhất như cú pháp và ý nghĩa, đến các kỹ thuật nâng cao như tạo hàng loạt thư mục, tạo cấu trúc thư mục lồng nhau, và thiết lập quyền truy cập ngay khi tạo. Hơn thế nữa, Bùi Mạnh Đức sẽ chỉ ra những lỗi thường gặp và cách khắc phục triệt để, cùng với các kinh nghiệm thực tiễn tốt nhất để bạn có thể quản lý hệ thống file của mình như một chuyên gia. Hãy cùng bắt đầu hành trình làm chủ lệnh mkdir ngay bâyed giờ!

Giới thiệu về lệnh mkdir trong Linux
Trong hệ sinh thái của Linux, mọi thứ đều được coi là một file, và việc tổ chức các file này vào những thư mục có cấu trúc rõ ràng là yếu tố sống còn để quản trị hệ thống hiệu quả. Lệnh mkdir (viết tắt của “make directory”) là một trong những công cụ cơ bản và mạnh mẽ nhất mà bất kỳ người dùng Linux nào, từ người mới bắt đầu đến quản trị viên hệ thống chuyên nghiệp, đều phải thành thạo. Vai trò chính của nó vô cùng đơn giản: tạo ra một hoặc nhiều thư mục mới tại vị trí bạn chỉ định.
Vấn đề thường gặp phải khi làm việc trên môi trường dòng lệnh là sự lúng túng khi cần tạo một cấu trúc thư mục phức tạp, chẳng hạn như project/assets/images. Nếu tạo thủ công từng thư mục một, bạn sẽ phải gõ lệnh mkdir project, sau đó cd project, rồi mkdir assets, và cứ tiếp tục như vậy. Cách làm này không chỉ chậm chạp mà còn dễ gây ra lỗi. Ngược lại, việc sử dụng sai cú pháp hoặc không hiểu rõ các tham số của lệnh mkdir có thể dẫn đến thông báo lỗi khó hiểu, làm bạn bối rối và mất thời gian tìm cách giải quyết.
Qua bài viết này, bạn sẽ không chỉ học thuộc lòng cú pháp, mà còn thực sự hiểu sâu sắc cách lệnh mkdir hoạt động. Chúng tôi hứa sẽ cung cấp cho bạn những hướng dẫn chi tiết, ví dụ trực quan và các mẹo hữu ích để bạn có thể sử dụng lệnh này một cách linh hoạt và hiệu quả nhất. Bài viết được cấu trúc một cách logic, bắt đầu từ cú pháp và các tham số cơ bản, sau đó đi sâu vào các hướng dẫn thực hành từ đơn giản đến nâng cao, phân tích các lỗi thường gặp và cuối cùng là tổng hợp các phương pháp hay nhất (best practices) để bạn áp dụng vào công việc hàng ngày.

Cú pháp và các tham số phổ biến của lệnh mkdir
Để sử dụng thành thạo bất kỳ câu lệnh nào trong Linux, việc đầu tiên và quan trọng nhất là phải nắm vững cú pháp của nó. Lệnh mkdir cũng không ngoại lệ. May mắn là cú pháp của nó rất đơn giản và dễ nhớ, giúp bạn nhanh chóng làm quen và áp dụng.
Cú pháp cơ bản của lệnh mkdir
Cú pháp tổng quát của lệnh mkdir được định nghĩa như sau:
mkdir [tùy chọn] tên_thư_mục...
Hãy cùng phân tích từng thành phần trong câu lệnh này để hiểu rõ ý nghĩa của chúng:
- mkdir: Đây là tên của lệnh mà bạn gọi để thực thi chức năng tạo thư mục.
- [tùy chọn] (options): Đây là các tham số hoặc cờ (flags) bạn có thể thêm vào để thay đổi hành vi mặc định của lệnh. Các tùy chọn này cho phép bạn thực hiện các tác vụ nâng cao hơn, chẳng hạn như tạo thư mục con lồng nhau hoặc thiết lập quyền truy cập. Phần này không bắt buộc.
- tên_thư_mục…: Đây là tên của một hoặc nhiều thư mục mà bạn muốn tạo. Nếu bạn cung cấp nhiều tên, chúng phải được phân tách với nhau bằng dấu cách. Đây là thành phần bắt buộc của câu lệnh.
Các tham số thường dùng
Lệnh mkdir trở nên mạnh mẽ và linh hoạt hơn rất nhiều nhờ vào các tham số đi kèm. Dưới đây là những tham số phổ biến và hữu ích nhất mà bạn nên biết:
- -p (hoặc –parents): Đây là tham số cực kỳ hữu ích, có thể coi là “vị cứu tinh” trong nhiều trường hợp. Nó cho phép bạn tạo một lúc cả thư mục cha nếu chúng chưa tồn tại. Ví dụ, nếu bạn muốn tạo thư mục
a/b/c nhưng a và a/b chưa có, lệnh mkdir -p a/b/c sẽ tự động tạo cả ba thư mục này mà không báo lỗi. Nếu không có -p, lệnh sẽ thất bại.
- -m (hoặc –mode): Tham số này dùng để thiết lập quyền truy cập (permissions) cho thư mục ngay tại thời điểm nó được tạo. Bạn sẽ cung cấp quyền dưới dạng mã octal (ví dụ: 755, 777). Điều này rất tiện lợi khi bạn cần tạo thư mục với các quyền truy cập cụ thể cho các dự án web hoặc ứng dụng, thay vì phải tạo thư mục rồi mới dùng lệnh
chmod.
- -v (hoặc –verbose): Khi sử dụng tham số này, terminal sẽ in ra một thông báo cho mỗi thư mục được tạo. Ví dụ:
mkdir: created directory 'ten_thu_muc'. Chế độ “verbose” (chi tiết) này rất hữu ích khi bạn viết script tự động hóa hoặc khi tạo nhiều thư mục cùng lúc và muốn xác nhận rằng mọi thứ đã được tạo thành công.
Ngoài ra, còn một số tham số khác ít dùng hơn nhưng cũng có thể hữu ích trong một số tình huống nhất định, chẳng hạn như --help để hiển thị hướng dẫn sử dụng hoặc --version để xem phiên bản của mkdir. Nắm vững ba tham số -p, -m, và -v đã đủ để bạn xử lý hầu hết các tác vụ hàng ngày.

Hướng dẫn tạo thư mục đơn giản và nâng cao với mkdir
Sau khi đã nắm được cú pháp và các tham số quan trọng, bây giờ là lúc chúng ta bước vào phần thực hành. Bùi Mạnh Đức sẽ hướng dẫn bạn từ những thao tác cơ bản nhất đến các kỹ thuật nâng cao hơn để bạn có thể áp dụng lệnh mkdir một cách linh hoạt trong mọi tình huống.
Tạo thư mục đơn giản
Đây là cách sử dụng cơ bản nhất của lệnh mkdir. Để tạo một thư mục mới trong thư mục làm việc hiện tại của bạn, chỉ cần gõ lệnh mkdir theo sau là tên thư mục bạn muốn tạo.
Ví dụ, để tạo một thư mục có tên là du-an-moi, bạn chỉ cần mở terminal và gõ:
mkdir du-an-moi
Sau khi thực thi lệnh, bạn có thể dùng lệnh ls để kiểm tra và sẽ thấy thư mục du-an-moi vừa xuất hiện. Rất đơn giản phải không?
Lưu ý quan trọng khi đặt tên thư mục:
- Tránh sử dụng dấu cách trong tên thư mục. Nếu bắt buộc phải có, bạn cần đặt toàn bộ tên trong dấu ngoặc kép (ví dụ:
mkdir "du an moi") hoặc sử dụng dấu gạch chéo ngược \ trước dấu cách (ví dụ: mkdir du\ an\ moi). Tuy nhiên, cách tốt nhất là dùng dấu gạch nối - hoặc dấu gạch dưới _ để thay thế.
- Tên thư mục trong Linux có phân biệt chữ hoa và chữ thường.
Du-An-Moi và du-an-moi là hai thư mục hoàn toàn khác nhau.
- Hạn chế sử dụng các ký tự đặc biệt như
*, ?, &, $… vì chúng có ý nghĩa đặc biệt trong shell và có thể gây ra lỗi không mong muốn.
Tạo nhiều thư mục cùng lúc bằng mkdir
Tưởng tượng bạn đang bắt đầu một dự án website mới và cần tạo các thư mục để chứa mã nguồn, hình ảnh, file CSS và JavaScript. Thay vì gõ lệnh mkdir bốn lần, bạn có thể tạo tất cả chúng chỉ bằng một lệnh duy nhất.
Cú pháp để tạo nhiều thư mục cùng lúc là liệt kê tất cả các tên thư mục bạn muốn tạo, mỗi tên cách nhau bởi một khoảng trắng.
Ví dụ thực tế:
mkdir assets images css js
Lệnh này sẽ tạo ra bốn thư mục riêng biệt là assets, images, css, và js trong thư mục hiện tại. Cách làm này giúp tiết kiệm đáng kể thời gian và công sức, đặc biệt hữu ích khi bạn cần thiết lập cấu trúc cho một dự án mới.

Sử dụng tùy chọn -p để tạo thư mục con đệ quy
Đây chính là sức mạnh thực sự của mkdir. Tham số -p (parents) cho phép bạn tạo một đường dẫn thư mục hoàn chỉnh, ngay cả khi các thư mục cha trong đường dẫn đó chưa hề tồn tại. Nó hoạt động theo nguyên tắc “đệ quy”, tức là nó sẽ tạo thư mục cha trước, rồi mới đến thư mục con bên trong nó.
Hãy xem xét tình huống sau: bạn muốn tạo thư mục uploads nằm trong đường dẫn du-an-moi/data/. Nếu bạn chỉ dùng lệnh mkdir du-an-moi/data/uploads trong khi thư mục du-an-moi hoặc data chưa tồn tại, bạn sẽ nhận được một thông báo lỗi: mkdir: cannot create directory ‘du-an-moi/data/uploads’: No such file or directory.
Đây là lúc tham số -p tỏa sáng. Bằng cách thêm nó vào câu lệnh, bạn yêu cầu mkdir hãy tự động tạo các thư mục cha cần thiết.
Ví dụ tạo đường dẫn thư mục dài:
mkdir -p du-an-moi/data/uploads
Khi thực thi lệnh này, mkdir sẽ kiểm tra:
- Thư mục
du-an-moi đã tồn tại chưa? Nếu chưa, tạo nó.
- Bên trong
du-an-moi, thư mục data đã tồn tại chưa? Nếu chưa, tạo nó.
- Cuối cùng, tạo thư mục
uploads bên trong du-an-moi/data/.
Đặc biệt, nếu bất kỳ thư mục nào trong chuỗi này đã tồn tại, mkdir -p sẽ không báo lỗi mà chỉ đơn giản là bỏ qua và tiếp tục tạo các thư mục còn lại. Tính năng này làm cho tham số -p trở thành một công cụ không thể thiếu khi viết các script tự động hóa, đảm bảo script chạy mượt mà mà không bị dừng lại bởi lỗi “thư mục đã tồn tại”.

Các ví dụ thực hành sử dụng lệnh mkdir trong Linux
Lý thuyết sẽ trở nên dễ hiểu hơn rất nhiều khi được áp dụng vào các ví dụ thực tế. Trong phần này, chúng ta sẽ kết hợp các tham số đã học để giải quyết những bài toán cụ thể, giúp bạn thấy được sự linh hoạt và sức mạnh của lệnh mkdir trong công việc quản trị hệ thống hàng ngày.
Ví dụ tạo thư mục với thiết lập quyền truy cập
Khi bạn làm việc với các dự án web, việc thiết lập đúng quyền truy cập cho thư mục là vô cùng quan trọng để đảm bảo tính bảo mật và hoạt động của ứng dụng. Ví dụ, một thư mục uploads cần phải cho phép web server ghi file vào đó, trong khi một thư mục chứa mã nguồn nhạy cảm thì cần hạn chế quyền truy cập. Tham số -m (mode) cho phép bạn làm điều này ngay từ đầu.
Hệ thống quyền trong Linux được thể hiện qua ba ký tự: r (read – đọc), w (write – ghi), và x (execute – thực thi). Các quyền này được áp dụng cho ba đối tượng: chủ sở hữu (user), nhóm (group), và những người khác (others). Chúng thường được biểu diễn bằng một con số 3 chữ số trong hệ bát phân (octal).
- r (read) = 4
- w (write) = 2
- x (execute) = 1
Bằng cách cộng các con số này, bạn sẽ có được quyền mong muốn. Ví dụ, quyền rwx (đọc, ghi, thực thi) sẽ là 4 + 2 + 1 = 7. Quyền r-x (chỉ đọc và thực thi) sẽ là 4 + 1 = 5.
Giả sử bạn muốn tạo một thư mục cache cho website WordPress và cần cấp toàn quyền (đọc, ghi, thực thi) cho chủ sở hữu, và chỉ quyền đọc và thực thi cho nhóm và những người khác. Quyền này tương ứng với mã 755.
Bạn sẽ sử dụng lệnh sau:
mkdir -m 755 cache
Sau khi tạo xong, bạn có thể dùng lệnh ls -ld cache để kiểm tra quyền truy cập. Kết quả sẽ hiển thị là drwxr-xr-x, chính xác như những gì bạn đã thiết lập. Việc này giúp bạn tiết kiệm được một bước so với việc phải dùng lệnh chmod sau khi tạo thư mục.

Ví dụ kết hợp nhiều tham số khi tạo thư mục
Sức mạnh thực sự của command line nằm ở khả năng kết hợp nhiều công cụ và tham số để thực hiện các tác vụ phức tạp chỉ trong một dòng lệnh. Với mkdir, bạn có thể dễ dàng kết hợp các tham số -p, -m, và -v để đạt được hiệu quả tối đa.
Hãy tưởng tượng bạn đang thiết lập một môi trường cho ứng dụng mới. Bạn cần tạo một cấu trúc thư mục app/logs để lưu file log. Thư mục này cần có quyền cho phép chủ sở hữu và nhóm có thể ghi vào đó (quyền 775), và bạn cũng muốn thấy thông báo xác nhận cho mỗi thư mục được tạo.
Đây là câu lệnh hoàn hảo cho nhiệm vụ này:
mkdir -v -p -m 775 app/logs
Hãy cùng phân tích câu lệnh này:
Chỉ với một câu lệnh ngắn gọn, bạn đã hoàn thành một tác vụ gồm nhiều bước: kiểm tra và tạo thư mục cha, tạo thư mục con, thiết lập quyền truy cập chính xác, và nhận được phản hồi trực quan. Đây là một ví dụ điển hình cho thấy hiệu quả và sự tinh tế của việc sử dụng dòng lệnh trong Linux.

Lưu ý về quyền truy cập và lỗi thường gặp khi dùng mkdir
Mặc dù lệnh mkdir khá đơn giản, nhưng trong quá trình sử dụng, bạn có thể sẽ gặp phải một số lỗi phổ biến, chủ yếu liên quan đến quyền truy cập và việc thư mục đã tồn tại. Hiểu rõ nguyên nhân và cách khắc phục những lỗi này sẽ giúp bạn làm việc hiệu quả hơn và tránh được những lúc bối rối không cần thiết.
Lỗi “Permission denied” khi tạo thư mục
Đây là lỗi mà gần như mọi người dùng Linux là gì đều gặp phải ít nhất một lần. Bạn gõ lệnh mkdir new-folder và nhận lại thông báo lỗi: mkdir: cannot create directory ‘new-folder’: Permission denied.
Nguyên nhân: Lỗi này xảy ra khi bạn không có quyền ghi (write permission) trong thư mục cha mà bạn đang cố gắng tạo thư mục con bên trong nó. Ví dụ, bạn đang ở trong thư mục /home/user và cố gắng tạo một thư mục mới trong /etc, một thư mục hệ thống mà chỉ người dùng root mới có quyền ghi.
Cách kiểm tra và giải quyết:
- Kiểm tra quyền của thư mục cha: Sử dụng lệnh
ls -ld . để xem quyền của thư mục hiện tại, hoặc ls -ld /path/to/parent_directory để xem quyền của một thư mục cụ thể. Bạn cần chú ý đến ký tự w trong chuỗi quyền.
- Sử dụng
sudo: Nếu bạn có quyền quản trị viên (administrator) và việc tạo thư mục ở vị trí đó là cần thiết cho hệ thống, bạn có thể sử dụng lệnh sudo ở đầu câu lệnh. sudo (Super User Do) sẽ thực thi lệnh với quyền của người dùng root.
sudo mkdir /etc/new-config-folder
Cảnh báo: Hãy hết sức cẩn thận khi sử dụng sudo. Việc thay đổi các thư mục hệ thống một cách tùy tiện có thể gây ra những sự cố nghiêm trọng. Chỉ sử dụng sudo khi bạn thực sự biết mình đang làm gì.
- Chuyển đến thư mục khác: Nếu bạn không có ý định tạo thư mục hệ thống, có thể bạn chỉ đang ở sai vị trí. Hãy dùng lệnh cd để di chuyển đến thư mục cá nhân của bạn (ví dụ
cd ~) nơi bạn có toàn quyền, và thực hiện lại lệnh mkdir.

Lỗi “File exists” khi thư mục đã tồn tại
Một lỗi phổ biến khác là: mkdir: cannot create directory ‘my-project’: File exists. Lỗi này rõ ràng hơn nhiều so với “Permission denied”.
Nguyên nhân: Đơn giản là đã có một file hoặc một thư mục khác cùng tên với thư mục bạn đang cố gắng tạo tại vị trí đó. Hãy nhớ rằng trong Linux, tên file và tên thư mục không thể trùng nhau trong cùng một cấp.
Cách xử lý để tránh lỗi:
- Chọn tên khác: Cách giải quyết đơn giản nhất là chọn một tên khác cho thư mục của bạn.
- Kiểm tra trước khi tạo: Bạn có thể dùng lệnh ls để xem danh sách các file và thư mục hiện có để chắc chắn rằng tên bạn chọn chưa được sử dụng.
- Xóa đối tượng hiện có (nếu cần): Nếu file hoặc thư mục hiện tại không còn cần thiết, bạn có thể xóa nó đi bằng lệnh
rm (cho file) hoặc rm -r (cho thư mục) rồi sau đó tạo lại. Hãy chắc chắn rằng bạn không xóa nhầm dữ liệu quan trọng.
Khi nào nên dùng tham số -p: Đây là một điểm cực kỳ hữu ích. Nếu bạn sử dụng lệnh mkdir -p ten_thu_muc và thư mục ten_thu_muc đã tồn tại, lệnh sẽ không báo lỗi “File exists”. Thay vào đó, nó sẽ âm thầm bỏ qua và kết thúc thành công. Chính vì hành vi “an toàn” này, việc luôn sử dụng tham số -p trong các script tự động hóa được coi là một phương pháp hay (best practice), giúp script của bạn trở nên mạnh mẽ và ít bị lỗi hơn, vì nó có thể chạy đi chạy lại nhiều lần mà không gây ra sự cố.

Best Practices
Để sử dụng lệnh mkdir không chỉ đúng mà còn hiệu quả và chuyên nghiệp, bạn nên tuân thủ một số nguyên tắc và thói quen tốt. Những “best practices” này sẽ giúp bạn tránh được lỗi, giữ cho cấu trúc hệ thống file luôn gọn gàng và dễ quản lý, đồng thời làm cho các script của bạn trở nên đáng tin cậy hơn.
Luôn kiểm tra quyền trước khi tạo thư mục, dùng sudo nếu cần thiết: Trước khi tạo một thư mục ở một vị trí lạ, đặc biệt là bên ngoài thư mục nhà của bạn (/home/username), hãy tập thói quen dùng ls -ld /path/to/directory để kiểm tra quyền. Điều này giúp bạn hiểu tại sao lệnh có thể thất bại và quyết định xem việc sử dụng sudo có hợp lý và an toàn hay không. Lạm dụng sudo có thể dẫn đến các vấn đề bảo mật và quản lý sau này.
Đặt tên thư mục ngắn gọn, không chứa ký tự đặc biệt hoặc dấu cách: Một hệ thống được tổ chức tốt bắt đầu từ việc đặt tên nhất quán. Hãy sử dụng chữ cái thường, số, dấu gạch nối - hoặc dấu gạch dưới _. Ví dụ, project-alpha-media dễ đọc và xử lý trong dòng lệnh hơn nhiều so với "Project Alpha Media". Việc tuân thủ quy tắc này giúp tránh các lỗi không mong muốn khi làm việc với các script và các công cụ dòng lệnh khác.
Dùng tham số -p khi tạo nhiều thư mục con để tránh lỗi: Hãy biến việc sử dụng mkdir -p thành một thói quen, đặc biệt là khi bạn không chắc chắn liệu thư mục cha đã tồn tại hay chưa. Tham số này giúp câu lệnh của bạn trở nên “idempotent” – nghĩa là dù bạn chạy lệnh một lần hay nhiều lần, kết quả cuối cùng vẫn như nhau và không gây ra lỗi. Đây là một đặc tính cực kỳ quan trọng trong tự động hóa và quản lý cấu hình.
Tránh tạo thư mục trùng lặp, quản lý cấu trúc thư mục rõ ràng: Trước khi tạo một thư mục mới, hãy tự hỏi: “Liệu đã có một nơi hợp lý để chứa những file này chưa?”. Việc tạo ra các thư mục trùng lặp về chức năng (ví dụ: images, img, pictures trong cùng một dự án) sẽ gây ra sự hỗn loạn. Hãy lên kế hoạch cho cấu trúc thư mục của bạn một cách có chủ đích, giúp bạn và những người khác dễ dàng tìm thấy mọi thứ khi cần.

Kết luận
Qua bài viết chi tiết này, chúng ta đã cùng nhau khám phá lệnh mkdir từ những khía cạnh cơ bản nhất đến các ứng dụng nâng cao trong môi trường Linux. Rõ ràng, mkdir không chỉ đơn thuần là một lệnh để tạo thư mục. Nó là một công cụ linh hoạt và mạnh mẽ, đóng vai trò nền tảng trong việc xây dựng và duy trì một hệ thống file có tổ chức, khoa học và dễ quản lý. Từ việc tạo một thư mục đơn lẻ, tạo hàng loạt thư mục cho một dự án mới, cho đến việc dựng nên những cấu trúc lồng nhau phức tạp với quyền truy cập được định sẵn, mkdir đều có thể xử lý một cách nhanh chóng và hiệu quả.
Bùi Mạnh Đức hy vọng rằng với những hướng dẫn về cú pháp, các tham số quan trọng như -p, -m, -v, cùng với việc phân tích các lỗi thường gặp và đưa ra các phương pháp thực hành tốt nhất, bạn đã có đủ tự tin để làm chủ hoàn toàn công cụ này. Quản lý thư mục hiệu quả là bước đầu tiên để trở thành một người dùng Linux thành thạo. Hãy nhớ rằng, kiến thức chỉ thực sự trở thành kỹ năng khi bạn thực hành nó.
Đừng ngần ngại mở terminal của bạn lên và thử ngay các ví dụ đã được đề cập trong bài. Hãy thử tạo cấu trúc thư mục cho dự án tiếp theo của bạn, thử kết hợp các tham số khác nhau và quan sát kết quả. Bước tiếp theo trên hành trình của bạn là tìm hiểu sâu hơn về các lệnh quản lý file và thư mục khác như cd (thay đổi thư mục), ls (liệt kê), mv (di chuyển/đổi tên), cp (sao chép), và rm (xóa). Việc kết hợp nhuần nhuyễn các công cụ này sẽ giúp bạn nâng cao đáng kể kỹ năng quản trị hệ thống của mình.