An in-memory, interactive Unix-like file system simulator built in Java. This project provides a Command Line Interface (CLI) to navigate and manipulate a virtual directory tree using standard Unix commands.
- Unix-like Commands: Supports core operations like
pwd,cd,ls,mkdir,touch,rm,cat. - Advanced Link Management: Full support for creating Hard Links (
ln) and Soft/Symbolic Links (ln -s), including proper link-count tracking and dangling link handling. - Inode Architecture: Simulates real Unix file systems by decoupling directory entries (names) from the actual file data (Inodes).
- Robust Path Resolution: Accurately resolves absolute (
/home/user) and relative (../dir/./file) paths. - In-Memory State: Entirely memory-based execution, leaving your actual operating system untouched.
This project was developed with clean architecture and software engineering best practices in mind:
- Language: Java (OOP principles)
- Dependency Injection: Google Guice (for decoupling command logic from the file system state)
- Testing: JUnit 5 & Mockito (comprehensive unit tests for business logic and state delegation)
- Design Patterns: Singleton, Command, Factory, and Dependency Injection.
- Java Development Kit (JDK) 17 or higher.
- Maven or Gradle (depending on your build tool).
- Clone the repository:
git clone 'link-repo'.git