forked from KolibriOS/kolibrios
better up/dwn arrows, docu
git-svn-id: svn://kolibrios.org@6822 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
624f3666a5
commit
0a3c951b56
@ -22,3 +22,36 @@ SC_CLS 6
|
||||
Программа должна сама заботиться о рациональном использовании процессорного времени.
|
||||
|
||||
Программа должна сама заботиться о закрытии именованной области.
|
||||
|
||||
Команды Shell
|
||||
=======================================
|
||||
В угловых скобках указаны параметры команд
|
||||
|
||||
about выводит версию программы shell
|
||||
|
||||
alias без параметра выводит список синонимов команд,
|
||||
с параметром вида newprg = old_name определяет синоним newprg
|
||||
если есть пробелы, нужно значение закавычить newprg = "old name"
|
||||
cd сменить текущий каталог на указанный параметром <каталог>
|
||||
clear очистка экрана
|
||||
cp копирование файла <источник> <результат>
|
||||
date показывает дату и время
|
||||
echo Выводит <данные> на экран
|
||||
exit завершение работы Shell
|
||||
free показывает объём оперативной памяти: всей, свободной и используемой
|
||||
help показать печень команд shell. С параметром <команда> справка по команде
|
||||
history cписок последних использованных команд
|
||||
kill убивает процесс по <PID>. kill all убивает все пользовательские процессы PID >=2
|
||||
ls выводит список файлов в текущем каталоге или указанном <каталоге>
|
||||
mkdir cоздает <каталог>. Поддерживаются абсолюные и относительные пути
|
||||
more выводит содержимое <файла> на экран
|
||||
ps показывает список процессов и их PID
|
||||
pwd показывает имя текущего каталога
|
||||
reboot перезагружает компьютер или ядро KolibriOS. reboot kernel перезапустить ядро Kolibri
|
||||
rm удаляет <файл>
|
||||
rmdir удаляет <каталог>
|
||||
shutdown выключает компьютер
|
||||
sleep приостанавливает работу Shell'а на заданное <время в сотых долях секунды>
|
||||
touch создаёт пустой <файл> или изменяет дату/время создания файла. Не работает
|
||||
uptime показывает время работу системы с момента загрузки
|
||||
ver показывает версию Shell, ver kernel - версию и номер ревизии ядра OS, ver cpu - информацию о процессоре
|
||||
|
@ -1,3 +1,6 @@
|
||||
Shell 0.7.5 // 01.01.2017 // Siemargl
|
||||
* <20>¥«×¨¥ ¡ £ה¨×בכ, ¨§¬¥¥ «®£¨× ®¡א ¡®גר בגא¥«®× ¢¢¥או/¢¨§, חג®¡כ × × ד ¢ב¥ו
|
||||
|
||||
Shell 0.7.4 // 23.01.2014 // Albom
|
||||
* <20> ¡®â á ¡ãä¥à®¬ ®¡¬¥ (ª®¯¨à®¢ ¨¥ Ctrl+C ¨ ¢áâ ¢ª Ctrl+V áâப¨ 楫¨ª®¬)
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
#SHS
|
||||
|
||||
about
|
||||
echo ‚¢¥¤¨â¥ 'help' ¤«ï á¯à ¢ª¨
|
||||
echo
|
||||
ver kernel
|
||||
echo
|
||||
echo ‚¢¥¤¨â¥ 'help' ¤«ï á¯à ¢ª¨
|
||||
echo
|
||||
|
@ -2,11 +2,7 @@
|
||||
int cmd_about(char param[])
|
||||
{
|
||||
|
||||
char message[] = {
|
||||
"\
|
||||
\n\r\
|
||||
Shell %s\n\r\n\r\
|
||||
"};
|
||||
char message[] = {"Shell %s\n\r"};
|
||||
|
||||
printf(message, SHELL_VERSION);
|
||||
return TRUE;
|
||||
|
@ -4,7 +4,7 @@ int cmd_alias(char arg[])
|
||||
|
||||
int result;
|
||||
|
||||
if (NULL == arg)
|
||||
if (NULL == arg || '\0' == arg[0])
|
||||
{
|
||||
alias_list();
|
||||
return TRUE;
|
||||
|
@ -4,7 +4,7 @@ int cmd_history(char arg[])
|
||||
|
||||
int i;
|
||||
|
||||
for (i = 0; i < CMD_HISTORY_NUM_REAL; i++)
|
||||
for (i = CMD_HISTORY_NUM_REAL - 1; i >= 0; i--)
|
||||
{
|
||||
printf("%s\n", CMD_HISTORY[i]);
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ kol_struct70 k70;
|
||||
char temp[256];
|
||||
unsigned result;
|
||||
|
||||
if (NULL == file)
|
||||
if (NULL == file || strlen(file) == 0)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf (" rm <filename>\n\r");
|
||||
|
@ -6,7 +6,7 @@ char temp[256];
|
||||
kol_struct70 k70;
|
||||
unsigned result;
|
||||
|
||||
if (NULL == dir)
|
||||
if (NULL == dir || strlen(dir) == 0)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" rmdir <directory>\n\r");
|
||||
|
@ -6,7 +6,7 @@ kol_struct70 k70;
|
||||
char temp[256];
|
||||
unsigned result;
|
||||
|
||||
if (NULL == file)
|
||||
if (NULL == file || strlen(file) == 0)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" touch <filename>\n\r");
|
||||
|
@ -14,7 +14,7 @@ if (!strcmp(param, "kernel"))
|
||||
vB = kvbuf+1;
|
||||
vC = kvbuf+2;
|
||||
vD = kvbuf+3;
|
||||
Rev = kvbuf+5;
|
||||
Rev = (unsigned*)(kvbuf + 5);
|
||||
|
||||
#if LANG_ENG
|
||||
printf (" KolibriOS v%d.%d.%d.%d. Kernel SVN-rev.: %d\n\r", *vA, *vB, *vC, *vD, *Rev);
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
#define SHELL_VERSION "0.7.4"
|
||||
#define SHELL_VERSION "0.7.5"
|
||||
|
||||
extern char PATH[256];
|
||||
extern char PARAM[256];
|
||||
@ -14,7 +14,7 @@ unsigned ALIAS_NUM = 0;
|
||||
|
||||
/// ===========================================================
|
||||
|
||||
#define CMD_HISTORY_NUM 10
|
||||
#define CMD_HISTORY_NUM 11
|
||||
|
||||
char CMD[256];
|
||||
char CMD_HISTORY[CMD_HISTORY_NUM][256];
|
||||
|
@ -1,5 +1,6 @@
|
||||
#SHS
|
||||
|
||||
ver kernel
|
||||
echo Type 'help' for help
|
||||
echo
|
||||
ver kernel
|
||||
echo
|
||||
echo Type 'help' for help
|
||||
echo
|
||||
|
@ -1,5 +1,6 @@
|
||||
#SHS
|
||||
|
||||
ver kernel
|
||||
echo ‚¢¥¤¨â¥ 'help' ¤«ï á¯à ¢ª¨
|
||||
echo
|
||||
ver kernel
|
||||
echo
|
||||
echo ‚¢¥¤¨â¥ 'help' ¤«ï á¯à ¢ª¨
|
||||
echo
|
||||
|
@ -6,9 +6,11 @@ void command_history_add()
|
||||
|
||||
int i;
|
||||
|
||||
if ('\0' == CMD[0]) return;
|
||||
|
||||
for (i = 0; i < CMD_HISTORY_NUM_REAL; i++)
|
||||
if ( 0 == strcmp( CMD_HISTORY[i], CMD ) )
|
||||
return;
|
||||
if ( 0 == strcmp( CMD_HISTORY[i], CMD ) )
|
||||
return;
|
||||
|
||||
for (i = CMD_HISTORY_NUM_REAL; i > 0 ; i--)
|
||||
strcpy(CMD_HISTORY[i], CMD_HISTORY[i-1]);
|
||||
@ -18,7 +20,7 @@ strcpy(CMD_HISTORY[0], CMD);
|
||||
if (CMD_HISTORY_NUM_REAL < CMD_HISTORY_NUM-1)
|
||||
CMD_HISTORY_NUM_REAL++;
|
||||
|
||||
CMD_NUM = 0;
|
||||
CMD_NUM = -1;
|
||||
|
||||
}
|
||||
|
||||
@ -48,41 +50,38 @@ for (;;)
|
||||
switch (key)
|
||||
{
|
||||
case 27: // ESC
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
break;
|
||||
|
||||
|
||||
case 13: // ENTER
|
||||
printf("\n\r");
|
||||
command_history_add();
|
||||
return;
|
||||
|
||||
|
||||
case 8: // BACKSPACE
|
||||
if (cmdPos > 0)
|
||||
{
|
||||
for (i = cmdPos-1; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
for (i = cmdPos-1; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf (" ");
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf (" ");
|
||||
|
||||
for (i = 0; i < cmdLen; i++)
|
||||
printf ("%c %c", 8, 8);
|
||||
for (i = 0; i < cmdLen; i++)
|
||||
printf ("%c %c", 8, 8);
|
||||
|
||||
printf("%s", CMD);
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
|
||||
cmdPos--;
|
||||
cmdLen--;
|
||||
cmdPos--;
|
||||
cmdLen--;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -102,14 +101,14 @@ for (;;)
|
||||
if ((int)*(clipBuf+4)==0) // text?
|
||||
{
|
||||
if ((int)*(clipBuf+8)==1) // 866 encoding?
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
{
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf(" ");
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
cmdLen = 0;
|
||||
cmdPos = 0;
|
||||
CMD[0] = '\0';
|
||||
|
||||
// strcpy_n
|
||||
for (i = 0; i < 255; i++)
|
||||
@ -128,6 +127,7 @@ for (;;)
|
||||
printf("%s", CMD);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -147,7 +147,7 @@ for (;;)
|
||||
kol_clip_set(12+cmdLen, clipCopy);
|
||||
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
@ -175,59 +175,57 @@ for (;;)
|
||||
cmdPos++;
|
||||
cmdLen++;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
key = (key>>8)&0xff;
|
||||
switch (key)
|
||||
{
|
||||
key = (key>>8)&0xff;
|
||||
switch (key)
|
||||
{
|
||||
case 83: // Del
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
case 83: // Del
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
CMD[i] = CMD[i+1];
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf(" ");
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf(" ");
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf("%c", CMD[i]);
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
printf("%c", CMD[i]);
|
||||
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
for (i = 0; i < cmdLen-cmdPos; i++)
|
||||
printf("%c", 8);
|
||||
|
||||
cmdLen--;
|
||||
}
|
||||
cmdLen--;
|
||||
}
|
||||
break;
|
||||
|
||||
break;
|
||||
|
||||
case 75: // Left
|
||||
if (cmdPos > 0)
|
||||
{
|
||||
printf("%c", 8);
|
||||
cmdPos--;
|
||||
}
|
||||
break;
|
||||
case 75: // Left
|
||||
if (cmdPos > 0)
|
||||
{
|
||||
printf("%c", 8);
|
||||
cmdPos--;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 77: // Right
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
printf("%c", CMD[cmdPos]);
|
||||
cmdPos++;
|
||||
}
|
||||
break;
|
||||
case 77: // Right
|
||||
if (cmdPos < cmdLen)
|
||||
{
|
||||
printf("%c", CMD[cmdPos]);
|
||||
cmdPos++;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 80: // Down
|
||||
|
||||
if (CMD_HISTORY_NUM_REAL > 0)
|
||||
case 72: // Up
|
||||
if (CMD_HISTORY_NUM_REAL > 0 && CMD_NUM >= -1)
|
||||
{
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
@ -236,12 +234,12 @@ for (;;)
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
|
||||
if (CMD_NUM < CMD_HISTORY_NUM_REAL-1)
|
||||
CMD_NUM++;
|
||||
else
|
||||
if (CMD_NUM < CMD_HISTORY_NUM_REAL-1)
|
||||
CMD_NUM++;
|
||||
/* else
|
||||
CMD_NUM = 0;
|
||||
|
||||
printf( "%s", CMD_HISTORY[CMD_NUM] );
|
||||
*/
|
||||
printf("%s", CMD_HISTORY[CMD_NUM]);
|
||||
strcpy(CMD, CMD_HISTORY[CMD_NUM]);
|
||||
cmdLen = strlen(CMD);
|
||||
cmdPos = strlen(CMD);
|
||||
@ -251,8 +249,8 @@ for (;;)
|
||||
break;
|
||||
|
||||
|
||||
case 72: // Up
|
||||
if (CMD_HISTORY_NUM_REAL > 0)
|
||||
case 80: // Down
|
||||
if (CMD_HISTORY_NUM_REAL > 0 && CMD_NUM >= 0)
|
||||
{
|
||||
|
||||
for (i = cmdPos; i < cmdLen; i++)
|
||||
@ -261,12 +259,12 @@ for (;;)
|
||||
for (i = cmdLen; i > 0; i--)
|
||||
printf("%c %c", 8, 8);
|
||||
|
||||
if (CMD_NUM > 0)
|
||||
CMD_NUM--;
|
||||
else
|
||||
if (CMD_NUM > 0)
|
||||
CMD_NUM--;
|
||||
/* else
|
||||
CMD_NUM = CMD_HISTORY_NUM_REAL-1;
|
||||
|
||||
printf( "%s", CMD_HISTORY[CMD_NUM] );
|
||||
*/
|
||||
printf("%s", CMD_HISTORY[CMD_NUM]);
|
||||
strcpy(CMD, CMD_HISTORY[CMD_NUM]);
|
||||
cmdLen = strlen(CMD);
|
||||
cmdPos = strlen(CMD);
|
||||
@ -278,10 +276,10 @@ for (;;)
|
||||
case 0: // console window closed
|
||||
cmd_exit(NULL);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -296,41 +294,41 @@ if (CMD[0]=='"')
|
||||
quote = 1;
|
||||
|
||||
if (quote == 0)
|
||||
{
|
||||
for (i=0;;i++)
|
||||
{
|
||||
cmd[i] = CMD[i];
|
||||
if (0 == cmd[i])
|
||||
return i;
|
||||
if ( iswhite(cmd[i]) )
|
||||
{
|
||||
for (i=0;;i++)
|
||||
{
|
||||
cmd[i] = '\0';
|
||||
break;
|
||||
cmd[i] = CMD[i];
|
||||
if (0 == cmd[i])
|
||||
return i;
|
||||
if ( iswhite(cmd[i]) )
|
||||
{
|
||||
cmd[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
return i+1;
|
||||
}
|
||||
return i+1;
|
||||
}
|
||||
else
|
||||
{
|
||||
len = 0;
|
||||
for (i=1;;i++)
|
||||
{
|
||||
cmd[len] = CMD[i];
|
||||
if (0 == cmd[len])
|
||||
else
|
||||
{
|
||||
len = 0;
|
||||
for (i=1;;i++)
|
||||
{
|
||||
i--;
|
||||
break;
|
||||
cmd[len] = CMD[i];
|
||||
if (0 == cmd[len])
|
||||
{
|
||||
i--;
|
||||
break;
|
||||
}
|
||||
if ( cmd[len] == '"' )
|
||||
{
|
||||
cmd[len] = '\0';
|
||||
break;
|
||||
}
|
||||
len++;
|
||||
}
|
||||
if ( cmd[len] == '"' )
|
||||
{
|
||||
cmd[len] = '\0';
|
||||
break;
|
||||
}
|
||||
len++;
|
||||
trim(cmd);
|
||||
return i+1;
|
||||
}
|
||||
trim(cmd);
|
||||
return i+1;
|
||||
}
|
||||
}
|
||||
|
||||
/// ===========================================================
|
||||
@ -361,14 +359,14 @@ for (i = 0; i < NUM_OF_CMD; i++)
|
||||
if (!strcmp(cmd, COMMANDS[i].name))
|
||||
{
|
||||
result = ((handler1_t)COMMANDS[i].handler)(args);
|
||||
if (result != TRUE)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" Error!\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" Žè¨¡ª !\n\r");
|
||||
#endif
|
||||
}
|
||||
if (result != TRUE)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" Error!\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" Žè¨¡ª !\n\r");
|
||||
#endif
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -58,13 +58,13 @@ asm volatile ("int $0x40"::"a"(11));
|
||||
}
|
||||
|
||||
|
||||
void __attribute__((__always_inline__)) kol_paint_start()
|
||||
inline void __attribute__((__always_inline__)) kol_paint_start()
|
||||
{
|
||||
asm volatile ("int $0x40"::"a"(12), "b"(1));
|
||||
}
|
||||
|
||||
|
||||
void __attribute__((__always_inline__)) kol_paint_end()
|
||||
inline void __attribute__((__always_inline__)) kol_paint_end()
|
||||
{
|
||||
asm volatile ("int $0x40"::"a"(12), "b"(2));
|
||||
}
|
||||
@ -347,7 +347,7 @@ switch (*fname)
|
||||
|
||||
|
||||
|
||||
void __attribute__((__always_inline__)) kol_screen_wait_rr()
|
||||
inline void __attribute__((__always_inline__)) kol_screen_wait_rr()
|
||||
{
|
||||
asm volatile ("int $0x40"::"a"(18), "b"(14));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user