shell命令分为内部命令和外部命令

2020-06-20  本文已影响0人  技术是神奇的

Shell命令分类

Shell命令分为两种:

1)自带的命令称为内置命令。内部命令本质是一个自带的函数,当shell启动后,所有的内部命令会被加载进入内存,所以内部命令最快。

2)外部命令。外部命令本质也是一个函数,运行外部命令要开启一个新的进程,所以效率上比内置命令差很多。

用户输入一个命令后,Shell 先在内部命令中查找,如果有就执行;如果没有就在外部命令中查找,如果有就执行;都没有的话就报错,告诉用户该命令不存在。

常见的内部命令:echo、kill、cd、ls等

外部命令根据一个叫做 PATH 的环境变量去查找。该环境变量保存了 Shell 对外部命令的查找路径,如果在这些路径下找不到同名的命令,Shell 也不会再去其它路径下查找了,直接报错了。

使用echo命令可以查看当前PATH保存了哪些命令(MAC OS系统)

查看PATH

注:

1)不同路径以冒号(:)分隔,shell只会在上面这几个路径下查找外部命令

2)echo 命令用来输出一个字符串

定制化自己的shell命令

其实也可以自己编写程序,编译完成后放在以上任意一个路径下,就实现了自己定制化的shell程序

如实现自动求和的shell命令:getSum

#include <stdio.h>

#include <unistd.h>

#include <getopt.h>

#include <stdlib.h>

int main(int argc, char *argv[]){

    int start = 0;

    int end = 0;

    int sum = 0;

    int opt;

    char *optstring = ":s:e:";

    while((opt = getopt(argc, argv, optstring))!= -1){

        switch(opt){

            case 's': start = atoi(optarg); break;

            case 'e': end = atoi(optarg); break;

            case ':': puts("Missing parameter"); exit(1);

        }

    }

    if(start<0 || end<=start){

        puts("Parameter error"); exit(2);

    }

    for(int i=start; i<=end; i++){

        sum+=i;

    }

    printf("%d\n", sum);

    return 0;

}

将这段代码编译成名为 getSum 的应用程序,并放在/usr/local/bin目录下,然后在 Shell 中输入下面的命令,就可以计算 1+2+3 ...... +99+100 的值。

利用getSum计算

注:

1) -s 代表 开始 的标志,-e代表 结束 的标志

2)有了getopt.h 头文件中的 getopt() 该函数我们就不用自己去解析参数了

shell个性化地配置

对于普通用户来说,不管是否登录shell都会加载~/.bashrc 文件。

我们可以将自己的一些代码添加到 ~/.bashrc,这样每次启动 Shell 都可以个性化地配置。

具体配置方法这里不做介绍了。

尽管很渺小,但终究会伟大!

上一篇 下一篇

猜你喜欢

热点阅读