Shell 0.8.2 // 13.06.2021 // rgimad * use libj.obj instead of built-in "libc" * big refactoring: - fix indentation - string constants moved to locale/.../globals.h files * add new command - kfetch it is like neofetch for KolibriOS prints logo and main system information. * other fixes Shell 0.8.1 // 14.04.2020 - 01.04.2021 // rgimad, turbocat, Kenshin rgimad: * fixed bug with ctrl+v * added navigation in current string by Home, End * directory highlighting in ls command output * Now for incorrect scripts (which doesn't start with #SHS) shell says that they are incorrect, not "File not found". Also, translated comments from russian to english in two files. * added mv command * added ren command * now ls works also with relative pathes * fixed bug in strrchr * fixed bug with cd ../ * fixed cd . and cd ./ behavior * added output redirection to file (> >>) for echo command e.g. echo "">123.txt ; echo a b c >> y.txt turbocat: * Added new API: SC_GET_PID * Fixed data type pid - unsigned int. * Fixed cmd_ps output pid; * Added new SC_PING api * Renamed from SC_GET_PID to SC_PID * added pkill command Kenshin: * shell.inc now suports sc_ping & sc_pid functions * update docs Shell 0.7.7 // 06.02.2017 // Leency * help теперь выводит список комманд в три колонки * ps теперь выводит размер ОЗУ, используемый процессом * ls теперь выводит все файлы не в одну, а в несколько колонок размер колонок расчитывается исходя из самого длинного имени файла в папке старый вывод списком по прежнему доступен через ключ '-1' Shell 0.7.6 // 06.02.2017 // Siemargl * Файловые операции используют 64-bit размеры файлов. cp теперь понимает, если - каталог cp использует буфер 1Мб, или не более половины свободной памяти Shell 0.7.5 // 06.01.2017 // Siemargl * Мелкие багфиксы, изменена логика обработки стрелок вверх/вниз, чтобы как у всех Добавлена команда waitfor и вариант ps с параметром Shell 0.7.4 // 23.01.2014 // Albom * Работа с буфером обмена (копирование Ctrl+C и вставка Ctrl+V строки целиком) Shell 0.7.3 // 28.11.2013 // Albom * Исправлена ошибка с символом % в истории команд Shell 0.7.2 // 26.10.2013 // Albom * Файл .shell перенесен в /sys/settings/ * Исправлена команда "cd .." Shell 0.7.1 // 19.10.2013 // Albom * Исправлена ошибка, связанная с зависанием при попытке чтения пустой истории команд (по клавишам Up и Down) Shell 0.7.0 // 13.10.2013 // Albom * Переработан модуль ввода команды (добавлена обработка клавиш "влево", "вправо", Del) * Мелкие исправления Shell 0.6.4 // 09.10.2013 // Leency * Поддержка относительных путей в скриптах Shell 0.6.3 // 20.09.2013 // Albom * msvc-style атрибуты для отключения выравнивания в структурах (спасибо CleverMouse и Kirakishou!) Shell 0.6.2 // 24.02.2013 // Albom * Добавлена обработка управляющих символов (\n, \t, \", \', \\, \?) * Мелкие исправления Shell 0.6.1 // 17.02.2013 // Albom * Простая обработка ошибок внутренних команд * Команда killall трансформирована в параметр all команды kill * Изменена кодировка файла History.txt с 1251 на 866 Shell 0.6 // 16.02.2013 // Albom + Добавлена возможность запускать программы, имена которых или путь к которым содержат пробелы. Имя программы (возможно с путём к ней) для этого необходимо заключать в кавычки. Т.е. наконец-то можно запустить программу из /rd/1/File managers, не переходя в неё + Добавлена функция разделения строковой переменной на int argc, char* argv[], что означает возможность улучшения команд (обработка нескольких параметров) + Добавлена команда cp (копирование файла). Принимает обязательно два параметра - имя файла-источника и имя файла-результата. Имена могут быть краткими (в текущем каталоге), так и с полным путём (должны начинаться с /). Ограничение на размер файла - 4 Гбайта * Исправлена кодировка в сообщении об ошибке в консольном приложении * Клавиши истории (вверх и вниз) поменяны между собой * Количество команд в истории увеличено с пяти до десяти * Уменьшено количество предупреждений при компиляции * Команда ccpuid преобразована в параметр cpu команды ver * Исправления в пакетных файлах сборки + Добавлен пример консольного приложения на ассемблере и пакетный файл для его сборки Shell 0.5.4 // 04.06.2012 // Albom ======================================= * Исправлен интерфейс исполняемых консольных приложений. Теперь они должны создавать буфер с именем pid-SHELL, где pid - идентификатор процесса без заглавных нулей * Реинкарнированы команды ccpuid, free, killall + Добавлена команда history Shell 0.5.3 // 19.04.2012 // Albom ======================================= * Исправление в команде pwd Shell 0.5.2 // 16.04.2012 // Albom ======================================= * Исправление в команде ls * Незначительные другие исправления Shell 0.5.1 // 15.04.2012 // Albom ======================================= * Некоторые незначительные исправления Shell 0.5 // 23.03.2012 // Albom ======================================= * Добавлена поддержка консольных приложений, которые общаются с шеллом через именованную область Shell 0.4.6 // 30.01.2011 // Albom ======================================= * Временно удалены команды killall и ccpuid (чтобы вернуть, необходимо раскомментировать 2 строчки) * Исправления в текстовых строках Shell 0.4.52 // 25.10.2010 // Pterox ======================================= * Добавлена команда "killall" - убивает все процессы кроме OS/IDLE. * Фиксы Shell 0.4.51 // 21.10.2010 // Pterox ======================================= * Команда "turnoff" переименована в "shutdown", "kerver" удалена - теперь её заменяет "ver kernel"; фиксы. Shell 0.4.5 // 19.10.2010 // Pterox ======================================= Программа теперь многоязыковая (английский, и русский язык). Программа полностью русифицированна. * Команда "free" переименована в "memory" - для точности. * Добавлены команды turnoff (выключить компьютер), kerver (версия ядра KolibriOS), uptime; reboot теперь может перезагружать ядро ("reboot kernel") Shell 0.4.4 // 20.08.2010 // Albom ======================================= 1) шелл корректно завершается при закрытии окна 2) исправлено ещё 2 ошибки 3) добавлены 2 команды: * sleep - ждать. параметр - время в сотых частях секунды. только целое число. * ccpuid - вывод в консоль информации (пока скудно) о процессоре. пользы мало, но давно хотел с командой cpuid разобраться (в следующем семестре буду студентам курс читать, включил разбор команды в программу). есть много идей. некоторые легко реализуются, некоторые сложнее. если интересно: 1) добавить переменную (одну!), в которую будет результат в текстовой форме (не то что возвращает функция) записываться. с ней можно будет работать из командной строки 2) внедрить простую стековую машину для вычислений с вещественными числами Shell 0.4.3 // 20.08.2010 // Albom ======================================= * Смесь версий 0.4.1 и 0.4.2. Теперь в архиве все исходные файлы, необходимые для компиляции (раньше использовались объектники с моими обёртками, исходники я с шеллом не выкладывал) Shell 0.4.2 // 28.08.2009 // diamond ======================================= * Добавил корректное завершение работы при закрытии окна консоли, работает только начиная с последней на данный момент версией библиотеки (лежит на svn, включена в ночную сборку). Перекомпилировал в VS2008 с LTCG, ещё пошаманил с оптимизацией по размеру Shell 0.4.1 // 16.03.2009 // Albom ======================================= * версия с исправленными ошибками. * работает команда alias, добавлена команда clear. Shell 0.4 // 12.08.2008 // Albom ======================================= 1) Работает схема псевдонимов (до 256 команд) - просмотр по команде alias (без параметров) - добавление псевдонима команды с клавиатуры или в скрипте (в том числе и .shell): alias новая команда = старая команда - команды регистрозависимые, поэтому поклонникам ДОС придётся внести в .shell строки такого вида alias dir = ls alias DIR = ls alias Dir = ls alias DIr = ls и т.д. - встроенные команды переназвать невозможно, например, бессмысленна команда: alias ls=somecommand - при отладке получал странную информацию, но так как у меня всё работает, то пока изменений вносить не планирую 2) Теперь шелл можно запускать с параметром (из самого себя, например) - синтаксис: shell команда - пример: shell /sys/somescript - при этом .shell не запускается 3) Реализована команда more - просмотр текстовых и бинарных файлов (вроде бы задача простая, но пришлось повозиться с управляющими символами) - очень не рекомендуется просматривать большие файлы Shell 0.3 // 07.08.2008 // Albom ======================================= 1) Возможность запуска скриптов * каждая строка должна представляет собой команду * строкой считается набор символов, который заканчивается CR+LF (Windows) или LF(UNIX) или CR(Mac) * если строка начинается с #, то вся строка (т.е. комментарий) игнорируется * скрипт должен начитаться с #SHS * при запуске шелла автоматически запускается скрипт .shell 2) История из 5 (можно изменить при компиляции) введённых команд * перемещение по истории - UP/DOWN 3) Команда alias, которая позволяет вводить синонимы для команд * до 256 (можно изменить при компиляции) синонимов * пока работает только добавление и просмотр синонимов, а отработка пока не реализована Shell 0.2 // 04.08.2008 // Albom ======================================= * добавил новые функции * написал собственную процедуру ввода команды Shell 0.11 // 01.08.2008 // Albom ======================================= * Добавил команды free и reboot, внёс некоторые изменения, исправил найденные ошибки Shell 0.1 // 29.07.2008 // Albom ======================================= * Реализованы (не полностью) команды: about, cd, date, echo, exit, help, kill, ls, ps, pwd, ver * При запуске программы (если не указан полный путь) она ищется в каталоге /rd/1 и текущем каталоге Shell 0.02 // 27.07.2008 // Albom ======================================= * Реализовал команды: exit - выход ls (с параметром и без) - вывод списка директории pwd - текущий каталог ps - список процессов и их PID kill - завершить процесс по PID help (с параметром и без) - помощь Shell 0.01 // 27.07.2008 // Albom ======================================= * Решил написать функциональный шелл на Си с использованием console.obj * Пока сделал функцию отделения команды и параметров, а также реализовал команды help (пока без параметров), ver и exit