cmd.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #pragma once
  2. // cwd字符串的最大大小
  3. #define SHELL_CWD_MAX_SIZE 256
  4. /**
  5. * @brief shell内建命令结构体
  6. *
  7. */
  8. struct built_in_cmd_t
  9. {
  10. char *name;
  11. int (*func)(int argc, char **argv);
  12. };
  13. extern struct built_in_cmd_t shell_cmds[];
  14. /**
  15. * @brief 寻找对应的主命令编号
  16. *
  17. * @param main_cmd 主命令
  18. * @return int 主命令编号
  19. */
  20. int shell_find_cmd(char *main_cmd);
  21. /**
  22. * @brief 运行shell内建的命令
  23. *
  24. * @param index 主命令编号
  25. * @param argc 参数数量
  26. * @param argv 参数列表
  27. */
  28. void shell_run_built_in_command(int index, int argc, char **argv);
  29. /**
  30. * @brief cd命令:进入文件夹
  31. *
  32. * @param argc
  33. * @param argv
  34. * @return int
  35. */
  36. int shell_cmd_cd(int argc, char **argv);
  37. /**
  38. * @brief 查看文件夹下的文件列表
  39. *
  40. * @param argc
  41. * @param argv
  42. * @return int
  43. */
  44. int shell_cmd_ls(int argc, char **argv);
  45. /**
  46. * @brief 显示当前工作目录的命令
  47. *
  48. * @param argc
  49. * @param argv
  50. * @return int
  51. */
  52. int shell_cmd_pwd(int argc, char **argv);
  53. /**
  54. * @brief 查看文件内容的命令
  55. *
  56. * @param argc
  57. * @param argv
  58. * @return int
  59. */
  60. int shell_cmd_cat(int argc, char **argv);
  61. /**
  62. * @brief 创建空文件的命令
  63. *
  64. * @param argc
  65. * @param argv
  66. * @return int
  67. */
  68. int shell_cmd_touch(int argc, char **argv);
  69. /**
  70. * @brief 删除命令
  71. *
  72. * @param argc
  73. * @param argv
  74. * @return int
  75. */
  76. int shell_cmd_rm(int argc, char **argv);
  77. /**
  78. * @brief 创建文件夹的命令
  79. *
  80. * @param argc
  81. * @param argv
  82. * @return int
  83. */
  84. int shell_cmd_mkdir(int argc, char **argv);
  85. /**
  86. * @brief 删除文件夹的命令
  87. *
  88. * @param argc
  89. * @param argv
  90. * @return int
  91. */
  92. int shell_cmd_rmdir(int argc, char **argv);
  93. /**
  94. * @brief 执行新的程序的命令
  95. *
  96. * @param argc
  97. * @param argv
  98. * @return int
  99. */
  100. int shell_cmd_exec(int argc, char **argv);
  101. /**
  102. * @brief 重启命令
  103. *
  104. * @param argc
  105. * @param argv
  106. * @return int
  107. */
  108. int shell_cmd_reboot(int argc, char **argv);