forked from KolibriOS/kolibrios
* help now displays the list of commands in three columns
* ps now displays the RAM size used by the process * ls now displays all files not in one but in several columns, the old single column output is still accessible via the key '-1' git-svn-id: svn://kolibrios.org@7024 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
6768b8ab22
commit
9e91bb1d1c
@ -43,12 +43,13 @@ help
|
|||||||
history cписок последних использованных команд
|
history cписок последних использованных команд
|
||||||
kill убивает процесс по <PID>. kill all убивает все процессы, слоты >=2
|
kill убивает процесс по <PID>. kill all убивает все процессы, слоты >=2
|
||||||
ls выводит список файлов в текущем каталоге или указанном <каталоге>
|
ls выводит список файлов в текущем каталоге или указанном <каталоге>
|
||||||
|
ключ '-1' выводит список в одну колонку, иначе многоколоночный вывод
|
||||||
mkdir cоздает <каталог>. Поддерживаются абсолюные и относительные пути
|
mkdir cоздает <каталог>. Поддерживаются абсолюные и относительные пути
|
||||||
more выводит содержимое <файла> на экран
|
more выводит содержимое <файла> на экран
|
||||||
ps показывает список процессов и их PID,
|
ps показывает список процессов и их PID,
|
||||||
если задать <имя>, покажет %CPU, используемую память и запомнит
|
если задать <имя>, покажет %CPU, используемую память и запомнит
|
||||||
внутреннюю переменную LASTPID (полезно для команды waitfor)
|
внутреннюю переменную LASTPID (полезно для команды waitfor)
|
||||||
<имя> - это первые 10 букв имени исполняемого файла без расширения
|
<имя> - это первые 11 букв имени исполняемого файла без расширения
|
||||||
pwd показывает имя текущего каталога
|
pwd показывает имя текущего каталога
|
||||||
reboot перезагружает компьютер или ядро KolibriOS. reboot kernel перезапустить ядро Kolibri
|
reboot перезагружает компьютер или ядро KolibriOS. reboot kernel перезапустить ядро Kolibri
|
||||||
rm удаляет <файл>
|
rm удаляет <файл>
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
Shell 0.7.7 // 06.02.2017 // Leency
|
||||||
|
* help ג¥¯¥אל ¢כ¢®₪¨ג ב¯¨ב®× ×®¬¬ ₪ ¢ גא¨ ×®«®×¨
|
||||||
|
* ps ג¥¯¥אל ¢כ¢®₪¨ג א §¬¥א <20>‡“, ¨ב¯®«ל§ד¥¬כ© ¯א®ז¥בב®¬
|
||||||
|
* ls ג¥¯¥אל ¢כ¢®₪¨ג ¢ב¥ ה ©«כ ¥ ¢ ®₪ד, ¢ ¥ב×®«ל×® ×®«®®×
|
||||||
|
א §¬¥א ×®«®®× א בח¨גכ¢ ¥גבן ¨בו®₪ן ¨§ ב ¬®£® ₪«¨®£® ¨¬¥¨ ה ©« ¢ ¯ ¯×¥
|
||||||
|
בג אכ© ¢כ¢®₪ ב¯¨ב×®¬ ¯® ¯א¥¦¥¬ד ₪®בגד¯¥ ח¥א¥§ ׫מח '-1'
|
||||||
|
|
||||||
Shell 0.7.6 // 06.02.2017 // Siemargl
|
Shell 0.7.6 // 06.02.2017 // Siemargl
|
||||||
* ” ©«®¢ë¥ ®¯¥à 樨 ¨á¯®«ì§ãîâ 64-bit à §¬¥àë ä ©«®¢.
|
* ” ©«®¢ë¥ ®¯¥à 樨 ¨á¯®«ì§ãîâ 64-bit à §¬¥àë ä ©«®¢.
|
||||||
cp <file> <dest> ⥯¥àì ¯®¨¬ ¥â, ¥á«¨ <dest> - ª â «®£
|
cp <file> <dest> ⥯¥àì ¯®¨¬ ¥â, ¥á«¨ <dest> - ª â «®£
|
||||||
|
@ -12,9 +12,14 @@ int i;
|
|||||||
|
|
||||||
if ( !strlen(cmd) )
|
if ( !strlen(cmd) )
|
||||||
{
|
{
|
||||||
|
int columns_max=3;
|
||||||
printf (available, NUM_OF_CMD);
|
printf (available, NUM_OF_CMD);
|
||||||
for (i = 0; i < NUM_OF_CMD; i++)
|
for (i = 0; i < NUM_OF_CMD; i++)
|
||||||
printf(" %s\n\r", COMMANDS[i].name);
|
{
|
||||||
|
printf(" %-12s", COMMANDS[i].name);
|
||||||
|
if ((i) && ((i+1)%columns_max == 0)) printf("\n\r");
|
||||||
|
}
|
||||||
|
if ((i)%columns_max != 0) printf("\n\r");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4,11 +4,13 @@ int cmd_ls(char dir[])
|
|||||||
|
|
||||||
kol_struct70 k70;
|
kol_struct70 k70;
|
||||||
unsigned *n;
|
unsigned *n;
|
||||||
unsigned num_of_file;
|
unsigned num_of_file; // number of files in directory
|
||||||
unsigned *t;
|
unsigned *t;
|
||||||
unsigned type_of_file;
|
unsigned type_of_file; // check is this a file or a folder
|
||||||
int i, result;
|
int i, result;
|
||||||
|
|
||||||
|
bool single_column_mode = FALSE;
|
||||||
|
|
||||||
|
|
||||||
k70.p00 = 1;
|
k70.p00 = 1;
|
||||||
k70.p04 = 0;
|
k70.p04 = 0;
|
||||||
@ -17,22 +19,27 @@ k70.p12 = 2; // just for test exist & read number of entries
|
|||||||
k70.p16 = (unsigned) malloc(32+k70.p12*560);
|
k70.p16 = (unsigned) malloc(32+k70.p12*560);
|
||||||
k70.p20 = 0;
|
k70.p20 = 0;
|
||||||
|
|
||||||
/// !!!
|
|
||||||
// …᫨ ls § ¯ã᪠¥âáï ¡¥§ ¯ à ¬¥â஢, ¯à®á¬ âਢ ¥¬ ⥪ã騩 ª â «®£
|
if (!strnicmp(dir,"-1",1))
|
||||||
|
{
|
||||||
|
single_column_mode = TRUE;
|
||||||
|
dir += 3;
|
||||||
|
}
|
||||||
|
|
||||||
if ( !strlen(dir) )
|
if ( !strlen(dir) )
|
||||||
k70.p21 = cur_dir;
|
k70.p21 = cur_dir;
|
||||||
else
|
else
|
||||||
k70.p21 = dir;
|
k70.p21 = dir;
|
||||||
|
|
||||||
result = kol_file_70(&k70);
|
result = kol_file_70(&k70);
|
||||||
if ( !((result==0) || (result==6)) ) // ¯à®¢¥à塞 áãé¥á⢮¢ ¨¥ ª â «®£
|
if ( !((result==0) || (result==6)) ) // check does the directory exists
|
||||||
{
|
{
|
||||||
free( (void*) k70.p16);
|
free( (void*) k70.p16);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
n = (unsigned*) (k70.p16+8);
|
n = (unsigned*) (k70.p16+8);
|
||||||
num_of_file = *n; // ç¨á«® ä ©«®¢ ¢ ª â «®£¥
|
num_of_file = *n;
|
||||||
|
|
||||||
// now read full directory
|
// now read full directory
|
||||||
k70.p12 = num_of_file;
|
k70.p12 = num_of_file;
|
||||||
@ -48,7 +55,12 @@ if ( !((result==0) || (result==6)) )
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < num_of_file; i++)
|
// if there was '-1' param, then show single column mode
|
||||||
|
// otherwise show files in several columns
|
||||||
|
if (single_column_mode == TRUE)
|
||||||
|
{
|
||||||
|
_SINGLE_COLUMN_MODE:
|
||||||
|
for (i = 0; i < num_of_file; i++)
|
||||||
{
|
{
|
||||||
printf (" %s", k70.p16+32+40+(264+40)*i);
|
printf (" %s", k70.p16+32+40+(264+40)*i);
|
||||||
t = (unsigned*) (k70.p16+32+(264+40)*i);
|
t = (unsigned*) (k70.p16+32+(264+40)*i);
|
||||||
@ -57,6 +69,39 @@ for (i = 0; i < num_of_file; i++)
|
|||||||
printf ("/");
|
printf ("/");
|
||||||
printf ("\n\r");
|
printf ("\n\r");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int longest_name_len = 0;
|
||||||
|
int console_window_width = 78; //need to get this value from console.obj if it's possible
|
||||||
|
for (i = 0; i < num_of_file; i++)
|
||||||
|
{
|
||||||
|
int current_name_len;
|
||||||
|
current_name_len = strlen( (char*)k70.p16+32+40+(264+40)*i);
|
||||||
|
if (current_name_len > longest_name_len) longest_name_len = current_name_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
longest_name_len+=2; //consider space separator and '/' symbol for folders
|
||||||
|
int columns_max = console_window_width / longest_name_len;
|
||||||
|
|
||||||
|
if (longest_name_len >= console_window_width) goto _SINGLE_COLUMN_MODE; //there was too long filename
|
||||||
|
|
||||||
|
for (i = 0; i < num_of_file; i++)
|
||||||
|
{
|
||||||
|
char cur_file[2048];
|
||||||
|
strncpy(cur_file, (char*)k70.p16+32+40+(304)*i, sizeof(cur_file)-2);
|
||||||
|
|
||||||
|
t = (unsigned*) (k70.p16+32+(304)*i);
|
||||||
|
type_of_file = *t;
|
||||||
|
|
||||||
|
if ( (0x10 == (type_of_file&0x10)) || (8 == (type_of_file&8)) ) strcat(cur_file, "/");
|
||||||
|
|
||||||
|
printf ("%*s", -longest_name_len, cur_file);
|
||||||
|
|
||||||
|
if ((i>0) && ((i+1)%columns_max == 0)) printf ("\n\r");
|
||||||
|
}
|
||||||
|
if ((i)%columns_max != 0) printf("\n\r");
|
||||||
|
}
|
||||||
|
|
||||||
free((void*)k70.p16);
|
free((void*)k70.p16);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -13,6 +13,8 @@ if (NULL == buf1k)
|
|||||||
|
|
||||||
sel = param && strlen(param) > 0;
|
sel = param && strlen(param) > 0;
|
||||||
|
|
||||||
|
printf (" PID NAME RAM KB\n\r", PID, buf1k+10);
|
||||||
|
|
||||||
for (i = 1;;i++)
|
for (i = 1;;i++)
|
||||||
{
|
{
|
||||||
n = kol_process_info(i, buf1k);
|
n = kol_process_info(i, buf1k);
|
||||||
@ -22,7 +24,7 @@ for (i = 1;;i++)
|
|||||||
{
|
{
|
||||||
if (!sel || 0 == strnicmp(param, buf1k+10, 10))
|
if (!sel || 0 == strnicmp(param, buf1k+10, 10))
|
||||||
{
|
{
|
||||||
printf (" %7d %s\n\r", PID, buf1k+10);
|
printf (" %7d %11s %d\n\r", PID, buf1k+10, (*(int*)(buf1k+26)+1)/1024);
|
||||||
if (sel)
|
if (sel)
|
||||||
{
|
{
|
||||||
LAST_PID = PID;
|
LAST_PID = PID;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#define SHELL_VERSION "0.7.6"
|
#define SHELL_VERSION "0.7.7"
|
||||||
|
|
||||||
extern char PATH[256];
|
extern char PATH[256];
|
||||||
extern char PARAM[256];
|
extern char PARAM[256];
|
||||||
|
@ -13,7 +13,7 @@ const command_t COMMANDS[]=
|
|||||||
{"help", " Gives help on commands. Usage:\n\r help ;it lists all builtins\n\r help <command> ;help on command\n\r", &cmd_help},
|
{"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},
|
{"history", " Lists used commands\n\r", &cmd_history},
|
||||||
{"kill", " Stops a running process. Usage:\n\r kill <PID of process>\n\r kill all\n\r", &cmd_kill},
|
{"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},
|
{"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 ls -1 ;lists the files in a single column\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},
|
{"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},
|
{"more", " Displays a file data to the screen. Usage:\n\r more <file name>\n\r", &cmd_more},
|
||||||
{"ps", " Lists the current processes running\n\r or shows more info on <procname> and save LASTPID\n\r", &cmd_ps},
|
{"ps", " Lists the current processes running\n\r or shows more info on <procname> and save LASTPID\n\r", &cmd_ps},
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
|
||||||
|
#define bool int
|
||||||
|
|
||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
#define TRUE 1
|
#define TRUE 1
|
||||||
|
Loading…
Reference in New Issue
Block a user