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)
-}