Creating Directories (mkdir)
The mkdir command creates new directories. It's essential for organizing your files.
Basic Usage
mkdir directory_name
Creating Nested Directories
Use -p to create parent directories:
mkdir -p parent/child/grandchild
Without -p, this would fail if parent doesn't exist.
mkdir Options
| Option | Description |
|---|---|
-p | Create parent directories as needed |
-v | Verbose - show created directories |
-m | Set permissions mode |
Creating Multiple Directories
mkdir dir1 dir2 dir3
mkdir -p project/{src,test,docs}
The second form uses brace expansion to create multiple directories efficiently.
Exercise: Create a Directory Structure
Create a directory called myproject with subdirectories src and tests:
Setting Permissions
Create a directory with specific permissions:
mkdir -m 755 public_folder
mkdir -m 700 private_folder
Common Project Structures
Web Project
mkdir -p webapp/{public,src,tests,docs}
Python Project
mkdir -p myproject/{src,tests,data,docs}
Node.js Project
mkdir -p app/{routes,models,views,public}
Directory Naming Conventions
| Convention | Example |
|---|---|
| lowercase | documents, photos |
| kebab-case | my-project, web-app |
| snake_case | my_project, web_app |
| CamelCase | MyProject (less common) |
Troubleshooting
| Error | Cause | Solution |
|---|---|---|
File exists | Directory already exists | Choose different name or remove existing |
Permission denied | No write access | Check parent directory permissions |
No such file or directory | Parent doesn't exist | Use mkdir -p |
Key Takeaways
mkdircreates directories- Use
-pto create nested directories and parents - Create multiple directories at once with space-separated names
- Use brace expansion for complex structures:
mkdir -p dir/{a,b,c}

