开发 Shell 命令

前提

​ 工作中我们经常遇到很多重复的事情,例如最近我就遇到一个,在debug的时候需要经常到项目里面的logs文件夹下面查看日志,基于这个前提再加上想把之前看linux的一些知识应用一下,写了一个命令,效率倍感提升。

脚本超链接: github

什么是Shell

​ 虽说这个不需要解释了,但是这里还是要占个位,以便不知道的人,通过这个标题去 baidu google查询自己需要的知识

啰嗦

​ 我认为看这篇文章的人,说明对类 unix 系统的执行流程不太了解。

​ 另外这篇文章是基于 Mac 系统讲解的,对于类 unix 系统应该差别不会太大

我一直认同的一个观点,一定要了解程序运行背后的原理,在这里给大家简单介绍一下我个人认为在开发 shell 过程中应该了解的,方便大家理解并记忆,我本人的知识范围有限,有描述不清楚或者不对的地方还请指正。

​ 我们将在下面通过编写一个实例来进行讲解,目标编写一个自己的命令,这个命令是为了满足我每天 debug 的时候需要查看日志文件

命令、变量、文件

命令

export 在这里您可以理解为设置一个环境变量,例如:export PATH="/usr/local/sbin:$PATH"

source 当你的 .bash_profile 文件变更了,需要用 sorce .bash_profile 重新加载一遍

变量

$PATH 系统环境变量,你可以简单的理解一些目录的集合,通过 echo $PATH 可以看到

$HOME 当前用户的家目录

文件

.bashrc or .bash_profile 用户个人的启动文件。可以用来扩展或重写全局配置脚本中的设置。

​ 你可以在你的终端命令行输入 echo; ls -al; 会进入到你的家目录下面列出所有文件(包括隐藏文件),在不同的类 unix 系统中他们的名字可能不太一样,通常会有一些以 . 开头的文件

shell 如何加载?

​ 我们今天自制一个称为 plogs 的命令 , 当在你的终端输入 plogs 或者任何你想开发的终端命令的时候或许会报出类似如下的错误:

command not found: plog

​ 这个错误的原因是终端没有在 $PATH 环境中找到这个命令

​ 另外通常你想要开发一个命令的时候可以用 type [your command] 来检测一下是否存在于系统中, 以免你自己的命令覆盖掉系统的命令, 类似下面,就是检测了系统中是否存在一个 p 命令

$ type p
p not found

如果这个命令存在,会表现成如下这样子:

# rex @ HR in ~ [11:09:22] C:1
$ type ls
ls is an alias for ls -G

# rex @ HR in ~ [11:10:32]
$ type plogs
plogs is /Users/rex/bin/plogs

​ 当你执行 plogs 这个命令的时候的时候系统要去 $PATH 这个目录集合里面挨个去找,有没有一个可执行的命令文件,例如上面就是在 /Users/rex/bin 下面找到了匹配的可执行文件

那如何添加你存放可执行文件的目录放到 $PATH 中呢?你可以在你的 .bash_profile (可能你的系统中叫其他名字) 文件中加上这么一行 $HOME/bin,这样你就可以将你的命令执行文件放在 家目录下面的 bin 目录里面了。

那为什么要放在 bin 目录中呢?因为bin目录通常是类 unix 系统存放可执行文件的地方

本作品采用《CC 协议》,转载必须注明作者和本文链接
rexmolo
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!