From 7d5a044fc0fc194dda1011c6bfd31d1d8212a54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D1=80=D0=B8=D0=B3=D0=BE=D1=80=D0=B8=D0=B9=20=D0=A1?= =?UTF-8?q?=D0=B0=D1=84=D1=80=D0=BE=D0=BD=D0=BE=D0=B2?= Date: Sun, 24 May 2026 18:17:15 +0000 Subject: [PATCH] Delete internal/shell/commands.go --- internal/shell/commands.go | 205 ------------------------------------- 1 file changed, 205 deletions(-) delete mode 100644 internal/shell/commands.go diff --git a/internal/shell/commands.go b/internal/shell/commands.go deleted file mode 100644 index 546a823..0000000 --- a/internal/shell/commands.go +++ /dev/null @@ -1,205 +0,0 @@ -// commands.go - встроенные команды fush shell -// Реализует базовые команды: exit, ls, cd, mkdir, rm, touch, exec, help -// Обеспечивает навигацию по файловой системе и управление файлами -// Служит основой для расширения функциональности shell - -package shell - -import ( - "fmt" - "os" - "time" - - "fush/pkg/ansi" -) - -// cmdExit обрабатывает команду exit -func (s *Shell) cmdExit(args []string) error { - s.running.Store(false) - s.logger.Info("Выполнена команда exit") - return nil -} - -// cmdHelp обрабатывает команду help - выводит список доступных команд -func (s *Shell) cmdHelp(args []string) error { - fmt.Println() - ansi.Println(ansi.Cyan, "╔══════════════════════════════════════════════════════════════╗") - ansi.Println(ansi.Cyan, "║ fush shell - Доступные команды ║") - ansi.Println(ansi.Cyan, "╚══════════════════════════════════════════════════════════════╝") - fmt.Println() - - // Внутренние команды - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - ansi.Println(ansi.BrightGreen, "ВСТРОЕННЫЕ КОМАНДЫ:") - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - - fmt.Printf(" %-15s %s\n", ansi.Colorize("exit", ansi.BrightWhite), "Выход из оболочки") - fmt.Printf(" %-15s %s\n", ansi.Colorize("help", ansi.BrightWhite), "Показать эту справку") - fmt.Printf(" %-15s %s\n", ansi.Colorize("ls [path]", ansi.BrightWhite), "Вывести список файлов в директории") - fmt.Printf(" %-15s %s\n", ansi.Colorize("cd [dir]", ansi.BrightWhite), "Сменить текущую директорию") - fmt.Printf(" %-15s %s\n", ansi.Colorize("mkdir ", ansi.BrightWhite), "Создать новую директорию") - fmt.Printf(" %-15s %s\n", ansi.Colorize("rm ", ansi.BrightWhite), "Удалить файл или директорию") - fmt.Printf(" %-15s %s\n", ansi.Colorize("touch ", ansi.BrightWhite), "Создать файл или обновить время доступа") - fmt.Printf(" %-15s %s\n", ansi.Colorize("exec [args...]", ansi.BrightWhite), "Выполнить внешнюю команду") - - fmt.Println() - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - ansi.Println(ansi.BrightGreen, "ВНЕШНИЕ КОМАНДЫ:") - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - - fmt.Printf(" %-15s %s\n", ansi.Colorize("", ansi.BrightWhite), "Запуск любого внешнего приложения") - fmt.Printf(" %-15s %s\n", ansi.Colorize("", ansi.BrightWhite), "Выполнение Lua скрипта из директории ~/.local/share/fush/lua/") - - fmt.Println() - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - ansi.Println(ansi.BrightGreen, "СПЕЦИАЛЬНЫЕ ВОЗМОЖНОСТИ:") - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - - fmt.Printf(" %-20s %s\n", ansi.Colorize("cmd1 | cmd2", ansi.BrightWhite), "Пайплайн (канал) между командами") - fmt.Printf(" %-20s %s\n", ansi.Colorize("cmd > file", ansi.BrightWhite), "Перенаправление вывода в файл (перезапись)") - fmt.Printf(" %-20s %s\n", ansi.Colorize("cmd >> file", ansi.BrightWhite), "Перенаправление вывода в файл (добавление)") - fmt.Printf(" %-20s %s\n", ansi.Colorize("Lua API", ansi.BrightWhite), "Встроенный интерпретатор Lua с функциями: exec(), ls(), cd(), pwd()") - - fmt.Println() - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - ansi.Println(ansi.BrightGreen, "ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:") - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - - ansi.Println(ansi.BrightCyan, "ВСТРОЕННЫЕ КОМАНДЫ:") - fmt.Printf(" %-40s %s\n", ansi.Colorize("ls -la", ansi.BrightWhite), "Показать все файлы в текущей директории") - fmt.Printf(" %-40s %s\n", ansi.Colorize("cd /home/user", ansi.BrightWhite), "Перейти в директорию пользователя") - fmt.Printf(" %-40s %s\n", ansi.Colorize("mkdir mydir", ansi.BrightWhite), "Создать директорию 'mydir'") - fmt.Printf(" %-40s %s\n", ansi.Colorize("rm myfile.txt", ansi.BrightWhite), "Удалить файл 'myfile.txt'") - fmt.Printf(" %-40s %s\n", ansi.Colorize("touch newfile.txt", ansi.BrightWhite), "Создать файл 'newfile.txt'") - fmt.Printf(" %-40s %s\n", ansi.Colorize("exec go version", ansi.BrightWhite), "Выполнить команду 'go version'") - - fmt.Println() - ansi.Println(ansi.BrightCyan, "ВНЕШНИЕ КОМАНДЫ (СИСТЕМНЫЕ УТИЛИТЫ):") - fmt.Printf(" %-40s %s\n", ansi.Colorize("go version", ansi.BrightWhite), "Показать версию Go (если установлен)") - fmt.Printf(" %-40s %s\n", ansi.Colorize("python --version", ansi.BrightWhite), "Показать версию Python (если установлен)") - fmt.Printf(" %-40s %s\n", ansi.Colorize("gcc --version", ansi.BrightWhite), "Показать версию GCC (если установлен)") - fmt.Printf(" %-40s %s\n", ansi.Colorize("date", ansi.BrightWhite), "Показать текущую дату и время") - fmt.Printf(" %-40s %s\n", ansi.Colorize("whoami", ansi.BrightWhite), "Показать имя текущего пользователя") - fmt.Printf(" %-40s %s\n", ansi.Colorize("pwd", ansi.BrightWhite), "Показать текущую рабочую директорию") - fmt.Printf(" %-40s %s\n", ansi.Colorize("echo Hello World", ansi.BrightWhite), "Вывести текст на экран") - fmt.Printf(" %-40s %s\n", ansi.Colorize("cat file.txt", ansi.BrightWhite), "Показать содержимое файла") - fmt.Printf(" %-40s %s\n", ansi.Colorize("grep pattern file.txt", ansi.BrightWhite), "Поиск строк по шаблону в файле") - - fmt.Println() - ansi.Println(ansi.BrightCyan, "КОМАНДЫ ДЛЯ РАБОТЫ С ПАЙПЛАЙНАМИ (КАНАЛАМИ):") - fmt.Printf(" %-40s %s\n", ansi.Colorize("ls -la | grep .go", ansi.BrightWhite), "Показать только Go файлы в текущей директории") - fmt.Printf(" %-40s %s\n", ansi.Colorize("ps aux | grep python", ansi.BrightWhite), "Найти процессы Python") - fmt.Printf(" %-40s %s\n", ansi.Colorize("cat file.txt | wc -l", ansi.BrightWhite), "Подсчитать количество строк в файле") - fmt.Printf(" %-40s %s\n", ansi.Colorize("ls | sort | uniq", ansi.BrightWhite), "Отсортировать и убрать дубликаты") - - fmt.Println() - ansi.Println(ansi.BrightCyan, "ПЕРЕНАПРАВЛЕНИЕ ВЫВОДА:") - fmt.Printf(" %-40s %s\n", ansi.Colorize("ls > files.txt", ansi.BrightWhite), "Сохранить список файлов в files.txt (перезапись)") - fmt.Printf(" %-40s %s\n", ansi.Colorize("echo Hello >> hello.txt", ansi.BrightWhite), "Добавить текст в конец файла") - fmt.Printf(" %-40s %s\n", ansi.Colorize("go version > version.txt", ansi.BrightWhite), "Сохранить версию Go в файл") - - fmt.Println() - ansi.Println(ansi.BrightCyan, "LUA СКРИПТЫ:") - fmt.Printf(" %-40s %s\n", ansi.Colorize("example.lua", ansi.BrightWhite), "Выполнить Lua скрипт из директории ~/.local/share/fush/lua/") - fmt.Printf(" %-40s %s\n", ansi.Colorize("my_script.lua arg1 arg2", ansi.BrightWhite), "Выполнить Lua скрипт с аргументами") - - fmt.Println() - ansi.Println(ansi.Yellow, "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") - ansi.Println(ansi.BrightCyan, "Для выхода из оболочки введите 'exit' или нажмите Ctrl+C") - fmt.Println() - - return nil -} - -// cmdLs обрабатывает команду ls -func (s *Shell) cmdLs(args []string) error { - // Определяем путь - path := "." - if len(args) > 0 { - path = args[0] - } - - // Открываем директорию - dir, err := os.Open(path) - if err != nil { - return err - } - defer dir.Close() - - // Читаем содержимое - files, err := dir.Readdir(-1) - if err != nil { - return err - } - - // Выводим список - for _, file := range files { - name := file.Name() - if file.IsDir() { - name = name + "/" - } - fmt.Println(name) - } - - return nil -} - -// cmdCd обрабатывает команду cd -func (s *Shell) cmdCd(args []string) error { - // Определяем путь - path := s.GetEnv("HOME") - if len(args) > 0 { - path = args[0] - } - - // Меняем директорию - if err := os.Chdir(path); err != nil { - return err - } - - // Обновляем PWD - pwd, err := os.Getwd() - if err == nil { - s.SetEnv("PWD", pwd) - } - - return nil -} - -// cmdMkdir обрабатывает команду mkdir -func (s *Shell) cmdMkdir(args []string) error { - if len(args) == 0 { - return fmt.Errorf("требуется имя директории") - } - - // Создаем директорию - return os.MkdirAll(args[0], 0755) -} - -// cmdRm обрабатывает команду rm -func (s *Shell) cmdRm(args []string) error { - if len(args) == 0 { - return fmt.Errorf("требуется имя файла") - } - - // Удаляем файл или директорию - return os.RemoveAll(args[0]) -} - -// cmdTouch обрабатывает команду touch -func (s *Shell) cmdTouch(args []string) error { - if len(args) == 0 { - return fmt.Errorf("требуется имя файла") - } - - // Создаем файл или обновляем время модификации - file, err := os.OpenFile(args[0], os.O_CREATE|os.O_WRONLY, 0644) - if err != nil { - return err - } - defer file.Close() - - // Обновляем время модификации - now := time.Now() - return os.Chtimes(args[0], now, now) -}