1 shell解释器
shell解释器接收输入字符并马上显示,在输入回车后,根据字符串去查找命令。去哪找?去环境变量指定的路径去找。
# 显示环境变量
echo $PATH
# 结果如下
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/bin
什么是命令?命令就是可执行程序。
shell解释器根据第一个字符串去找应用程序,把后面的字符串作为参数传给应用程序,然后执行应用程序。为了测试shell,写了如下的c测试代码。
#include <stdio.h>
int main(int argc, char ** argv)
{
printf("-----shell test -----\r\n");
printf("input %d params, pointer_addr:%p\r\n", argc, argv);
for (int i = 0; i < argc; i++)
{
if (0 == i)
{
printf("path:%s\r\n", argv[0]);
}
printf("param(%d):%s\r\n", i, argv[i]);
}
printf("-----shell test -----\r\n");
return 0;
}
编译,添加可执行权限,设置PATH环境变量添加到指定的路径。
sudo gcc -o str_cmd str_cmd.c
sudo chmod +x str_cmd
# 环境变量添加路径
export PATH=$PATH:/home/ding/c_cmd
现在在shell中输入str_cmd,运行一下试试
command not found的原因:1 PATH指定的路径中无此程序;2 它不是可执行的程序。
2 命令提示符和命令格式
1 命令提示符
2 linux命令格式:命令 [选项] [参数] eg:ls -l /home,其中,命令这部分是肯定存在的,选项是以“-”来指明的,选项和参数不一定存在。
3 家目录。 ~ 表示家目录; . 表示当前路径; .. 表示上一级路径; - 表示上一次路径;
4 mkdir dir0:创建目录; mkdir -p dir0/dir1:连续创建多级目录(父目录和子目录)(-p:parent);
5 rmdir:删除目录;