From 147e2d688150f38e138864ae3eb04a35de7f3e30 Mon Sep 17 00:00:00 2001 From: Leonmmcoset Date: Wed, 4 Feb 2026 22:09:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E4=BB=A3=E7=A0=8110?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shell/Commands/FileSystem/RenameCommand.cs | 6 +-- shell/Commands/FileSystem/TreeCommand.cs | 8 ++-- shell/Commands/System/ClearCommand.cs | 12 +++++ shell/Commands/System/DateCommand.cs | 12 +++++ shell/Commands/System/EchoCommand.cs | 13 ++++++ shell/Commands/System/TimeCommand.cs | 12 +++++ shell/Commands/System/UptimeCommand.cs | 45 +++++++++++++++++++ shell/Commands/System/WhoamiCommand.cs | 17 ++++++++ shell/Shell.cs | 51 +++------------------- 9 files changed, 124 insertions(+), 52 deletions(-) create mode 100644 shell/Commands/System/ClearCommand.cs create mode 100644 shell/Commands/System/DateCommand.cs create mode 100644 shell/Commands/System/EchoCommand.cs create mode 100644 shell/Commands/System/TimeCommand.cs create mode 100644 shell/Commands/System/UptimeCommand.cs create mode 100644 shell/Commands/System/WhoamiCommand.cs diff --git a/shell/Commands/FileSystem/RenameCommand.cs b/shell/Commands/FileSystem/RenameCommand.cs index 5c1c999..ad37fff 100644 --- a/shell/Commands/FileSystem/RenameCommand.cs +++ b/shell/Commands/FileSystem/RenameCommand.cs @@ -29,20 +29,20 @@ namespace CMLeonOS.Commands.FileSystem string sourcePath = fileSystem.GetFullPath(sourceFile); string destPath = fileSystem.GetFullPath(newName); - if (!System.IO.File.Exists(sourcePath)) + if (!global::System.IO.File.Exists(sourcePath)) { showError($"Source file '{sourceFile}' does not exist"); return; } - if (System.IO.File.Exists(destPath)) + if (global::System.IO.File.Exists(destPath)) { showError($"Destination '{newName}' already exists"); return; } string content = fileSystem.ReadFile(sourcePath); - System.IO.File.WriteAllText(destPath, content); + global::System.IO.File.WriteAllText(destPath, content); fileSystem.DeleteFile(sourcePath); showSuccess($"File renamed successfully from '{sourceFile}' to '{newName}'"); diff --git a/shell/Commands/FileSystem/TreeCommand.cs b/shell/Commands/FileSystem/TreeCommand.cs index 95fce8f..e3b1eee 100644 --- a/shell/Commands/FileSystem/TreeCommand.cs +++ b/shell/Commands/FileSystem/TreeCommand.cs @@ -9,7 +9,7 @@ namespace CMLeonOS.Commands.FileSystem string startPath = string.IsNullOrEmpty(args) ? "." : args; string fullPath = fileSystem.GetFullPath(startPath); - if (!System.IO.Directory.Exists(fullPath)) + if (!global::System.IO.Directory.Exists(fullPath)) { showError($"Directory not found: {startPath}"); return; @@ -43,7 +43,7 @@ namespace CMLeonOS.Commands.FileSystem string connector = isLastItem ? "+-- " : "|-- "; string newPrefix = prefix + (isLastItem ? " " : "| "); - string dirName = System.IO.Path.GetFileName(dir); + string dirName = global::System.IO.Path.GetFileName(dir); Console.WriteLine($"{prefix}{connector}{dirName}/"); PrintDirectoryTree(fileSystem, dir, newPrefix, isLastItem, showError); @@ -55,11 +55,11 @@ namespace CMLeonOS.Commands.FileSystem bool isLastItem = current == totalItems; string connector = isLastItem ? "+-- " : "|-- "; - string fileName = System.IO.Path.GetFileName(file); + string fileName = global::System.IO.Path.GetFileName(file); Console.WriteLine($"{prefix}{connector}{fileName}"); } } - catch (System.IO.DirectoryNotFoundException) + catch (global::System.IO.DirectoryNotFoundException) { showError($"Directory not found: {path}"); } diff --git a/shell/Commands/System/ClearCommand.cs b/shell/Commands/System/ClearCommand.cs new file mode 100644 index 0000000..e970d1b --- /dev/null +++ b/shell/Commands/System/ClearCommand.cs @@ -0,0 +1,12 @@ +using System; + +namespace CMLeonOS.Commands.System +{ + public static class ClearCommand + { + public static void ProcessClear() + { + Console.Clear(); + } + } +} diff --git a/shell/Commands/System/DateCommand.cs b/shell/Commands/System/DateCommand.cs new file mode 100644 index 0000000..13a55d3 --- /dev/null +++ b/shell/Commands/System/DateCommand.cs @@ -0,0 +1,12 @@ +using System; + +namespace CMLeonOS.Commands.System +{ + public static class DateCommand + { + public static void ProcessDate() + { + Console.WriteLine(DateTime.Now.ToShortDateString()); + } + } +} diff --git a/shell/Commands/System/EchoCommand.cs b/shell/Commands/System/EchoCommand.cs new file mode 100644 index 0000000..7cc2b19 --- /dev/null +++ b/shell/Commands/System/EchoCommand.cs @@ -0,0 +1,13 @@ +using System; + +namespace CMLeonOS.Commands.System +{ + public static class EchoCommand + { + public static void ProcessEcho(string args) + { + var processedArgs = args.Replace("\\n", "\n"); + Console.WriteLine(processedArgs); + } + } +} diff --git a/shell/Commands/System/TimeCommand.cs b/shell/Commands/System/TimeCommand.cs new file mode 100644 index 0000000..fd4e097 --- /dev/null +++ b/shell/Commands/System/TimeCommand.cs @@ -0,0 +1,12 @@ +using System; + +namespace CMLeonOS.Commands.System +{ + public static class TimeCommand + { + public static void ProcessTime() + { + Console.WriteLine(DateTime.Now.ToString()); + } + } +} diff --git a/shell/Commands/System/UptimeCommand.cs b/shell/Commands/System/UptimeCommand.cs new file mode 100644 index 0000000..471da02 --- /dev/null +++ b/shell/Commands/System/UptimeCommand.cs @@ -0,0 +1,45 @@ +using System; + +namespace CMLeonOS.Commands.System +{ + public static class UptimeCommand + { + public static void ShowUptime(Action showError, Action showWarning) + { + try + { + Console.WriteLine("===================================="); + Console.WriteLine(" System Uptime"); + Console.WriteLine("===================================="); + Console.WriteLine(); + + if (Kernel.SystemStartTime != DateTime.MinValue) + { + TimeSpan uptime = DateTime.Now - Kernel.SystemStartTime; + + Console.WriteLine("System started: " + Kernel.SystemStartTime.ToString("yyyy-MM-dd HH:mm:ss")); + Console.WriteLine("Current time: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + Console.WriteLine(); + + int days = uptime.Days; + int hours = uptime.Hours; + int minutes = uptime.Minutes; + int seconds = uptime.Seconds; + + Console.WriteLine($"System uptime: {days} days, {hours} hours, {minutes} minutes, {seconds} seconds"); + Console.WriteLine($"Total uptime: {uptime.TotalHours:F2} hours"); + } + else + { + showWarning("System start time not available."); + showWarning("System may have been started before uptime tracking was implemented."); + } + Console.WriteLine(); + } + catch (Exception ex) + { + showError($"Error showing uptime: {ex.Message}"); + } + } + } +} diff --git a/shell/Commands/System/WhoamiCommand.cs b/shell/Commands/System/WhoamiCommand.cs new file mode 100644 index 0000000..4363cfd --- /dev/null +++ b/shell/Commands/System/WhoamiCommand.cs @@ -0,0 +1,17 @@ +using System; + +namespace CMLeonOS.Commands.System +{ + public static class WhoamiCommand + { + public static void ShowCurrentUsername(CMLeonOS.UserSystem userSystem) + { + Console.WriteLine("===================================="); + Console.WriteLine(" Current User"); + Console.WriteLine("===================================="); + Console.WriteLine(); + Console.WriteLine($"Username: {userSystem.CurrentUsername}"); + Console.WriteLine(); + } + } +} diff --git a/shell/Shell.cs b/shell/Shell.cs index 1c5fb5d..23caca5 100644 --- a/shell/Shell.cs +++ b/shell/Shell.cs @@ -115,13 +115,12 @@ namespace CMLeonOS public void ProcessEcho(string args) { - var processedArgs = args.Replace("\\n", "\n"); - Console.WriteLine(processedArgs); + Commands.System.EchoCommand.ProcessEcho(args); } public void ProcessClear() { - Console.Clear(); + Commands.System.ClearCommand.ProcessClear(); } public void ProcessRestart() @@ -141,12 +140,12 @@ namespace CMLeonOS public void ProcessTime() { - Console.WriteLine(DateTime.Now.ToString()); + Commands.System.TimeCommand.ProcessTime(); } public void ProcessDate() { - Console.WriteLine(DateTime.Now.ToShortDateString()); + Commands.System.DateCommand.ProcessDate(); } public void ProcessLs(string args) @@ -715,40 +714,7 @@ namespace CMLeonOS public void ShowUptime() { - try - { - Console.WriteLine("===================================="); - Console.WriteLine(" System Uptime"); - Console.WriteLine("===================================="); - Console.WriteLine(); - - if (Kernel.SystemStartTime != DateTime.MinValue) - { - TimeSpan uptime = DateTime.Now - Kernel.SystemStartTime; - - Console.WriteLine("System started: " + Kernel.SystemStartTime.ToString("yyyy-MM-dd HH:mm:ss")); - Console.WriteLine("Current time: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); - Console.WriteLine(); - - int days = uptime.Days; - int hours = uptime.Hours; - int minutes = uptime.Minutes; - int seconds = uptime.Seconds; - - Console.WriteLine($"System uptime: {days} days, {hours} hours, {minutes} minutes, {seconds} seconds"); - Console.WriteLine($"Total uptime: {uptime.TotalHours:F2} hours"); - } - else - { - ShowWarning("System start time not available."); - ShowWarning("System may have been started before uptime tracking was implemented."); - } - Console.WriteLine(); - } - catch (Exception ex) - { - ShowError($"Error showing uptime: {ex.Message}"); - } + Commands.System.UptimeCommand.ShowUptime(ShowError, ShowWarning); } public void CreateFTP() @@ -1237,12 +1203,7 @@ namespace CMLeonOS public void ShowCurrentUsername() { - Console.WriteLine("===================================="); - Console.WriteLine(" Current User"); - Console.WriteLine("===================================="); - Console.WriteLine(); - Console.WriteLine($"Username: {userSystem.CurrentUsername}"); - Console.WriteLine(); + Commands.System.WhoamiCommand.ShowCurrentUsername(userSystem); } public void ProcessBase64Command(string args)