Trong thế giới của hệ điều hành Linux, việc quản lý và sắp xếp các tệp tin, thư mục một cách khoa học là kỹ năng nền tảng mà bất kỳ người dùng nào, từ quản trị viên hệ thống đến lập trình viên, đều cần phải thành thạo. Lệnh mkdir (viết tắt của “make directory”) chính là công cụ cơ bản nhưng vô cùng mạnh mẽ, cho phép bạn tạo ra các thư mục mới trực tiếp từ dòng lệnh. Vai trò của nó không chỉ dừng lại ở việc tạo một thư mục đơn lẻ, mà còn giúp xây dựng cả một cấu trúc thư mục phức tạp một cách nhanh chóng và hiệu quả.
Bạn đã bao giờ cảm thấy mất thời gian khi phải dùng giao diện đồ họa để tạo từng thư mục một, đặc biệt là khi cần thiết lập một cây thư mục phức tạp cho dự án mới? Hay bạn đã từng gặp phải những thông báo lỗi khó hiểu chỉ vì gõ sai một cú pháp đơn giản? Đây là những vấn đề rất phổ biến. Bài viết này sẽ là kim chỉ nam giúp bạn làm chủ lệnh mkdir. Chúng tôi sẽ hướng dẫn bạn từ những cú pháp cơ bản nhất đến các tùy chọn nâng cao, cách xử lý lỗi thường gặp và những phương pháp hay nhất để quản lý thư mục như một chuyên gia.

Cú pháp và các tham số phổ biến của lệnh mkdir
Để sử dụng hiệu quả bất kỳ công cụ nào, trước hết chúng ta cần hiểu rõ về cấu trúc và các thành phần của nó. Lệnh mkdir cũng không ngoại lệ. Việc nắm vững cú pháp và các tham số (options) đi kèm sẽ giúp bạn biến một công cụ đơn giản thành một trợ thủ đắc lực trong công việc hàng ngày.
Cú pháp cơ bản của lệnh mkdir
Cú pháp của lệnh mkdir rất đơn giản và dễ nhớ, đây là nền tảng cho mọi thao tác tạo thư mục trên Linux.
Cú pháp chuẩn có dạng: mkdir [tùy chọn] tên_thư_mục
Hãy cùng phân tích từng thành phần:
- mkdir: Đây là tên của lệnh, báo cho hệ thống biết rằng bạn muốn thực hiện hành động “tạo thư mục”.
- [tùy chọn]: Đây là các tham số không bắt buộc, dùng để thay đổi hoặc bổ sung tính năng cho lệnh. Bạn có thể sử dụng một hoặc nhiều tùy chọn cùng lúc. Chúng ta sẽ tìm hiểu chi tiết về các tùy chọn phổ biến ở phần sau.
- tên_thư_mục: Đây là tên của thư mục hoặc các thư mục bạn muốn tạo. Bạn có thể chỉ định một hoặc nhiều tên thư mục, cách nhau bởi dấu cách.
Ví dụ, câu lệnh mkdir du_an_moi sẽ tạo một thư mục có tên là “du_an_moi” ngay tại vị trí bạn đang đứng trong cây thư mục hệ thống.
Các tham số thường dùng
Các tham số giúp mở rộng khả năng của lệnh mkdir, cho phép bạn thực hiện các tác vụ phức tạp hơn chỉ với một dòng lệnh. Dưới đây là những tham số quan trọng và được sử dụng thường xuyên nhất.
- -p (–parents): Đây là một trong những tham số hữu ích nhất. Nó cho phép bạn tạo một lúc nhiều thư mục lồng nhau (thư mục cha và con) theo một đường dẫn chỉ định. Nếu các thư mục cha trong đường dẫn chưa tồn tại, lệnh sẽ tự động tạo chúng mà không báo lỗi. Ví dụ:
mkdir -p du_an/hinh_anh/logosẽ tạo cả ba thư mục du_an, hinh_anh, và logo nếu chúng chưa có. - -m (–mode): Tham số này dùng để thiết lập quyền truy cập (permission) cho thư mục ngay tại thời điểm tạo ra nó. Bạn sẽ chỉ định quyền dưới dạng mã octal (ví dụ: 755, 777). Ví dụ:
mkdir -m 777 thu_muc_cong_khaisẽ tạo một thư mục mà tất cả người dùng đều có toàn quyền đọc, ghi và thực thi. Tham khảo thêm quyền truy cập trong Linux và vai trò của RAM trong hiệu suất hệ điều hành. - -v (–verbose): Khi sử dụng tham số này, terminal sẽ hiển thị một thông báo chi tiết cho mỗi thư mục được tạo thành công. Điều này rất hữu ích khi bạn tạo nhiều thư mục cùng lúc hoặc sử dụng trong các script tự động để theo dõi tiến trình. Ví dụ:
mkdir -v data config logssẽ in ra “mkdir: created directory ‘data'”, “mkdir: created directory ‘config'”,…
Nắm vững các tham số này sẽ giúp bạn tối ưu hóa quy trình làm việc và quản lý hệ thống tệp tin một cách chuyên nghiệp hơn.

Hướng dẫn tạo thư mục đơn giản và nâng cao với mkdir
Sau khi đã làm quen với cú pháp và các tham số, bây giờ là lúc chúng ta đi vào thực hành. Bắt đầu từ những thao tác cơ bản nhất, bạn sẽ dần dần khám phá sức mạnh của mkdir qua các ví dụ nâng cao hơn.
Tạo thư mục đơn giản
Đây là thao tác cơ bản và phổ biến nhất khi làm việc với mkdir. Bạn chỉ cần gõ lệnh và 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 tai_lieu trong thư mục làm việc hiện tại của bạn, chỉ cần mở terminal và gõ:mkdir tai_lieu
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 tai_lieu vừa được tạo.
Một vài lưu ý quan trọng khi đặt tên thư mục:
- Tránh dấu cách: Thay vì
mkdir tai lieu quan trong, hãy dùng gạch dưới (_) hoặc gạch nối (-) nhưmkdir tai_lieu_quan_trong. Điều này giúp việc truy cập và xử lý trên dòng lệnh dễ dàng hơn rất nhiều. - Tránh ký tự đặc biệt: Hạn chế sử dụng các ký tự như
*,?,&,$… vì chúng có ý nghĩa đặc biệt trong shell của Linux và có thể gây ra lỗi không mong muốn. - Phân biệt chữ hoa/thường: Linux phân biệt chữ hoa và chữ thường. Do đó,
TaiLieuvàtailieulà hai thư mục hoàn toàn khác nhau.

Tạo nhiều thư mục cùng lúc bằng mkdir
Khi cần thiết lập cấu trúc cho một dự án mới, bạn thường phải tạo nhiều thư mục cùng một lúc. mkdir cho phép bạn làm điều này chỉ với một câu lệnh duy nhất, giúp tiết kiệm thời gian đáng kể.
Cú pháp rất đơn giản: bạn chỉ cần 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 dấu cách.
Ví dụ, giả sử bạn đang bắt đầu một dự án website và cần các thư mục để chứa mã nguồn, hình ảnh, tài liệu và các file css. Thay vì gõ bốn lệnh riêng biệt, bạn có thể gộp chúng lại như sau:mkdir source images documents styles
Lệnh này sẽ tạo ra bốn thư mục source, images, documents, và styles trong thư mục hiện tại. Thật nhanh chóng và tiện lợi phải không nào?
Sử dụng tùy chọn -p để tạo thư mục con đệ quy
Đây chính là lúc sức mạnh thực sự của mkdir được thể hiện. Tùy chọn -p (viết tắt của --parents) là cứu cánh khi bạn cần tạo một cấu trúc thư mục lồng nhau phức tạp.
Hãy tưởng tượng bạn cần tạo một thư mục để lưu báo cáo của tháng 12 năm 2024, nằm trong một cấu trúc có sẵn: du_an/bao_cao/2024/thang_12. Nếu bạn dùng lệnh mkdir du_an/bao_cao/2024/thang_12 mà các thư mục du_an, bao_cao, hoặc 2024 chưa tồn tại, hệ thống sẽ báo lỗi “No such file or directory”.
Lúc này, tùy chọn -p sẽ giải quyết vấn đề. Nó sẽ yêu cầu mkdir tự động tạo tất cả các thư mục cha cần thiết trong đường dẫn nếu chúng chưa tồn tại.
Ví dụ:mkdir -p du_an/bao_cao/2024/thang_12
Lệnh này sẽ kiểm tra, nếu du_an chưa có, nó sẽ tạo ra. Sau đó, nó vào trong du_an và kiểm tra bao_cao, nếu chưa có cũng sẽ tạo ra, và cứ tiếp tục như vậy cho đến khi toàn bộ cây thư mục được hình thành. Tùy chọn này đặc biệt hữu ích khi viết script tự động hóa, đảm bảo rằng cấu trúc thư mục luôn sẵn sàng mà không gây ra lỗi dừng chương trình.

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 khi được áp dụng vào thực tế. Trong phần này, chúng ta sẽ khám phá các ví dụ thực hành, kết hợp các tham số của mkdir để giải quyết những nhu cầu cụ thể trong quản lý hệ thống.
Ví dụ tạo thư mục với thiết lập quyền truy cập
Trong môi trường đa người dùng của Linux, việc kiểm soát quyền truy cập vào tệp tin và thư mục là cực kỳ quan trọng để đảm bảo an ninh. Tham số -m (--mode) của mkdir cho phép bạn chỉ định quyền truy cập ngay khi thư mục được tạo ra.
Quyền truy cập trong Linux được biểu diễn bằng các con số trong hệ bát phân (octal), dựa trên ba quyền cơ bản:
- r (read – đọc): có giá trị là 4
- w (write – ghi): có giá trị là 2
- x (execute – thực thi): có giá trị là 1
Mỗi bộ ba quyền được áp dụng cho ba đối tượng: chủ sở hữu (owner), nhóm (group), và những người khác (others).
Ví dụ, bạn muốn tạo một thư mục tên là private_data và chỉ cho phép chủ sở hữu có toàn quyền (đọc, ghi, thực thi), trong khi nhóm và những người khác không có quyền nào. Quyền này tương đương với rwx------, hay 700 trong hệ octal.
Câu lệnh sẽ là:mkdir -m 700 private_data
Một ví dụ khác, tạo thư mục shared_docs với quyền 755 (rwxr-xr-x). Điều này có nghĩa là chủ sở hữu có toàn quyền, còn nhóm và những người khác chỉ có quyền đọc và thực thi (truy cập vào thư mục).mkdir -m 755 shared_docs
Sử dụng tham số -m giúp bạn thiết lập bảo mật ngay từ đầu, tránh các rủi ro về truy cập trái phép. Tham khảo thêm về RAM là gì để hiểu thêm về vai trò hiệu suất trong hệ điều hành.

Ví dụ kết hợp nhiều tham số khi tạo thư mục
Sức mạnh của dòng lệnh Linux nằm ở khả năng kết hợp các công cụ và tham số để thực hiện những tác vụ phức tạp một cách gọn gàng. Với mkdir, bạn có thể kết hợp các tham số -p, -v, và -m trong cùng một lệnh.
Giả sử bạn cần tạo một cấu trúc thư mục để lưu trữ các bản sao lưu quan trọng, đồng thời muốn thiết lập quyền riêng tư và theo dõi quá trình tạo. Cấu trúc cần tạo là backups/database/mysql, và bạn muốn chỉ chủ sở hữu mới có quyền truy cập.
Câu lệnh kết hợp sẽ như sau:mkdir -p -v -m 700 backups/database/mysql
Hãy phân tích lệnh này:
- -p: Đảm bảo rằng các thư mục cha
backupsvàdatabasesẽ được tạo nếu chúng chưa tồn tại. - -v: Hiển thị thông báo chi tiết cho mỗi thư mục được tạo. Terminal sẽ in ra:
mkdir: created directory 'backups'mkdir: created directory 'backups/database'mkdir: created directory 'backups/database/mysql' - -m 700: Thiết lập quyền truy cập
rwx------cho tất cả các thư mục vừa được tạo, đảm bảo chỉ có bạn mới có thể truy cập chúng.
Bằng cách kết hợp các tham số, bạn đã thực hiện một tác vụ phức tạp gồm ba bước (tạo cây thư mục, xác nhận, và đặt quyền) chỉ bằng một dòng lệnh duy nhất.

Lưu ý về quyền truy cập và lỗi thường gặp khi dùng mkdir
Mặc dù mkdir là một lệnh đơn giản, bạn vẫn có thể gặp phải một số lỗi phổ biến trong quá trình sử dụng. Hiểu rõ nguyên nhân và cách khắc phục sẽ giúp bạn làm việc hiệu quả hơn và tránh những tình huống khó xử.
Lỗi “Permission denied” khi tạo thư mục
Đây là lỗi phổ biến nhất khi làm việc trên Linux, không chỉ riêng với mkdir. Thông báo lỗi “Permission denied” xuất hiện khi bạn không có đủ quyền để thực hiện hành động trong một thư mục cụ thể.
Nguyên nhân: Người dùng hiện tại của bạn không có quyền ghi (write permission) vào thư mục cha nơi bạn đang cố gắng tạo thư mục mới. Ví dụ, bạn không thể tạo một thư mục trực tiếp trong thư mục gốc / hay /etc nếu không phải là người dùng root. Tìm hiểu sâu hơn về Kernel là gì và vai trò quản lý của Kernel Linux.
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 <đường_dẫn_thư_mục_cha>để xem quyền của nó. Ví dụ, để kiểm tra quyền của thư mục hiện tại, dùngls -ld .. Bạn cần thấy ký tựwtrong bộ quyền dành cho user hoặc group của bạn. - Sử dụng
sudo: Nếu bạn có quyền quản trị viên và thực sự cần tạo thư mục ở vị trí đó (ví dụ:/var/www/), hãy sử dụngsudoở đầu lệnh:sudo mkdir /var/www/new_project. - Chuyển đến thư mục có quyền: Cách an toàn nhất là di chuyển đến thư mục mà bạn có toàn quyền, chẳng hạn như thư mục nhà của bạn (
/home/username), rồi thực hiện lệnhmkdir. Bạn có thể tham khảo thêm về Hệ điều hành Ubuntu là gì để biết về môi trường làm việc thuận tiện.

Lỗi “File exists” khi thư mục đã tồn tại
Lỗi này cũng rất dễ gặp. Thông báo “File exists” sẽ xuất hiện nếu bạn cố gắng tạo một thư mục với tên đã tồn tại ở vị trí đó.
Nguyên nhân: Một tệp tin hoặc một thư mục khác có cùng tên đã tồn tại. Linux không cho phép hai đối tượng có cùng tên trong cùng một thư mục.
Cách xử lý để tránh lỗi:
- Kiểm tra trước khi tạo: Luôn là một ý hay khi dùng lệnh
lsđể kiểm tra xem tên bạn định đặt đã được sử dụng hay chưa. - Chọn tên khác: Đơn giản là chọn một cái tên mới cho thư mục của bạn.
- Sử dụng tham số
-p: Đây là một mẹo hữu ích. Khi bạn sử dụngmkdir -p ten_thu_muc, nếuten_thu_mucđã tồn tại, lệnh sẽ không báo lỗi. Nó sẽ âm thầm bỏ qua và không làm gì cả. Điều này cực kỳ hữu ích trong các kịch bản (script) tự động, nơi bạn muốn đảm bảo một thư mục tồn tại mà không muốn script bị dừng lại bởi lỗi “File exists”.
Ví dụ, trong một script, dòng lệnh mkdir -p /home/user/logs sẽ đảm bảo thư mục logs luôn tồn tại mà không gây ra lỗi nếu nó đã được tạo từ trước.
Best Practices
Để sử dụng lệnh mkdir một cách chuyên nghiệp và hiệu quả, đồng thời duy trì một hệ thống tệp tin gọn gàng, có tổ chức, bạn nên tuân thủ một số nguyên tắc và thói quen tốt sau đây.
- Luôn kiểm tra quyền trước khi tạo thư mục, dùng
sudonếu cần thiết: Trước khi tạo thư mục ở những vị trí nhạy cảm của hệ thống, hãy tự hỏi: “Mình có thực sự cần tạo thư mục ở đây không?”. Nếu có, hãy dùngsudomột cách cẩn trọng. Đối với công việc hàng ngày, hãy ưu tiên làm việc trong thư mục nhà của bạn. - Đặ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 quy ước đặt tên nhất quán giúp bạn và những người khác dễ dàng điều hướng và viết script. Sử dụng chữ thường, số, và dấu gạch dưới (
_) hoặc gạch nối (-). Ví dụ,project_alpha_backupstốt hơn nhiều so vớiProject Alpha Backups *Final*. - Dùng tham số
-pkhi tạo nhiều thư mục con để tránh lỗi: Hãy tập thói quen sử dụngmkdir -pkhi bạn cần tạo một đường dẫn thư mục. Nó không chỉ giúp tạo các thư mục cha mà còn ngăn ngừa lỗi “File exists” nếu thư mục đã tồn tại, giúp các script của bạn trở nên mạnh mẽ và đáng tin cậy hơn. - Tránh tạo thư mục trùng lặp, quản lý cấu trúc thư mục rõ ràng: Hãy lên kế hoạch cho cấu trúc thư mục của bạn trước khi bắt đầu một dự án. Một hệ thống được tổ chức tốt, ví dụ như chia theo
project/source,project/docs,project/assets, sẽ giúp bạn tiết kiệm rất nhiều thời gian tìm kiếm và quản lý sau này.
Việc áp dụng những phương pháp này không chỉ giúp bạn làm việc hiệu quả hơn với mkdir mà còn hình thành tư duy quản lý hệ thống một cách có hệ thống và chuyên nghiệp.

Kết luận
Qua bài viết này, chúng ta đã cùng nhau khám phá lệnh mkdir, một công cụ tưởng chừng đơn giản nhưng lại là nền tảng không thể thiếu trong việc quản lý hệ thống tệp tin trên Linux. Từ cú pháp cơ bản để tạo một thư mục đơn lẻ, chúng ta đã đi sâu vào các tham số mạnh mẽ như -p để tạo cây thư mục đệ quy, -m để thiết lập quyền truy cập bảo mật, và -v để theo dõi quá trình thực thi.
Việc nắm vững mkdir không chỉ giúp bạn tiết kiệm thời gian so với việc sử dụng giao diện đồ họa mà còn mang lại sự linh hoạt và khả năng tự động hóa vượt trội, đặc biệt khi viết các kịch bản shell. Chúng ta cũng đã tìm hiểu về các lỗi thường gặp như “Permission denied” hay “File exists” và cách xử lý chúng một cách hiệu quả, cùng với những phương pháp tốt nhất để duy trì một cấu trúc thư mục khoa học và an toàn.
Linux là một thế giới rộng lớn, và việc làm chủ dòng lệnh là một hành trình không ngừng học hỏi. AZWEB khuyến khích bạn hãy tự mình thực hành với các ví dụ đã được đề cập, thử kết hợp các tham số khác nhau để giải quyết những bài toán của riêng mình. Bước tiếp theo trên con đường này là tìm hiểu thêm về các lệnh quản lý tệp tin và thư mục khác như ls, cd, rm, cp, mv. Khi kết hợp chúng lại, bạn sẽ có trong tay một bộ công cụ toàn diện để quản trị hệ thống Linux như một chuyên gia thực thụ.
