《轻松学linux》第五课、在linux添加自定义命令


  • administrators

    上一节测试题目

    自己动手修改输出值

    SHELL编程的第一行

    shell编程的第一行,一般都是下面这种样子:

    #!/bin/bash
    

    这一行是有特殊意义的,我们来解释下:

    • #! 这两个符合连接在一起是说明这一行是声明解释器的,也就是用什么程序来运行。

    • /bin/bash 这个是说解释器的路径,在我们的ip2addr命令中我们就是用bash解释器。

    上面的#!在shell编程中是固定的,而后面的/bin/bash是可变的,如果是python语言,就会是/usr/bin/python

    什么是PATH

    PATH顾名思义就是路径的意思了,在linux系统中它是一个环境变量,我们都可以先查看下自己机器的环境变量有那些,使用命令:

    env
    

    它列出的内容就是我们所有的环境变量。其中PATH这个变量负责的是系统搜索可执行文件的路径。

    如果一个命令不在系统的PATH路径内,我们想执行它就要写上它的相对路径或者绝对路径。如:

    ./ip2addr
    /root/ip2addr
    

    所以为了方便使用,我们要将可执行命令放入PATH的路径集合内,我们可以修改/etc/profile文件让其全局生效,也可以修改/root/.bash_profile只让root用户生效。修改内容如下:

    PATH=$PATH:/opt/bin
    export PATH
    

    修改完成后,想让修改的环境变量立即生效,需要source /etc/profile或者source ~/.bash_profile

    这样就可以直接执行ip2addr命令了。

    shell编程中参数的传递

    在shell编程中想读取参数很简单用$跟上数字顺序就可以了,下面我们演示下:

    • $0 代表当前执行的脚本文件名

    • $1 $2 $3 代表第一个、第二个和第三个参数

    • $# 代表参数的个数

    • $* 代表除了$0 外的所有参数

    上面这些是比较常用的一些用法,还有一些不常用的自行搜索吧。

    最终的脚本

    学会了参数,我们将脚本改下,如下:

    #!/bin/bash
    curl -s http://ip.taobao.com/service/getIpInfo.php?ip=223.5.5.5|jq '.data.country + .data.region + .data.city'
    

    然后我们测试下:

    ip2addr 114.114.114.114
    

    看看结果是不是正确呢?

    本节测试

    自己动手添加几个自定义的命令,使用我们已经学过的ls、mv等命令。

    下一节预告

    继续完善ip2addr,目前它只支持ip地址为参数,如果我用域名为参数就出错了,下节我就是让它也支持域名的方式。将要用的dignslookup命令,以及新知识grepawk

    视频



  • @think 我来消灭零回复,版主辛苦了。


登录后回复

Looks like your connection to 首页 was lost, please wait while we try to reconnect.