cmd.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #pragma once
  2. // cwd字符串的最大大小
  3. #define SHELL_CWD_MAX_SIZE 256
  4. #define INPUT_BUFFER_SIZE 512
  5. /**
  6. * @brief shell内建命令结构体
  7. *
  8. */
  9. struct built_in_cmd_t
  10. {
  11. char *name;
  12. int (*func)(int argc, char **argv);
  13. };
  14. extern struct built_in_cmd_t shell_cmds[];
  15. /**
  16. * @brief 寻找对应的主命令编号
  17. *
  18. * @param main_cmd 主命令
  19. * @return int 主命令编号
  20. */
  21. int shell_find_cmd(char *main_cmd);
  22. /**
  23. * @brief 运行shell内建的命令
  24. *
  25. * @param index 主命令编号
  26. * @param argc 参数数量
  27. * @param argv 参数列表
  28. */
  29. void shell_run_built_in_command(int index, int argc, char **argv);
  30. /**
  31. * @brief cd命令:进入文件夹
  32. *
  33. * @param argc
  34. * @param argv
  35. * @return int
  36. */
  37. int shell_cmd_cd(int argc, char **argv);
  38. /**
  39. * @brief 查看文件夹下的文件列表
  40. *
  41. * @param argc
  42. * @param argv
  43. * @return int
  44. */
  45. int shell_cmd_ls(int argc, char **argv);
  46. /**
  47. * @brief 显示当前工作目录的命令
  48. *
  49. * @param argc
  50. * @param argv
  51. * @return int
  52. */
  53. int shell_cmd_pwd(int argc, char **argv);
  54. /**
  55. * @brief 查看文件内容的命令
  56. *
  57. * @param argc
  58. * @param argv
  59. * @return int
  60. */
  61. int shell_cmd_cat(int argc, char **argv);
  62. /**
  63. * @brief 创建空文件的命令
  64. *
  65. * @param argc
  66. * @param argv
  67. * @return int
  68. */
  69. int shell_cmd_touch(int argc, char **argv);
  70. /**
  71. * @brief 删除命令
  72. *
  73. * @param argc
  74. * @param argv
  75. * @return int
  76. */
  77. int shell_cmd_rm(int argc, char **argv);
  78. /**
  79. * @brief 创建文件夹的命令
  80. *
  81. * @param argc
  82. * @param argv
  83. * @return int
  84. */
  85. int shell_cmd_mkdir(int argc, char **argv);
  86. /**
  87. * @brief 删除文件夹的命令
  88. *
  89. * @param argc
  90. * @param argv
  91. * @return int
  92. */
  93. int shell_cmd_rmdir(int argc, char **argv);
  94. /**
  95. * @brief 执行新的程序的命令
  96. *
  97. * @param argc
  98. * @param argv
  99. * @return int
  100. */
  101. int shell_cmd_exec(int argc, char **argv);
  102. /**
  103. * @brief 重启命令
  104. *
  105. * @param argc
  106. * @param argv
  107. * @return int
  108. */
  109. int shell_cmd_reboot(int argc, char **argv);
  110. /**
  111. * @brief 关于软件
  112. *
  113. * @param argc
  114. * @param argv
  115. * @return int
  116. */
  117. int shell_cmd_about(int argc, char **argv);
  118. /**
  119. * @brief 显示系统内存空间信息的命令
  120. *
  121. * @param argc
  122. * @param argv
  123. * @return int
  124. */
  125. int shell_cmd_free(int argc, char **argv);
  126. /**
  127. * @brief 解析shell命令
  128. *
  129. * @param buf 输入缓冲区
  130. * @param argc 返回值:参数数量
  131. * @param argv 返回值:参数列表
  132. * @return int
  133. */
  134. int parse_command(char *buf, int *argc, char ***argv);
  135. int shell_cmd_kill(int argc, char **argv);