Очень функциональный шелл

...
  • Albom wrote:
    А почему бы не продублировать комманды? чтобы и dir, и ls работали и выполняли одну и ту же функцию.
    не надо! я принципиально против такого бреда. или то, или другое. кому надо будет - скомпилирует со своими командами, хоть пусть команда вывода списка файлов будет CATALOG (как на APPLE ][ :)). надо придерживаться хоть каких-то стандартов - я выбрал стандарт UNIX.
    Albom,
    I agree with the concept of double-commands, triple commands, or n*commands having the same meaning. If done right, this makes an OS much easier for any user. If a user comes from MS Windows, they may think "dir" for directory listing, where a *nix user may think "ls" for directory listing, or perhaps catalog for mac people.

    Therefore, I think having synonyms for commands is a great feature that Kolibri could implement. There should be a "base" or "primary" or "standard" version of a command, plus an additional easy-to-maintain list of synonyms that a user can manage. Perhaps "ls" is the "standard" for a directory listing, but the shell-command infrastructure should also make it easy to add user-defined synonyms so I can type either ls, cat, dir, listdir, showmefiles, or whatever else I want.

    Just my thoughts.

    By the way: this is my first posting on here, and I really really like what you have all done with KolibriOS. I think it has huge potential, and I hope to learn enough to be able to help contribute to the coding work.

    Mike
    Mike
  • Чем обоснован выбор в сторону Линуксовского стандарта мне _не_понятно_
    Выбор основан на моём личном опыте. Когда на моём первом компе стоял DR-DOS, я использовал VC и понятное дело никаких команд не вводил, хотя я их знал (была даже книга "IBM для пользователей", Фигурнова вроде, хотя точно не помню). Потом мне поставили 95 винду. Там про командную строку я вообще не вспоминал. Когда я поставил на комп Linux (о да!), там не было ни одного файлового менеджера (вернее всё-таки был один, но до mc ему было очень далеко, а mc достать было трудно, так как интернет развития у нас ещё не получил) и приходилось все команды набирать вручную. Но делалось это довольно удобно (история команд стрелочками и автоподстановка по tab). Потом я достал иксы... Но это уже другая история...

    How are you going to link it to applications? I hope not through IPC...
    I don't know yet... For the first time there will not be applications linked to the shell. I hope I'll make a script mechanism. I think scripts will have "an assembler syntax" but with a lot of features such as i/o redirecting and maybe a realization of pipes.

    I agree with the concept of double-commands, triple commands, or n*commands having the same meaning.
    OK, if people need such feature then I could try to make it using INI-file. So you could call commands as you want. But I think I'll do it in version 0.3 or 0.4 because I have a lot of plans now.


    Btw, I have almost done version 0.2. ;)
  • Судя по всему ты поюзал ацкую строку Линукса и посчитал её удобной, хотя тебе небыло с чем сравнивать, ведь ДОС ты не юзал, с твоих слов.
    Это запоминание было и в ДОСе по стрелочке вверх, по табу оно подставляет имя файла.
    Из хаоса в космос
  • Версия 0.2
    * добавил новые функции
    * написал собственную процедуру ввода команды
    Это запоминание было и в ДОСе по стрелочке вверх, по табу оно подставляет имя файла.
    по-моему не было там запоминания по стрелочке вверх, а только по стрелочке вправо - запоминание последней команды. А таба и поныне нет (по-крайней мере я в 2000 проверил - НЕТУ!!!)
    Attachments
    shell-0.2.zip (23.25 KiB)
    Downloaded 302 times
  • Albom wrote: Выбор основан на моём личном опыте. Когда на моём первом компе стоял DR-DOS, я использовал VC и понятное дело никаких команд не вводил, хотя я их знал (была даже книга "IBM для пользователей", Фигурнова вроде, хотя точно не помню). Потом мне поставили 95 винду. Там про командную строку я вообще не вспоминал. Когда я поставил на комп Linux (о да!), там не было ни одного файлового менеджера (вернее всё-таки был один, но до mc ему было очень далеко, а mc достать было трудно, так как интернет развития у нас ещё не получил) и приходилось все команды набирать вручную. Но делалось это довольно удобно (история команд стрелочками и автоподстановка по tab). Потом я достал иксы... Но это уже другая история...
    This is a perfect example of why command-synonyms make a lot of sense in my opinion. We each have different experience and knowledge, and we each can think of the same shell-functionality as a different command based on our experience. So, it does not matter very much what the "standard" command is for any particular task, as long as the command is listed in simple help-file or description text so another person can think "oh, that is the command that I think of as ..." and create a synonym for it.

    This leads me to question about configuration data in Kolibri. Is there already a standard location for placing global INI files like what may be required to implement command-synonyms lookup-table? I am trying to learn how such things are done properly in Koblibri.

    Thanks for considering, and maybe I will see this feature in v.3 or .4 :)
    Mike
  • nice going

    ps: you have made a spelling mistake in english documentation: aviable should be available ;)
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
  • Albom wrote:OK, if people need such feature then I could try to make it using INI-file.
    Albom, сделай команду alias, и спорить будет больше не о чем. Каждый настроит команды так, как ему удобно.
  • ps: you have made a spelling mistake in english documentation: aviable should be available
    Thanks! I thought I know English well but I still make a lot of mistakes...
    Albom, сделай команду alias
    I'll make alias command, but where should Shell save preferences? I think the only right way is using INI (I try to write an gcc interface of libini).
  • Albom wrote:I'll make alias command, but where should Shell save preferences?
    Put shell commands to the logon script, like .profile (or .bash_login) in *nix.
  • Версия 0.3


    1) Возможность запуска скриптов.
    - каждая строка должна представляет собой команду
    - строкой считается набор символов, который заканчивается CR+LF (Windows) или LF(UNIX) или CR(Mac)
    - если строка начинается с #, то вся строка (т.е. комментарий) игнорируется
    - скрипт должен начитаться с #SHS
    - при запуске шелла автоматически запускается скрипт .shell

    2) История из 5 (можно изменить при компиляции) введённых команд.
    - перемещение по истории - UP/DOWN

    3) Команда alias, которая позволяет вводить синонимы для команд.
    - до 256 (можно изменить при компиляции) синонимов
    - пока работает только добавление и просмотр синонимов, а отработка пока не реализована.
    Attachments
    shell-0.3.zip (26.98 KiB)
    Downloaded 301 times
  • По сравнению с версией 0.1 программа стала гораздо функциональней. Отличный проект! Желаю успехов в дальнейшем развитии.

    ЗЫ. Кстати, команду "free" лучше переименовать в "mem" или "meminfo", хотя если будет отработка alias'ов, то это не так важно :)
  • to Albom
    От нефиг делать нашёл баг: если передать в строку ввода что содерщащее %s, %u, %x и т.п. то потом при нажатии кнопок вверх или вниз shell передаёт консоли строку как есть, но так как кроме строки ничего не передавалось, то сначала выталкивается из стека адрес возврата из printf, затем из функции вызвавшей printf и т.д. Ес-сно консоль умирает (не, не умирает, но выдаёт что угодно кроме того, что нужно). Я о таком виде багов прочитал в одной статье Криса Касперски (ака Мыщъх), решил попробовать - есть такое дело. Исправление простое - вместо printf(&string) писать printf("%s",&string), где string - твоя строка. Да это медленнее и больше, зато надёжнее.
  • Версия 0.4

    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. ( MEMENTO MORI! - Моментально... в море! :) )
    - просмотр текстовых и бинарных файлов (вроде бы задача простая, но пришлось повозиться с управляющими символами)
    - очень не рекомендуется просматривать большие файлы


    to Nable
    спасибо. я в одном месте уже сам исправил, ну а в такой важной части и не заметил! в следующей версии исправлю.
    Attachments
    shell-0.4.zip (29.12 KiB)
    Downloaded 346 times
  • Круто, молодец! :)
  • Who is online

    Users browsing this forum: No registered users and 4 guests