写一个命令行程序

go确实可以写命令行程序,配合go功能丰富的标准库,可以diy很酷的cli。python也可以。简单的操作只用shell也行。

所以今晚很无聊地用go、python和shell分别写了命令行程序。

其实实现简单的命令行还是比较容易入门的,要解决的问题有两个:

第一个问题是获取脚本中传入的命令行参数

  go的有标准库flag,在编写脚本的时候就将传参和自定义变量名绑定。

  python中可以通过引用引入sys模块,在sys.argv列表中获取参数,

  shell中直接通过$#获取传入参数的个数,然后$1、$2...分别为第1、2...个参数

第二个问题是,go程序编译好后,或python、shell脚本编写好后的程序调用问题

go编译完是二进制文件,要执行时只要和shell脚本一样直接输入路径回车即可,但是如果想在整个系统的各个位置输入某个命令直接执行该文件,我们可以通过给系统添加自定义命令的方式:

Linux系统下打开$HOME的.bashrc

Mac系统下打开$HOME的.bash_profile

追加一行alias命令,比如:

//用shell语法
alias qqm="open /Applications/QQMusic.app" //打开qq音乐

保存文件,然后再敲入下面命令重载文件:

source .bashrc  //如果你用的Linux
source .bash_profile  //如果你用的macOS

此时在终端敲入:qqm,回车,就会立即打开QQ音乐。

我们可以通过这种方式实现在系统各个终端通过简单的命令调用我们的脚本。

 

而python不一样,因为要通过python xxx.py来执行,我目前的想法是:

1.执行自定义命令的时候调用shell脚本,在shel脚本里再调用“python xxx.py”,

2.命令行参数方面,在shell层获取参数,传给python脚本。

后来试了下这种方式,确实可行。。因为shell提供了一个$@语法用来将传入的$1、$2...以字符串形式输出:

//shell中下面代码会执行目标脚本并将参数尽数传给python脚本
testPy="python /path/to/my/python $@"

再后来。。发现原来可以直接像shell一样在python脚本第一行加入:

#! /usr/bin/env python3

此时就可以像执行shell一样执行python脚本了

不得不说shell编程确实很简洁。。。有时间要补一下。

 

下边是推荐的一些文章:

用 Golang 来编写 cli 程序吧,Happy~

用Python写CLI:参数解析

 

Mac添加命令别名

Linux 添加自定义命令

 

Introduction to Shell Programming

The Shell Scripting Tutorial

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值