diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..a0ccf77
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Environment-dependent path to Maven home directory
+/mavenHomeManager.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..25c2223
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml
new file mode 100644
index 0000000..a011c41
--- /dev/null
+++ b/.idea/material_theme_project_new.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..fe7c608
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Abstraction issuesJava
+
+
+ AccessibilityHTML
+
+
+ AnnotationsGroovy
+
+
+ Assignment issuesGroovy
+
+
+ Assignment issuesJava
+
+
+ Best practisesGradle
+
+
+ Bitwise operation issuesJava
+
+
+ Class metricsJava
+
+
+ Class structureJava
+
+
+ ClassNaming conventionsJava
+
+
+ Cloning issuesJava
+
+
+ Code maturityJava
+
+
+ Code metrics
+
+
+ Code migrationKotlin
+
+
+ Code style issuesJava
+
+
+ Compiler issuesJava
+
+
+ Concurrency annotation issuesJava
+
+
+ Control flow issuesGroovy
+
+
+ Control flow issuesJava
+
+
+ Data flowJava
+
+
+ Declaration redundancyGroovy
+
+
+ Declaration redundancyJava
+
+
+ Dependency issuesJava
+
+
+ EditorConfig
+
+
+ EmbeddedPerformanceJava
+
+
+ EncapsulationJava
+
+
+ Error handlingJava
+
+
+ General
+
+
+ Gradle
+
+
+ Gradle Declarative
+
+
+ Groovy
+
+
+ HTML
+
+
+ ImportsJava
+
+
+ Inheritance issuesJava
+
+
+ InitializationJava
+
+
+ Internationalization
+
+
+ InternationalizationJava
+
+
+ JSON and JSON5
+
+
+ JUnit
+
+
+ JVM languages
+
+
+ Java
+
+
+ Java 10Java language level migration aidsJava
+
+
+ Java 11Java language level migration aidsJava
+
+
+ Java 14Java language level migration aidsJava
+
+
+ Java 15Java language level migration aidsJava
+
+
+ Java 16Java language level migration aidsJava
+
+
+ Java 21Java language level migration aidsJava
+
+
+ Java 23Java language level migration aidsJava
+
+
+ Java 5Java language level migration aidsJava
+
+
+ Java 7Java language level migration aidsJava
+
+
+ Java 8Java language level migration aidsJava
+
+
+ Java 9Java language level migration aidsJava
+
+
+ Java interop issuesKotlin
+
+
+ Java language level issuesJava
+
+
+ Java language level migration aidsJava
+
+
+ JavaBeans issuesJava
+
+
+ JavadocJava
+
+
+ Kotlin
+
+
+ Language injection
+
+
+ LoggingJVM languages
+
+
+ LoggingJava
+
+
+ Markdown
+
+
+ Maven
+
+
+ MemoryJava
+
+
+ Method metricsJava
+
+
+ MethodNaming conventionsJava
+
+
+ Modularization issuesJava
+
+
+ Naming conventionsGroovy
+
+
+ Naming conventionsJava
+
+
+ Naming conventionsKotlin
+
+
+ Nullability problemsProbable bugsJava
+
+
+ Numeric issuesJava
+
+
+ Other problemsKotlin
+
+
+ Packaging issuesJava
+
+
+ PerformanceJava
+
+
+ PortabilityJava
+
+
+ Potentially confusing code constructsGroovy
+
+
+ Probable bugsGradle
+
+
+ Probable bugsGroovy
+
+
+ Probable bugsJava
+
+
+ Probable bugsKotlin
+
+
+ Proofreading
+
+
+ Properties files
+
+
+ RELAX NG
+
+
+ Redundant constructsKotlin
+
+
+ Reflective accessJava
+
+
+ RegExp
+
+
+ Security
+
+
+ SecurityJava
+
+
+ Serialization issuesJava
+
+
+ Style issuesKotlin
+
+
+ StyleGroovy
+
+
+ Test frameworksJVM languages
+
+
+ TestNGJava
+
+
+ Threading issuesGroovy
+
+
+ Threading issuesJava
+
+
+ User defined
+
+
+ Validity issuesGroovy
+
+
+ Verbose or redundant code constructsJava
+
+
+ VisibilityJava
+
+
+ XML
+
+
+ toString() issuesJava
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/mycmd/Command.java b/src/main/java/com/mycmd/Command.java
index 7bbc6cf..9cd8a42 100644
--- a/src/main/java/com/mycmd/Command.java
+++ b/src/main/java/com/mycmd/Command.java
@@ -23,4 +23,8 @@ public interface Command {
* current date/time to standard output. See their implementations for formatting details.
*/
void execute(String[] args, ShellContext context);
+
+ String description();
+
+ String usage();
}
diff --git a/src/main/java/com/mycmd/ShellContext.java b/src/main/java/com/mycmd/ShellContext.java
index ada37ee..f16ccbd 100644
--- a/src/main/java/com/mycmd/ShellContext.java
+++ b/src/main/java/com/mycmd/ShellContext.java
@@ -3,6 +3,8 @@
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import java.nio.file.Path;
+import java.nio.file.Paths;
public class ShellContext {
private File currentDir;
@@ -34,4 +36,13 @@ public void addToHistory(String command) {
}
}
}
+ public Path resolvePath(String path) {
+ Path inputPath = Paths.get(path);
+
+ if (inputPath.isAbsolute()) {
+ return inputPath;
+ }
+
+ return Paths.get(this.getCurrentDir().getAbsolutePath()).resolve(inputPath);
+ }
}
diff --git a/src/main/java/com/mycmd/commands/CdCommand.java b/src/main/java/com/mycmd/commands/CdCommand.java
index 428e6a8..7db2772 100644
--- a/src/main/java/com/mycmd/commands/CdCommand.java
+++ b/src/main/java/com/mycmd/commands/CdCommand.java
@@ -53,4 +53,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println("The system cannot find the path specified.");
}
}
+ @Override
+ public String description() {
+ return "Changes the current working directory.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: cd ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/ClsCommand.java b/src/main/java/com/mycmd/commands/ClsCommand.java
index 360cffc..3b6e39a 100644
--- a/src/main/java/com/mycmd/commands/ClsCommand.java
+++ b/src/main/java/com/mycmd/commands/ClsCommand.java
@@ -21,4 +21,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println();
}
}
+ @Override
+ public String description() {
+ return "Clears the terminal screen.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: cls";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/ColorCommand.java b/src/main/java/com/mycmd/commands/ColorCommand.java
index f8f4ca6..27a2df5 100644
--- a/src/main/java/com/mycmd/commands/ColorCommand.java
+++ b/src/main/java/com/mycmd/commands/ColorCommand.java
@@ -67,4 +67,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println("\033[0m");
}
}
+ @Override
+ public String description() {
+ return "Sets the console foreground and background colors.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: color ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/CopyCommand.java b/src/main/java/com/mycmd/commands/CopyCommand.java
index 2de7f80..cda4086 100644
--- a/src/main/java/com/mycmd/commands/CopyCommand.java
+++ b/src/main/java/com/mycmd/commands/CopyCommand.java
@@ -43,4 +43,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println("Error copying file: " + e.getMessage());
}
}
+ @Override
+ public String description() {
+ return "Copia um ou mais ficheiros para outro local.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: copy ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/DateCommand.java b/src/main/java/com/mycmd/commands/DateCommand.java
index f8bf53a..817ad50 100644
--- a/src/main/java/com/mycmd/commands/DateCommand.java
+++ b/src/main/java/com/mycmd/commands/DateCommand.java
@@ -22,4 +22,13 @@ public class DateCommand implements Command {
public void execute(String[] args, ShellContext context) {
System.out.println("The current date is: " + java.time.LocalDate.now());
}
+ @Override
+ public String description() {
+ return "Displays the current system date.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: date";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/DelCommand.java b/src/main/java/com/mycmd/commands/DelCommand.java
index 7932108..c4cc8a5 100644
--- a/src/main/java/com/mycmd/commands/DelCommand.java
+++ b/src/main/java/com/mycmd/commands/DelCommand.java
@@ -35,4 +35,13 @@ public void execute(String[] args, ShellContext context) {
}
}
}
+ @Override
+ public String description() {
+ return "Deletes one or more files.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: del ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/DirCommand.java b/src/main/java/com/mycmd/commands/DirCommand.java
index c9fe2e4..000f387 100644
--- a/src/main/java/com/mycmd/commands/DirCommand.java
+++ b/src/main/java/com/mycmd/commands/DirCommand.java
@@ -31,4 +31,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println((f.isDirectory() ? " " : " ") + f.getName());
}
}
+ @Override
+ public String description() {
+ return "Lists files and subdirectories in the current directory.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: dir [path]";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/EchoCommand.java b/src/main/java/com/mycmd/commands/EchoCommand.java
index 784d97f..332a074 100644
--- a/src/main/java/com/mycmd/commands/EchoCommand.java
+++ b/src/main/java/com/mycmd/commands/EchoCommand.java
@@ -25,4 +25,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println(String.join(" ", args));
}
}
+ @Override
+ public String description() {
+ return "Displays a message on the screen.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: echo ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/ExitCommand.java b/src/main/java/com/mycmd/commands/ExitCommand.java
index 863d864..fb8177f 100644
--- a/src/main/java/com/mycmd/commands/ExitCommand.java
+++ b/src/main/java/com/mycmd/commands/ExitCommand.java
@@ -21,4 +21,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println("Exiting MyCMD...");
System.exit(0);
}
+ @Override
+ public String description() {
+ return "Exits the MyCMD shell.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: exit";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/HistoryCommand.java b/src/main/java/com/mycmd/commands/HistoryCommand.java
index 39e2503..71bd1f6 100644
--- a/src/main/java/com/mycmd/commands/HistoryCommand.java
+++ b/src/main/java/com/mycmd/commands/HistoryCommand.java
@@ -20,4 +20,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println((i + 1) + ". " + history.get(i));
}
}
+ @Override
+ public String description() {
+ return "Displays the command execution history.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: history";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/HostnameCommand.java b/src/main/java/com/mycmd/commands/HostnameCommand.java
index 934ac96..408f71a 100644
--- a/src/main/java/com/mycmd/commands/HostnameCommand.java
+++ b/src/main/java/com/mycmd/commands/HostnameCommand.java
@@ -31,4 +31,13 @@ public void execute(String[] args, ShellContext context) {
}
System.out.println(hostname);
}
+ @Override
+ public String description() {
+ return "Displays the system's network hostname.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: hostname";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/LsCommand.java b/src/main/java/com/mycmd/commands/LsCommand.java
index 81b4dc3..9111f24 100644
--- a/src/main/java/com/mycmd/commands/LsCommand.java
+++ b/src/main/java/com/mycmd/commands/LsCommand.java
@@ -1,4 +1,9 @@
-import java.nio.file.*;
+package com.mycmd.commands;
+
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.io.IOException;
/**
@@ -15,7 +20,7 @@
* DirectoryStream for efficient directory traversal and automatically closes
* resources using try-with-resources.
*/
-public class ListFilesNIO {
+class ListFilesNIO {
public static void main(String[] args) throws IOException {
Path dir = Paths.get("."); // Current directory
diff --git a/src/main/java/com/mycmd/commands/MkdirCommand.java b/src/main/java/com/mycmd/commands/MkdirCommand.java
index 736be2c..b29a2b5 100644
--- a/src/main/java/com/mycmd/commands/MkdirCommand.java
+++ b/src/main/java/com/mycmd/commands/MkdirCommand.java
@@ -32,4 +32,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println("Failed to create directory.");
}
}
+ @Override
+ public String description() {
+ return "Creates one or more new directories.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: mkdir ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/MoveCommand.java b/src/main/java/com/mycmd/commands/MoveCommand.java
index 31ac589..a772624 100644
--- a/src/main/java/com/mycmd/commands/MoveCommand.java
+++ b/src/main/java/com/mycmd/commands/MoveCommand.java
@@ -2,10 +2,11 @@
import com.mycmd.Command;
import com.mycmd.ShellContext;
-import java.io.File;
+
import java.io.IOException;
import java.nio.file.*;
+
/**
* Moves or renames a file or directory from source to destination.
*
@@ -21,14 +22,16 @@
*/
public class MoveCommand implements Command {
@Override
- public void execute(String[] args, ShellContext context) throws IOException {
+ // 1. "throws IOException" foi REMOVIDO daqui
+ public void execute(String[] args, ShellContext context) {
if (args.length < 2) {
System.out.println("Usage: move ");
return;
}
- Path source = context.resolvePath(args[0]).toPath();
- Path destination = context.resolvePath(args[1]).toPath();
+ // 2. As chamadas ".toPath()" foram REMOVIDAS daqui
+ Path source = context.resolvePath(args[0]);
+ Path destination = context.resolvePath(args[1]);
if (!Files.exists(source)) {
System.out.println("The system cannot find the file specified.");
@@ -39,7 +42,17 @@ public void execute(String[] args, ShellContext context) throws IOException {
Files.move(source, destination, StandardCopyOption.REPLACE_EXISTING);
System.out.println("Moved: " + source.getFileName() + " -> " + destination);
} catch (IOException e) {
+ // O erro já é tratado aqui, por isso não precisamos do "throws"
System.out.println("Error moving file: " + e.getMessage());
}
}
-}
+ @Override
+ public String description() {
+ return "Moves or renames a file or directory.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: move ";
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/mycmd/commands/RmdirCommand.java b/src/main/java/com/mycmd/commands/RmdirCommand.java
index 6580c2a..2b14d72 100644
--- a/src/main/java/com/mycmd/commands/RmdirCommand.java
+++ b/src/main/java/com/mycmd/commands/RmdirCommand.java
@@ -37,4 +37,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println("Failed to delete directory.");
}
}
+ @Override
+ public String description() {
+ return "Removes (deletes) an empty directory.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: rmdir ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/TimeCommand.java b/src/main/java/com/mycmd/commands/TimeCommand.java
index 5105b4b..6aee58e 100644
--- a/src/main/java/com/mycmd/commands/TimeCommand.java
+++ b/src/main/java/com/mycmd/commands/TimeCommand.java
@@ -32,4 +32,13 @@ public void execute(String[] args, ShellContext context) {
String formattedTime = now.format(formatter);
System.out.println("The current time is: " + formattedTime);
}
+ @Override
+ public String description() {
+ return "Displays the current system time.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: time";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/TitleCommand.java b/src/main/java/com/mycmd/commands/TitleCommand.java
index 7b95e7e..463e002 100644
--- a/src/main/java/com/mycmd/commands/TitleCommand.java
+++ b/src/main/java/com/mycmd/commands/TitleCommand.java
@@ -26,5 +26,15 @@ public void execute(String[] args, ShellContext context) {
System.out.println("Usage: title ");
}
}
+ @Override
+ public String description() {
+ return "Sets the title of the console window.";
+ }
+
+ @Override
+ public String usage() {
+
+ return "Usage: title ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/TouchCommand.java b/src/main/java/com/mycmd/commands/TouchCommand.java
index 777a45f..658cf84 100644
--- a/src/main/java/com/mycmd/commands/TouchCommand.java
+++ b/src/main/java/com/mycmd/commands/TouchCommand.java
@@ -21,19 +21,33 @@
*/
public class TouchCommand implements Command {
@Override
- public void execute(String[] args, ShellContext context) throws IOException {
+ public void execute(String[] args, ShellContext context) {
if (args.length < 1) { // ✅ Check for at least 1 argument
System.out.println("Usage: touch ");
return;
}
-
- File file = new File(context.getCurrentDir(), args[0]); // ✅ Use args[0]
- if (file.createNewFile()) {
- System.out.println("File created: " + args[0]); // ✅ Use args[0]
- } else {
- // Update timestamp
- file.setLastModified(System.currentTimeMillis());
- System.out.println("File timestamp updated: " + args[0]); // ✅ Use args[0]
+ try {
+ File file = new File(context.getCurrentDir(), args[0]); // ✅ Use args[0]
+ if (file.createNewFile()) {
+ System.out.println("File created: " + args[0]); // ✅ Use args[0]
+ } else {
+ // Update timestamp
+ file.setLastModified(System.currentTimeMillis());
+ System.out.println("File timestamp updated: " + args[0]); // ✅ Use args[0]
+ }
+ } catch (IOException e) {
+ System.out.println("Error: " + e.getMessage());
}
}
+
+ @Override
+ public String description() {
+ return "Creates a new empty file or updates an existing file's timestamp.";
+ }
+
+
+ @Override
+ public String usage() {
+ return "Usage: touch ";
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/mycmd/commands/TreeCommand.java b/src/main/java/com/mycmd/commands/TreeCommand.java
index 7d335a1..cb23451 100644
--- a/src/main/java/com/mycmd/commands/TreeCommand.java
+++ b/src/main/java/com/mycmd/commands/TreeCommand.java
@@ -51,4 +51,13 @@ private void printDirectory(File[] files, String prefix, boolean isLast) {
}
}
}
+ @Override
+ public String description() {
+ return "Graphically displays the folder structure of a directory.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: tree [path]";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/TypeCommand.java b/src/main/java/com/mycmd/commands/TypeCommand.java
index 326b35e..deb0616 100644
--- a/src/main/java/com/mycmd/commands/TypeCommand.java
+++ b/src/main/java/com/mycmd/commands/TypeCommand.java
@@ -40,4 +40,13 @@ public void execute(String[] args, ShellContext context) {
System.out.println("Error reading file: " + e.getMessage());
}
}
+ @Override
+ public String description() {
+
+ return "Displays the contents of a text file.";
+ }
+ @Override
+ public String usage() {
+ return "Usage: type ";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/VersionCommand.java b/src/main/java/com/mycmd/commands/VersionCommand.java
index 9346846..266ea17 100644
--- a/src/main/java/com/mycmd/commands/VersionCommand.java
+++ b/src/main/java/com/mycmd/commands/VersionCommand.java
@@ -20,4 +20,15 @@ public class VersionCommand implements Command {
public void execute(String[] args, ShellContext context) {
System.out.println("MyCMD Java Shell v1.0");
}
+ @Override
+ public String description() {
+
+ return "Copy one or more files to another location.";
+ }
+
+ @Override
+ public String usage() {
+
+ return "ver";
+ }
}
diff --git a/src/main/java/com/mycmd/commands/WhoamiCommand.java b/src/main/java/com/mycmd/commands/WhoamiCommand.java
index 5f39e1d..490bfd9 100644
--- a/src/main/java/com/mycmd/commands/WhoamiCommand.java
+++ b/src/main/java/com/mycmd/commands/WhoamiCommand.java
@@ -20,4 +20,13 @@ public class WhoamiCommand implements Command {
public void execute(String[] args, ShellContext context) {
System.out.println(System.getProperty("user.name"));
}
+ @Override
+ public String description() {
+ return "Displays the name of the current user.";
+ }
+
+ @Override
+ public String usage() {
+ return "Usage: whoami";
+ }
}
diff --git a/target/classes/PingCommand.class b/target/classes/PingCommand.class
new file mode 100644
index 0000000..918de1c
Binary files /dev/null and b/target/classes/PingCommand.class differ
diff --git a/target/classes/com/mycmd/App.class b/target/classes/com/mycmd/App.class
new file mode 100644
index 0000000..986d9e5
Binary files /dev/null and b/target/classes/com/mycmd/App.class differ
diff --git a/target/classes/com/mycmd/Command.class b/target/classes/com/mycmd/Command.class
new file mode 100644
index 0000000..5408f3f
Binary files /dev/null and b/target/classes/com/mycmd/Command.class differ
diff --git a/target/classes/com/mycmd/ShellContext.class b/target/classes/com/mycmd/ShellContext.class
new file mode 100644
index 0000000..193c534
Binary files /dev/null and b/target/classes/com/mycmd/ShellContext.class differ
diff --git a/target/classes/com/mycmd/StringUtils.class b/target/classes/com/mycmd/StringUtils.class
new file mode 100644
index 0000000..7d53d9d
Binary files /dev/null and b/target/classes/com/mycmd/StringUtils.class differ
diff --git a/target/classes/com/mycmd/commands/CdCommand.class b/target/classes/com/mycmd/commands/CdCommand.class
new file mode 100644
index 0000000..935f840
Binary files /dev/null and b/target/classes/com/mycmd/commands/CdCommand.class differ
diff --git a/target/classes/com/mycmd/commands/ClsCommand.class b/target/classes/com/mycmd/commands/ClsCommand.class
new file mode 100644
index 0000000..9b6af54
Binary files /dev/null and b/target/classes/com/mycmd/commands/ClsCommand.class differ
diff --git a/target/classes/com/mycmd/commands/ColorCommand.class b/target/classes/com/mycmd/commands/ColorCommand.class
new file mode 100644
index 0000000..8ee6a8c
Binary files /dev/null and b/target/classes/com/mycmd/commands/ColorCommand.class differ
diff --git a/target/classes/com/mycmd/commands/CopyCommand.class b/target/classes/com/mycmd/commands/CopyCommand.class
new file mode 100644
index 0000000..03cb468
Binary files /dev/null and b/target/classes/com/mycmd/commands/CopyCommand.class differ
diff --git a/target/classes/com/mycmd/commands/DateCommand.class b/target/classes/com/mycmd/commands/DateCommand.class
new file mode 100644
index 0000000..d4a9639
Binary files /dev/null and b/target/classes/com/mycmd/commands/DateCommand.class differ
diff --git a/target/classes/com/mycmd/commands/DelCommand.class b/target/classes/com/mycmd/commands/DelCommand.class
new file mode 100644
index 0000000..94b73d9
Binary files /dev/null and b/target/classes/com/mycmd/commands/DelCommand.class differ
diff --git a/target/classes/com/mycmd/commands/DirCommand.class b/target/classes/com/mycmd/commands/DirCommand.class
new file mode 100644
index 0000000..98f3807
Binary files /dev/null and b/target/classes/com/mycmd/commands/DirCommand.class differ
diff --git a/target/classes/com/mycmd/commands/EchoCommand.class b/target/classes/com/mycmd/commands/EchoCommand.class
new file mode 100644
index 0000000..316c87f
Binary files /dev/null and b/target/classes/com/mycmd/commands/EchoCommand.class differ
diff --git a/target/classes/com/mycmd/commands/ExitCommand.class b/target/classes/com/mycmd/commands/ExitCommand.class
new file mode 100644
index 0000000..0b36c45
Binary files /dev/null and b/target/classes/com/mycmd/commands/ExitCommand.class differ
diff --git a/target/classes/com/mycmd/commands/HelpCommand.class b/target/classes/com/mycmd/commands/HelpCommand.class
new file mode 100644
index 0000000..7ab88af
Binary files /dev/null and b/target/classes/com/mycmd/commands/HelpCommand.class differ
diff --git a/target/classes/com/mycmd/commands/HistoryCommand.class b/target/classes/com/mycmd/commands/HistoryCommand.class
new file mode 100644
index 0000000..dd490a3
Binary files /dev/null and b/target/classes/com/mycmd/commands/HistoryCommand.class differ
diff --git a/target/classes/com/mycmd/commands/HostnameCommand.class b/target/classes/com/mycmd/commands/HostnameCommand.class
new file mode 100644
index 0000000..2f95dfb
Binary files /dev/null and b/target/classes/com/mycmd/commands/HostnameCommand.class differ
diff --git a/target/classes/com/mycmd/commands/ListFilesNIO.class b/target/classes/com/mycmd/commands/ListFilesNIO.class
new file mode 100644
index 0000000..4124c9a
Binary files /dev/null and b/target/classes/com/mycmd/commands/ListFilesNIO.class differ
diff --git a/target/classes/com/mycmd/commands/MkdirCommand.class b/target/classes/com/mycmd/commands/MkdirCommand.class
new file mode 100644
index 0000000..3227c71
Binary files /dev/null and b/target/classes/com/mycmd/commands/MkdirCommand.class differ
diff --git a/target/classes/com/mycmd/commands/MoveCommand.class b/target/classes/com/mycmd/commands/MoveCommand.class
new file mode 100644
index 0000000..57554fb
Binary files /dev/null and b/target/classes/com/mycmd/commands/MoveCommand.class differ
diff --git a/target/classes/com/mycmd/commands/RmdirCommand.class b/target/classes/com/mycmd/commands/RmdirCommand.class
new file mode 100644
index 0000000..e7d0854
Binary files /dev/null and b/target/classes/com/mycmd/commands/RmdirCommand.class differ
diff --git a/target/classes/com/mycmd/commands/TimeCommand.class b/target/classes/com/mycmd/commands/TimeCommand.class
new file mode 100644
index 0000000..2255034
Binary files /dev/null and b/target/classes/com/mycmd/commands/TimeCommand.class differ
diff --git a/target/classes/com/mycmd/commands/TitleCommand.class b/target/classes/com/mycmd/commands/TitleCommand.class
new file mode 100644
index 0000000..3fc006b
Binary files /dev/null and b/target/classes/com/mycmd/commands/TitleCommand.class differ
diff --git a/target/classes/com/mycmd/commands/TouchCommand.class b/target/classes/com/mycmd/commands/TouchCommand.class
new file mode 100644
index 0000000..44dfbcc
Binary files /dev/null and b/target/classes/com/mycmd/commands/TouchCommand.class differ
diff --git a/target/classes/com/mycmd/commands/TreeCommand.class b/target/classes/com/mycmd/commands/TreeCommand.class
new file mode 100644
index 0000000..b01f19c
Binary files /dev/null and b/target/classes/com/mycmd/commands/TreeCommand.class differ
diff --git a/target/classes/com/mycmd/commands/TypeCommand.class b/target/classes/com/mycmd/commands/TypeCommand.class
new file mode 100644
index 0000000..1c53abe
Binary files /dev/null and b/target/classes/com/mycmd/commands/TypeCommand.class differ
diff --git a/target/classes/com/mycmd/commands/VersionCommand.class b/target/classes/com/mycmd/commands/VersionCommand.class
new file mode 100644
index 0000000..3caf1e3
Binary files /dev/null and b/target/classes/com/mycmd/commands/VersionCommand.class differ
diff --git a/target/classes/com/mycmd/commands/WhoamiCommand.class b/target/classes/com/mycmd/commands/WhoamiCommand.class
new file mode 100644
index 0000000..fabdb2a
Binary files /dev/null and b/target/classes/com/mycmd/commands/WhoamiCommand.class differ