Shell v0.6.1. Some minor improvements.
git-svn-id: svn://kolibrios.org@3247 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
629515a9f6
commit
deca8b884f
@ -1,172 +1,178 @@
|
||||
|
||||
Shell 0.6.1 // 17.02.2013 // Albom
|
||||
* <20>à®áâ ï ®¡à ¡®âª ®è¨¡®ª ¢ãâà¥¨å ª®¬ ¤
|
||||
* Š®¬ ¤ 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
|
||||
* Исправления в пакетных файлах сборки
|
||||
+ Добавлен пример консольного приложения на ассемблере и пакетный файл для его сборки
|
||||
+ „®¡ ¢«¥ ¢®§¬®¦®áâì § ¯ã᪠âì ¯à®£à ¬¬ë, ¨¬¥ ª®â®àëå ¨«¨ ¯ãâì ª ª®â®àë¬ á®¤¥à¦ ⠯஡¥«ë. ˆ¬ï ¯à®£à ¬¬ë (¢®§¬®¦® á ¯ãâñ¬ ª ¥©) ¤«ï í⮣® ¥®¡å®¤¨¬® § ª«îç âì ¢ ª ¢ë窨. ’.¥. ª®¥æ-â® ¬®¦® § ¯ãáâ¨âì ¯à®£à ¬¬ã ¨§ /rd/1/File managers, ¥ ¯¥à¥å®¤ï ¢ ¥ñ
|
||||
+ „®¡ ¢«¥ äãªæ¨ï à §¤¥«¥¨ï áâப®¢®© ¯¥à¥¬¥®© int argc, char* argv[], çâ® ®§ ç ¥â ¢®§¬®¦®áâì ã«ãçè¥¨ï ª®¬ ¤ (®¡à ¡®âª ¥áª®«ìª¨å ¯ à ¬¥â஢)
|
||||
+ „®¡ ¢«¥ ª®¬ ¤ cp (ª®¯¨à®¢ ¨¥ ä ©« ). <20>ਨ¬ ¥â ®¡ï§ â¥«ì® ¤¢ ¯ à ¬¥âà - ¨¬ï ä ©« -¨áâ®ç¨ª ¨ ¨¬ï ä ©« -१ã«ìâ â . ˆ¬¥ ¬®£ãâ ¡ëâì ªà ⪨¬¨ (¢ ⥪ã饬 ª â «®£¥), â ª ¨ á ¯®«ë¬ ¯ãâñ¬ (¤®«¦ë ç¨ âìáï á /). Ž£à ¨ç¥¨¥ à §¬¥à ä ©« - 4 ƒ¡ ©â
|
||||
* ˆá¯à ¢«¥ ª®¤¨à®¢ª ¢ á®®¡é¥¨¨ ®¡ ®è¨¡ª¥ ¢ ª®á®«ì®¬ ¯à¨«®¦¥¨¨
|
||||
* Š« ¢¨è¨ ¨áâ®à¨¨ (¢¢¥àå ¨ ¢¨§) ¯®¬¥ïë ¬¥¦¤ã ᮡ®©
|
||||
* Š®«¨ç¥á⢮ ª®¬ ¤ ¢ ¨áâ®à¨¨ 㢥«¨ç¥® á ¯ï⨠¤® ¤¥áïâ¨
|
||||
* “¬¥ì襮 ª®«¨ç¥á⢮ ¯à¥¤ã¯à¥¦¤¥¨© ¯à¨ ª®¬¯¨«ï樨
|
||||
* Š®¬ ¤ ccpuid ¯à¥®¡à §®¢ ¢ ¯ à ¬¥âà cpu ª®¬ ¤ë ver
|
||||
* ˆá¯à ¢«¥¨ï ¢ ¯ ª¥âëå ä ©« å ᡮન
|
||||
+ „®¡ ¢«¥ ¯à¨¬¥à ª®á®«ì®£® ¯à¨«®¦¥¨ï áᥬ¡«¥à¥ ¨ ¯ ª¥âë© ä ©« ¤«ï ¥£® ᡮન
|
||||
|
||||
|
||||
Shell 0.5.4 // 04.06.2012 // Albom
|
||||
=======================================
|
||||
* Исправлен интерфейс исполняемых консольных приложений. Теперь они должны создавать буфер с именем pid-SHELL, где pid - идентификатор процесса без заглавных нулей
|
||||
* Реинкарнированы команды ccpuid, free, killall
|
||||
+ Добавлена команда history
|
||||
* ˆá¯à ¢«¥ ¨â¥àä¥©á ¨á¯®«ï¥¬ëå ª®á®«ìëå ¯à¨«®¦¥¨©. ’¥¯¥àì ®¨ ¤®«¦ë ᮧ¤ ¢ âì ¡ãä¥à á ¨¬¥¥¬ pid-SHELL, £¤¥ pid - ¨¤¥â¨ä¨ª â®à ¯à®æ¥áá ¡¥§ § £« ¢ëå ã«¥©
|
||||
* <EFBFBD>¥¨ª à¨à®¢ ë ª®¬ ¤ë ccpuid, free, killall
|
||||
+ „®¡ ¢«¥ ª®¬ ¤ history
|
||||
|
||||
|
||||
Shell 0.5.3 // 19.04.2012 // Albom
|
||||
=======================================
|
||||
* Исправление в команде pwd
|
||||
* ˆá¯à ¢«¥¨¥ ¢ ª®¬ ¤¥ pwd
|
||||
|
||||
|
||||
Shell 0.5.2 // 16.04.2012 // Albom
|
||||
=======================================
|
||||
* Исправление в команде ls
|
||||
* Незначительные другие исправления
|
||||
* ˆá¯à ¢«¥¨¥ ¢ ª®¬ ¤¥ ls
|
||||
* <EFBFBD>¥§ ç¨â¥«ìë¥ ¤à㣨¥ ¨á¯à ¢«¥¨ï
|
||||
|
||||
|
||||
Shell 0.5.1 // 15.04.2012 // Albom
|
||||
=======================================
|
||||
* Некоторые незначительные исправления
|
||||
* <EFBFBD>¥ª®â®àë¥ ¥§ ç¨â¥«ìë¥ ¨á¯à ¢«¥¨ï
|
||||
|
||||
|
||||
Shell 0.5 // 23.03.2012 // Albom
|
||||
=======================================
|
||||
* Добавлена поддержка консольных приложений, которые общаются с шеллом через именованную область
|
||||
* „®¡ ¢«¥ ¯®¤¤¥à¦ª ª®á®«ìëå ¯à¨«®¦¥¨©, ª®â®àë¥ ®¡é îâáï á 襫«®¬ ç¥à¥§ ¨¬¥®¢ ãî ®¡« áâì
|
||||
|
||||
|
||||
Shell 0.4.6 // 30.01.2011 // Albom
|
||||
=======================================
|
||||
* Временно удалены команды killall и ccpuid (чтобы вернуть, необходимо раскомментировать 2 строчки)
|
||||
* Исправления в текстовых строках
|
||||
* ‚६¥® 㤠«¥ë ª®¬ ¤ë killall ¨ ccpuid (çâ®¡ë ¢¥àãâì, ¥®¡å®¤¨¬® à ᪮¬¬¥â¨à®¢ âì 2 áâà®çª¨)
|
||||
* ˆá¯à ¢«¥¨ï ¢ ⥪á⮢ëå áâப å
|
||||
|
||||
|
||||
Shell 0.4.52 // 25.10.2010 // Pterox
|
||||
=======================================
|
||||
* Добавлена команда "killall" - убивает все процессы кроме OS/IDLE.
|
||||
* Фиксы
|
||||
* „®¡ ¢«¥ ª®¬ ¤ "killall" - 㡨¢ ¥â ¢á¥ ¯à®æ¥ááë ªà®¬¥ OS/IDLE.
|
||||
* ”¨ªáë
|
||||
|
||||
|
||||
Shell 0.4.51 // 21.10.2010 // Pterox
|
||||
=======================================
|
||||
* Команда "turnoff" переименована в "shutdown", "kerver" удалена - теперь её заменяет "ver kernel"; фиксы.
|
||||
* Š®¬ ¤ "turnoff" ¯¥à¥¨¬¥®¢ ¢ "shutdown", "kerver" 㤠«¥ - ⥯¥àì ¥ñ § ¬¥ï¥â "ver kernel"; 䨪áë.
|
||||
|
||||
|
||||
Shell 0.4.5 // 19.10.2010 // Pterox
|
||||
=======================================
|
||||
Программа теперь многоязыковая (английский, и русский язык). Программа полностью русифицированна.
|
||||
* Команда "free" переименована в "memory" - для точности.
|
||||
* Добавлены команды turnoff (выключить компьютер), kerver (версия ядра KolibriOS), uptime; reboot теперь может перезагружать ядро ("reboot kernel")
|
||||
<EFBFBD>à®£à ¬¬ ⥯¥àì ¬®£®ï§ëª®¢ ï ( £«¨©áª¨©, ¨ àãá᪨© ï§ëª). <20>à®£à ¬¬ ¯®«®áâìî àãá¨ä¨æ¨à®¢ .
|
||||
* Š®¬ ¤ "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) ¨á¯à ¢«¥® ¥éñ 2 ®è¨¡ª¨
|
||||
3) ¤®¡ ¢«¥ë 2 ª®¬ ¤ë:
|
||||
* sleep - ¦¤ âì. ¯ à ¬¥âà - ¢à¥¬ï ¢ á®âëå ç áâïå ᥪã¤ë. ⮫쪮 楫®¥ ç¨á«®.
|
||||
* ccpuid - ¢ë¢®¤ ¢ ª®á®«ì ¨ä®à¬ 樨 (¯®ª áªã¤®) ® ¯à®æ¥áá®à¥. ¯®«ì§ë ¬ «®, ® ¤ ¢® å®â¥« á ª®¬ ¤®© cpuid à §®¡à âìáï (¢ á«¥¤ãî饬 ᥬ¥áâॠ¡ã¤ã áâ㤥⠬ ªãàá ç¨â âì, ¢ª«î稫 à §¡®à ª®¬ ¤ë ¢ ¯à®£à ¬¬ã).
|
||||
|
||||
есть много идей. некоторые легко реализуются, некоторые сложнее. если интересно:
|
||||
1) добавить переменную (одну!), в которую будет результат в текстовой форме (не то что возвращает функция) записываться. с ней можно будет работать из командной строки
|
||||
2) внедрить простую стековую машину для вычислений с вещественными числами
|
||||
¥áâì ¬®£® ¨¤¥©. ¥ª®â®àë¥ «¥£ª® ॠ«¨§ãîâáï, ¥ª®â®àë¥ á«®¦¥¥. ¥á«¨ ¨â¥à¥á®:
|
||||
1) ¤®¡ ¢¨âì ¯¥à¥¬¥ãî (®¤ã!), ¢ ª®â®àãî ¡ã¤¥â १ã«ìâ â ¢ ⥪á⮢®© ä®à¬¥ (¥ â® çâ® ¢®§¢à é ¥â äãªæ¨ï) § ¯¨áë¢ âìáï. á ¥© ¬®¦® ¡ã¤¥â à ¡®â âì ¨§ ª®¬ ¤®© áâப¨
|
||||
2) ¢¥¤à¨âì ¯à®áâãî á⥪®¢ãî ¬ è¨ã ¤«ï ¢ëç¨á«¥¨© á ¢¥é¥á⢥묨 ç¨á« ¬¨
|
||||
|
||||
|
||||
Shell 0.4.3 // 20.08.2010 // Albom
|
||||
=======================================
|
||||
* Смесь версий 0.4.1 и 0.4.2. Теперь в архиве все исходные файлы, необходимые для компиляции (раньше использовались объектники с моими обёртками, исходники я с шеллом не выкладывал)
|
||||
* ‘¬¥áì ¢¥àᨩ 0.4.1 ¨ 0.4.2. ’¥¯¥àì ¢ à娢¥ ¢á¥ ¨áå®¤ë¥ ä ©«ë, ¥®¡å®¤¨¬ë¥ ¤«ï ª®¬¯¨«ï樨 (à ìè¥ ¨á¯®«ì§®¢ «¨áì ®¡ê¥ªâ¨ª¨ á ¬®¨¬¨ ®¡ñà⪠¬¨, ¨á室¨ª¨ ï á 襫«®¬ ¥ ¢ëª« ¤ë¢ «)
|
||||
|
||||
|
||||
Shell 0.4.2 // 28.08.2009 // diamond
|
||||
=======================================
|
||||
* Добавил корректное завершение работы при закрытии окна консоли, работает только начиная с последней на данный момент версией библиотеки (лежит на svn, включена в ночную сборку). Перекомпилировал в VS2008 с LTCG, ещё пошаманил с оптимизацией по размеру
|
||||
* „®¡ ¢¨« ª®à४⮥ § ¢¥à襨¥ à ¡®âë ¯à¨ § ªàë⨨ ®ª ª®á®«¨, à ¡®â ¥â ⮫쪮 ç¨ ï á ¯®á«¥¤¥© ¤ ë© ¬®¬¥â ¢¥àᨥ© ¡¨¡«¨®â¥ª¨ («¥¦¨â svn, ¢ª«îç¥ ¢ ®çãî á¡®àªã). <20>¥à¥ª®¬¯¨«¨à®¢ « ¢ VS2008 á LTCG, ¥éñ ¯®è ¬ ¨« á ®¯â¨¬¨§ 樥© ¯® à §¬¥àã
|
||||
|
||||
|
||||
Shell 0.4.1 // 16.03.2009 // Albom
|
||||
=======================================
|
||||
* версия с исправленными ошибками.
|
||||
* работает команда alias, добавлена команда clear.
|
||||
* ¢¥àá¨ï á ¨á¯à ¢«¥ë¬¨ ®è¨¡ª ¬¨.
|
||||
* à ¡®â ¥â ª®¬ ¤ alias, ¤®¡ ¢«¥ ª®¬ ¤ clear.
|
||||
|
||||
|
||||
Shell 0.4 // 12.08.2008 // Albom
|
||||
=======================================
|
||||
1) Работает схема псевдонимов (до 256 команд)
|
||||
- просмотр по команде alias (без параметров)
|
||||
- добавление псевдонима команды с клавиатуры или в скрипте (в том числе и .shell): alias новая команда = старая команда
|
||||
- команды регистрозависимые, поэтому поклонникам ДОС придётся внести в .shell строки такого вида
|
||||
1) <EFBFBD> ¡®â ¥â á奬 ¯á¥¢¤®¨¬®¢ (¤® 256 ª®¬ ¤)
|
||||
- ¯à®á¬®âà ¯® ª®¬ ¤¥ alias (¡¥§ ¯ à ¬¥â஢)
|
||||
- ¤®¡ ¢«¥¨¥ ¯á¥¢¤®¨¬ ª®¬ ¤ë á ª« ¢¨ âãàë ¨«¨ ¢ áªà¨¯â¥ (¢ ⮬ ç¨á«¥ ¨ .shell): alias ®¢ ï ª®¬ ¤ = áâ à ï ª®¬ ¤
|
||||
- ª®¬ ¤ë ॣ¨áâ஧ ¢¨á¨¬ë¥, ¯®í⮬㠯®ª«®¨ª ¬ „Ž‘ ¯à¨¤ñâáï ¢¥á⨠¢ .shell áâப¨ â ª®£® ¢¨¤
|
||||
alias dir = ls
|
||||
alias DIR = ls
|
||||
alias Dir = ls
|
||||
alias DIr = ls
|
||||
и т.д.
|
||||
- встроенные команды переназвать невозможно, например, бессмысленна команда:
|
||||
¨ â.¤.
|
||||
- ¢áâà®¥ë¥ ª®¬ ¤ë ¯¥à¥ §¢ âì ¥¢®§¬®¦®, ¯à¨¬¥à, ¡¥áá¬ëá«¥ ª®¬ ¤ :
|
||||
alias ls=somecommand
|
||||
- при отладке получал странную информацию, но так как у меня всё работает, то пока изменений вносить не планирую
|
||||
- ¯à¨ ®â« ¤ª¥ ¯®«ãç « áâà ãî ¨ä®à¬ æ¨î, ® â ª ª ª ã ¬¥ï ¢áñ à ¡®â ¥â, â® ¯®ª ¨§¬¥¥¨© ¢®á¨âì ¥ ¯« ¨àãî
|
||||
|
||||
2) Теперь шелл можно запускать с параметром (из самого себя, например)
|
||||
- синтаксис:
|
||||
shell команда
|
||||
- пример:
|
||||
2) ’¥¯¥àì 襫« ¬®¦® § ¯ã᪠âì á ¯ à ¬¥â஬ (¨§ á ¬®£® ᥡï, ¯à¨¬¥à)
|
||||
- á¨â ªá¨á:
|
||||
shell ª®¬ ¤
|
||||
- ¯à¨¬¥à:
|
||||
shell /sys/somescript
|
||||
- при этом .shell не запускается
|
||||
- ¯à¨ í⮬ .shell ¥ § ¯ã᪠¥âáï
|
||||
|
||||
3) Реализована команда more
|
||||
- просмотр текстовых и бинарных файлов (вроде бы задача простая, но пришлось повозиться с управляющими символами)
|
||||
- очень не рекомендуется просматривать большие файлы
|
||||
3) <EFBFBD>¥ «¨§®¢ ª®¬ ¤ more
|
||||
- ¯à®á¬®âà ⥪á⮢ëå ¨ ¡¨ àëå ä ©«®¢ (¢à®¤¥ ¡ë § ¤ ç ¯à®áâ ï, ® ¯à¨è«®áì ¯®¢®§¨âìáï á ã¯à ¢«ïî騬¨ ᨬ¢®« ¬¨)
|
||||
- ®ç¥ì ¥ ४®¬¥¤ã¥âáï ¯à®á¬ âਢ âì ¡®«ì訥 ä ©«ë
|
||||
|
||||
|
||||
Shell 0.3 // 07.08.2008 // Albom
|
||||
=======================================
|
||||
1) Возможность запуска скриптов
|
||||
* каждая строка должна представляет собой команду
|
||||
* строкой считается набор символов, который заканчивается CR+LF (Windows) или LF(UNIX) или CR(Mac)
|
||||
* если строка начинается с #, то вся строка (т.е. комментарий) игнорируется
|
||||
* скрипт должен начитаться с #SHS
|
||||
* при запуске шелла автоматически запускается скрипт .shell
|
||||
1) ‚®§¬®¦®áâì § ¯ã᪠áªà¨¯â®¢
|
||||
* ª ¦¤ ï áâப ¤®«¦ ¯à¥¤áâ ¢«ï¥â ᮡ®© ª®¬ ¤ã
|
||||
* áâப®© áç¨â ¥âáï ¡®à ᨬ¢®«®¢, ª®â®àë© § ª 稢 ¥âáï CR+LF (Windows) ¨«¨ LF(UNIX) ¨«¨ CR(Mac)
|
||||
* ¥á«¨ áâப ç¨ ¥âáï á #, â® ¢áï áâப (â.¥. ª®¬¬¥â ਩) ¨£®à¨àã¥âáï
|
||||
* áªà¨¯â ¤®«¦¥ ç¨â âìáï á #SHS
|
||||
* ¯à¨ § ¯ã᪥ 襫« ¢â®¬ â¨ç¥áª¨ § ¯ã᪠¥âáï áªà¨¯â .shell
|
||||
|
||||
2) История из 5 (можно изменить при компиляции) введённых команд
|
||||
* перемещение по истории - UP/DOWN
|
||||
2) ˆáâ®à¨ï ¨§ 5 (¬®¦® ¨§¬¥¨âì ¯à¨ ª®¬¯¨«ï樨) ¢¢¥¤ñëå ª®¬ ¤
|
||||
* ¯¥à¥¬¥é¥¨¥ ¯® ¨áâ®à¨¨ - UP/DOWN
|
||||
|
||||
3) Команда alias, которая позволяет вводить синонимы для команд
|
||||
* до 256 (можно изменить при компиляции) синонимов
|
||||
* пока работает только добавление и просмотр синонимов, а отработка пока не реализована
|
||||
3) Š®¬ ¤ alias, ª®â®à ï ¯®§¢®«ï¥â ¢¢®¤¨âì ᨮ¨¬ë ¤«ï ª®¬ ¤
|
||||
* ¤® 256 (¬®¦® ¨§¬¥¨âì ¯à¨ ª®¬¯¨«ï樨) ᨮ¨¬®¢
|
||||
* ¯®ª à ¡®â ¥â ⮫쪮 ¤®¡ ¢«¥¨¥ ¨ ¯à®á¬®âà ᨮ¨¬®¢, ®âà ¡®âª ¯®ª ¥ ॠ«¨§®¢
|
||||
|
||||
|
||||
Shell 0.2 // 04.08.2008 // Albom
|
||||
=======================================
|
||||
* добавил новые функции
|
||||
* написал собственную процедуру ввода команды
|
||||
* ¤®¡ ¢¨« ®¢ë¥ äãªæ¨¨
|
||||
* ¯¨á « ᮡá⢥ãî ¯à®æ¥¤ãàã ¢¢®¤ ª®¬ ¤ë
|
||||
|
||||
|
||||
Shell 0.11 // 01.08.2008 // Albom
|
||||
=======================================
|
||||
* Добавил команды free и reboot, внёс некоторые изменения, исправил найденные ошибки
|
||||
* „®¡ ¢¨« ª®¬ ¤ë free ¨ reboot, ¢ñá ¥ª®â®àë¥ ¨§¬¥¥¨ï, ¨á¯à ¢¨« ©¤¥ë¥ ®è¨¡ª¨
|
||||
|
||||
|
||||
Shell 0.1 // 29.07.2008 // Albom
|
||||
=======================================
|
||||
* Реализованы (не полностью) команды: about, cd, date, echo, exit, help, kill, ls, ps, pwd, ver
|
||||
* При запуске программы (если не указан полный путь) она ищется в каталоге /rd/1 и текущем каталоге
|
||||
* <EFBFBD>¥ «¨§®¢ ë (¥ ¯®«®áâìî) ª®¬ ¤ë: about, cd, date, echo, exit, help, kill, ls, ps, pwd, ver
|
||||
* <EFBFBD>ਠ§ ¯ã᪥ ¯à®£à ¬¬ë (¥á«¨ ¥ 㪠§ ¯®«ë© ¯ãâì) ® ¨é¥âáï ¢ ª â «®£¥ /rd/1 ¨ ⥪ã饬 ª â «®£¥
|
||||
|
||||
|
||||
Shell 0.02 // 27.07.2008 // Albom
|
||||
=======================================
|
||||
* Реализовал команды:
|
||||
exit - выход
|
||||
ls (с параметром и без) - вывод списка директории
|
||||
pwd - текущий каталог
|
||||
ps - список процессов и их PID
|
||||
kill - завершить процесс по PID
|
||||
help (с параметром и без) - помощь
|
||||
* <EFBFBD>¥ «¨§®¢ « ª®¬ ¤ë:
|
||||
exit - ¢ë室
|
||||
ls (á ¯ à ¬¥â஬ ¨ ¡¥§) - ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
||||
pwd - ⥪ã騩 ª â «®£
|
||||
ps - ᯨ᮪ ¯à®æ¥áᮢ ¨ ¨å PID
|
||||
kill - § ¢¥àè¨âì ¯à®æ¥áá ¯® PID
|
||||
help (á ¯ à ¬¥â஬ ¨ ¡¥§) - ¯®¬®éì
|
||||
|
||||
|
||||
Shell 0.01 // 27.07.2008 // Albom
|
||||
=======================================
|
||||
* Решил написать функциональный шелл на Си с использованием console.obj
|
||||
* Пока сделал функцию отделения команды и параметров, а также реализовал команды help (пока без параметров), ver и exit
|
||||
* <EFBFBD>¥è¨« ¯¨á âì äãªæ¨® «ìë© è¥«« ‘¨ á ¨á¯®«ì§®¢ ¨¥¬ console.obj
|
||||
* <EFBFBD>®ª ᤥ« « äãªæ¨î ®â¤¥«¥¨ï ª®¬ ¤ë ¨ ¯ à ¬¥â஢, â ª¦¥ ॠ«¨§®¢ « ª®¬ ¤ë help (¯®ª ¡¥§ ¯ à ¬¥â஢), ver ¨ exit
|
||||
|
||||
|
@ -40,7 +40,6 @@
|
||||
#include "cmd/cmd_sleep.c"
|
||||
#include "cmd/cmd_shutdown.c"
|
||||
#include "cmd/cmd_uptime.c"
|
||||
#include "cmd/cmd_killall.c"
|
||||
#include "cmd/cmd_history.c"
|
||||
#include "cmd/cmd_cp.c"
|
||||
|
||||
|
@ -12,7 +12,7 @@ if (NULL == dir)
|
||||
#elif LANG_RUS
|
||||
printf(" cd <äèðåêòîðèÿ>\n\r");
|
||||
#endif
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ( 0 == strcmp(dir, ".") )
|
||||
|
@ -1,15 +1,4 @@
|
||||
|
||||
void print_error(void)
|
||||
{
|
||||
|
||||
#if LANG_ENG
|
||||
printf(" Error!\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" Žè¨¡ª !\n\r");
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
int cmd_cp(char param[])
|
||||
{
|
||||
|
||||
@ -40,7 +29,7 @@ if (argc != 2)
|
||||
|
||||
parameters_free(argc, argv);
|
||||
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
filename_in = (char*) malloc(4096);
|
||||
@ -80,12 +69,10 @@ k70_in.p21 = filename_in;
|
||||
result = kol_file_70(&k70_in); // ¯®«ãç ¥¬ ¨ä®à¬ æ¨î ® ä ©«¥
|
||||
if ( 0 != result )
|
||||
{
|
||||
print_error();
|
||||
|
||||
parameters_free(argc, argv);
|
||||
free(filename_in);
|
||||
free(filename_out);
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
filesize = bdvk.p32[0]; // ¯®«ãç ¥¬ à §¬¥à ä ©« (®£à ¨ç¥¨¥ - 4 ƒ¡ ©â )
|
||||
@ -115,8 +102,6 @@ for ( i = 0; i < n; i++)
|
||||
result = kol_file_70(&k70_in); // ç⥨¥
|
||||
if (result != 0)
|
||||
{
|
||||
print_error();
|
||||
|
||||
parameters_free(argc, argv);
|
||||
free(filename_in);
|
||||
free(filename_out);
|
||||
@ -128,8 +113,6 @@ for ( i = 0; i < n; i++)
|
||||
result = kol_file_70(&k70_out); // § ¯¨áì
|
||||
if (result != 0)
|
||||
{
|
||||
print_error();
|
||||
|
||||
parameters_free(argc, argv);
|
||||
free(filename_in);
|
||||
free(filename_out);
|
||||
@ -152,8 +135,6 @@ if ( (filesize%4096) != 0 ) //
|
||||
result = kol_file_70(&k70_in); // ç⥨¥
|
||||
if (result != 0)
|
||||
{
|
||||
print_error();
|
||||
|
||||
parameters_free(argc, argv);
|
||||
free(filename_in);
|
||||
free(filename_out);
|
||||
@ -165,8 +146,6 @@ if ( (filesize%4096) != 0 ) //
|
||||
result = kol_file_70(&k70_out); // § ¯¨áì
|
||||
if (result != 0)
|
||||
{
|
||||
print_error();
|
||||
|
||||
parameters_free(argc, argv);
|
||||
free(filename_in);
|
||||
free(filename_out);
|
||||
@ -177,7 +156,6 @@ if ( (filesize%4096) != 0 ) //
|
||||
}
|
||||
|
||||
|
||||
|
||||
parameters_free(argc, argv);
|
||||
free(filename_in);
|
||||
free(filename_out);
|
||||
|
@ -29,3 +29,4 @@ time = kol_system_time_get();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -4,3 +4,4 @@ int cmd_echo(char text[])
|
||||
printf("%s\n\r", text);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -6,3 +6,4 @@ _exit(1);
|
||||
kol_exit();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -16,3 +16,4 @@ used = total - free;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -38,3 +38,4 @@ else
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -11,3 +11,4 @@ for (i = 0; i < CMD_HISTORY_NUM_REAL; i++)
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -1,22 +1,32 @@
|
||||
|
||||
|
||||
int cmd_kill(char process[])
|
||||
int cmd_kill(char param[])
|
||||
{
|
||||
|
||||
unsigned proc;
|
||||
unsigned process;
|
||||
int result;
|
||||
int i;
|
||||
|
||||
if (NULL == process)
|
||||
if ( strlen(param) == 0 )
|
||||
{
|
||||
printf(" kill <PID>\n\r");
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!strcmp(param, "all"))
|
||||
{
|
||||
for (i = 2;i<256;i++)
|
||||
{
|
||||
kol_kill_process(i);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
proc = _atoi(process);
|
||||
if ( 0 != proc )
|
||||
process = _atoi(param);
|
||||
if ( 0 != process )
|
||||
{
|
||||
result = kol_process_kill_pid(proc);
|
||||
result = kol_process_kill_pid(process);
|
||||
if (result < 0)
|
||||
return FALSE;
|
||||
else
|
||||
@ -25,3 +35,4 @@ else
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,15 +0,0 @@
|
||||
|
||||
int cmd_killall(char process_name[])
|
||||
{
|
||||
|
||||
unsigned i;
|
||||
if (!strlen(process_name))
|
||||
{
|
||||
for (i = 2;i<256;i++)
|
||||
{
|
||||
kol_kill_process(i);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
@ -47,3 +47,4 @@ for (i = 0; i < num_of_file; i++)
|
||||
free((void*)k70.p16);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@ if (NULL == dir)
|
||||
#elif LANG_RUS
|
||||
printf(" mkdir <え爛<E38188><E7889B><EFBFBD>>\n\r");
|
||||
#endif
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -46,3 +46,4 @@ else
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ if (strlen(file)<1)
|
||||
#elif LANG_RUS
|
||||
printf (" more <¨¬ï ä ©« >\n\r");
|
||||
#endif
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ( '/' == file[0])
|
||||
@ -93,3 +93,4 @@ con_set_flags(flags);
|
||||
printf ("\n\r");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -26,3 +26,4 @@ free(buf1k);
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
|
@ -4,3 +4,4 @@ int cmd_pwd(char param[])
|
||||
printf (" %s%c\n\r", cur_dir, cur_dir[strlen(cur_dir)-1]=='/'?' ':'/' );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -7,3 +7,4 @@ else
|
||||
kol_system_end(3);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@ if (NULL == file)
|
||||
#elif LANG_RUS
|
||||
printf (" rm <¨¬ï ä ©« >\n\r");
|
||||
#endif
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ( '/' == file[0])
|
||||
@ -52,3 +52,4 @@ else
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@ if (NULL == dir)
|
||||
#elif LANG_ENG
|
||||
printf(" rmdir <え爛<E38188><E7889B><EFBFBD>>\n\r");
|
||||
#endif
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ( ( 0 == strcmp(dir, ".") ) || ( 0 == strcmp(dir, "..") ) || ( 0 == strcmp(cur_dir, "/")) )
|
||||
@ -48,3 +48,4 @@ else
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
|
||||
|
@ -4,3 +4,4 @@ int cmd_shutdown(char param[])
|
||||
kol_system_end(2);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -4,9 +4,17 @@ int cmd_sleep(char param[])
|
||||
int delay;
|
||||
|
||||
if (!strlen(param))
|
||||
return FALSE;
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" sleep <time in the 1/100 of second>\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" sleep <интервал в сотых доля секунды>\n\r");
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
delay = _atoi(param);
|
||||
kol_sleep((unsigned)delay);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@ if (NULL == file)
|
||||
#elif LANG_RUS
|
||||
printf(" touch <¨¬ï ä ©« >\n\r");
|
||||
#endif
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ( ( 0 == strcmp(file, ".") ) || ( 0 == strcmp(file, "..") ) || ( 0 == strcmp(cur_dir, "/")) )
|
||||
|
@ -17,3 +17,4 @@ up_millisecs = (time_tick*10)%100;
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
int cmd_ver(char param[])
|
||||
{
|
||||
|
||||
if (!strcmp(param, "kernel"))
|
||||
{
|
||||
char *kvbuf;
|
||||
@ -63,3 +64,4 @@ if (!strcmp(param, "cpu"))
|
||||
printf (" Shell v%s\n\r", SHELL_VERSION);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -12,8 +12,7 @@ const command_t COMMANDS[]=
|
||||
{"free", " Displays total, free and used memory\n\r", &cmd_memory},
|
||||
{"help", " Gives help on commands. Usage:\n\r help ;it lists all builtins\n\r help <command> ;help on command\n\r", &cmd_help},
|
||||
{"history", " Lists used commands\n\r", &cmd_history},
|
||||
{"kill", " Stops a running process. Usage:\n\r kill <PID of process>\n\r", &cmd_kill},
|
||||
{"killall", " Kills all running processes\n\r", &cmd_killall},
|
||||
{"kill", " Stops a running process. Usage:\n\r kill <PID of process>\n\r kill all\n\r", &cmd_kill},
|
||||
{"ls", " Lists the files in a directory. Usage:\n\r ls ;lists the files in current directory\n\r ls <directory> ;lists the files at specified folder\n\r", &cmd_ls},
|
||||
{"mkdir", " Makes directory. Usage:\n\r mkdir <folder name> ;creates the folder in working directory\n\r mkdir <path><folder name> ;create folder by specified path\n\r", &cmd_mkdir},
|
||||
{"more", " Displays a file data to the screen. Usage:\n\r more <file name>\n\r", &cmd_more},
|
||||
@ -28,3 +27,4 @@ const command_t COMMANDS[]=
|
||||
{"uptime", " Displays the uptime\n\r", &cmd_uptime},
|
||||
{"ver", " Displays version. Usage:\n\r ver ;Shell version\n\r ver kernel ;version of KolibriOS kernel\n\r ver cpu ;information about CPU\n\r", &cmd_ver},
|
||||
};
|
||||
|
||||
|
@ -12,8 +12,7 @@ const command_t COMMANDS[]=
|
||||
{"free", " <20>®ª §ë¢ ¥â ®¡êñ¬ ®¯¥à ⨢®© ¯ ¬ïâ¨: ¢á¥©, ᢮¡®¤®© ¨ ¨á¯®«ì§ã¥¬®©\n\r", &cmd_memory},
|
||||
{"help", " ‘¯à ¢ª ¯® ª®¬ ¤ ¬. ˆá¯®«ì§®¢ ¨¥:\n\r help ;ᯨ᮪ ¢á¥å ª®¬ ¤\n\r help <ª®¬ ¤ > ;á¯à ¢ª ¯® ª®¬ ¤¥\n\r", &cmd_help},
|
||||
{"history", " ‘¯¨á®ª ¨á¯®«ì§®¢ ëå ª®¬ ¤\n\r", &cmd_history},
|
||||
{"kill", " “¡¨¢ ¥â ¯à®æ¥áá. ˆá¯®«ì§®¢ ¨¥:\n\r kill <PID ¯à®æ¥áá >\n\r", &cmd_kill},
|
||||
{"killall", " “¡¨¢ ¥â ¢á¥ § ¯ãé¥ë¥ ¯à®æ¥ááë\n\r", &cmd_killall},
|
||||
{"kill", " “¡¨¢ ¥â ¯à®æ¥áá. ˆá¯®«ì§®¢ ¨¥:\n\r kill <PID ¯à®æ¥áá >\n\r kill all\n\r", &cmd_kill},
|
||||
{"ls", " ‚뢮¤¨â ᯨ᮪ ä ©«®¢. ˆá¯®«ì§®¢ ¨¥:\n\r ls ;ᯨ᮪ ä ©«®¢ ¢ ⥪ã饬 ª â «®£¥\n\r ls <¤¨à¥ªâ®à¨ï> ;ᯨ᮪ ä ©«®¢ ¨§ § ¤ ®© ¤¨à¥ªâ®à¨¨\n\r", &cmd_ls},
|
||||
{"mkdir", " ‘®§¤ ¥â ª â «®£. ˆá¯®«ì§®¢ ¨¥:\n\r mkdir <¨¬ï ¯ ¯ª¨> ;ᮧ¤ âì ¯ ¯ªã ¢ ⥪ã饬 ª â «®£¥\n\r mkdir <¯ãâì><¨¬ï ¯ ¯ª¨> ;ᮧ¤ âì ¯ ¯ªã ¯® 㪠§ ®¬ã ¯ãâ¨\n\r", &cmd_mkdir},
|
||||
{"more", " ‚뢮¤¨â ᮤ¥à¦¨¬®¥ ä ©« íªà . ˆá¯®«ì§®¢ ¨¥:\n\r more <¨¬ï ä ©« >\n\r", &cmd_more},
|
||||
@ -28,3 +27,4 @@ const command_t COMMANDS[]=
|
||||
{"uptime", " <20>®ª §ë¢ ¥â uptime\n\r", &cmd_uptime},
|
||||
{"ver", " <20>®ª §ë¢ ¥â ¢¥àá¨î. ˆá¯®«ì§®¢ ¨¥:\n\r ver ;¢¥àá¨ï Shell\n\r ver kernel ;¢¥àá¨ï ¨ ®¬¥à ॢ¨§¨¨ ï¤à KolibriOS\n\r ver cpu ;¨ä®à¬ æ¨ï ® ¯à®æ¥áá®à¥\n\r", &cmd_ver},
|
||||
};
|
||||
|
||||
|
@ -124,3 +124,4 @@ return TRUE;
|
||||
}
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
|
@ -89,8 +89,8 @@ for (;;)
|
||||
if (CMD_POS < 255)
|
||||
{
|
||||
|
||||
if ( kol_key_control() & 0x40 ) // åñëè âêëþ÷¸í CapsLock
|
||||
if ( (kol_key_control() & 1) || (kol_key_control() & 2)) // åñëè íàæàòû øèôòû
|
||||
if ( kol_key_control() & 0x40 ) // ¥á«¨ ¢ª«îçñ CapsLock
|
||||
if ( (kol_key_control() & 1) || (kol_key_control() & 2)) // ¥á«¨ ¦ âë è¨äâë
|
||||
key = tolower(key);
|
||||
else
|
||||
key = toupper(key);
|
||||
@ -102,7 +102,7 @@ for (;;)
|
||||
break;
|
||||
};
|
||||
}
|
||||
else // îáðàáîòêà ðàñøèðåííûõ êëàâèø
|
||||
else // ®¡à ¡®âª à áè¨à¥ëå ª« ¢¨è
|
||||
{
|
||||
key = (key>>8)&0xff;
|
||||
// printf ("%d\n\r", key);
|
||||
@ -209,7 +209,7 @@ if (quote == 0)
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
typedef void (*handler1_t)(char* arg);
|
||||
typedef int (*handler1_t)(char* arg);
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
@ -219,6 +219,7 @@ char cmd[256];
|
||||
char args[256];
|
||||
unsigned arg;
|
||||
int i;
|
||||
int result;
|
||||
|
||||
trim(CMD);
|
||||
arg = command_get_cmd(cmd);
|
||||
@ -233,7 +234,15 @@ for (i = 0; i < NUM_OF_CMD; i++)
|
||||
{
|
||||
if (!strcmp(cmd, COMMANDS[i].name))
|
||||
{
|
||||
((handler1_t)COMMANDS[i].handler)(args);
|
||||
result = ((handler1_t)COMMANDS[i].handler)(args);
|
||||
if (result != TRUE)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" Error!\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" Žè¨¡ª !\n\r");
|
||||
#endif
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -251,3 +260,4 @@ executable_run(cmd, args);
|
||||
}
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
|
@ -65,3 +65,4 @@ else
|
||||
}
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
|
@ -89,3 +89,4 @@ for (i = 0; i < argc; i++)
|
||||
}
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
|
@ -14,3 +14,4 @@ k70.p21 = cmd;
|
||||
|
||||
return kol_file_70(&k70);
|
||||
}
|
||||
|
||||
|
@ -93,3 +93,4 @@ for (i = 0; i < 30; i++)
|
||||
|
||||
return 9;
|
||||
}
|
||||
|
||||
|
@ -100,3 +100,4 @@ return TRUE;
|
||||
}
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user