macOS 上如何写自定义命令行工具?
qiyuwang 2024-12-22 20:26 17 浏览 0 评论
大家好,我是前端西瓜哥,今天来说说怎么在 macOS 上写自定义命令行工具。
苹果的 masOS 系统的底层核心是 Darwin 系统。Darwin 是类 Unix 系统,所以我们可以在 masOS 上,像 Linux 一样,执行命令行工具。
我们通常通过第三方安装的命令行工具,比如 node、npm、nginx 等,这很方便。
但,有时候我们想运行自己编写的命令行工具,怎么做呢?
在这之前,我们先了解一些比较基本的恶概念
Shell
对于类 Unix 系统,它有一个 shell 的概念。
Shell 是命令行的输入界面,用户可以在上面输入命令去执行任务。因为它是操作系统底层的一层封装,因此得名为 Shell(壳)。
Shell 本身也是脚本语言,在能运行一些命令行工具的同时,也能进行一些判断、循环之类的逻辑。
Shell 有各种实现,比如最常用的 Bash,它是 Linux 和旧版本的 macOS 的默认版本。
目前 macOS 默认的 Shell 换成了 zsh。zsh 配置比较复杂,我推荐安装 Oh My Zsh,会让你的 zsh 更好用。
脚本保存位置
Shell 怎么知道可以执行的命令行工具,也就是脚本的放在哪里呢?
答案是它会找全局变量 PATH 指定的目录,找到匹配的文件去执行。
我们执行 echo $PATH 就能看到有哪些目录:
nbsp;echo $PATH
/Users/watermelon/.nvm/versions/node/v18.8.0/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
目录是有多个的,用冒号分隔。会按顺序查询每个目录下的文件,直到找到一个同名的执行它,然后结束。
如果你想要知道某个命令的位置,可以使用 which 命令:
nbsp;which node
/Users/watermelon/.nvm/versions/node/v18.8.0/bin/node
现在我们想写自己的自定义脚本,那么就需要找到一个目录放这些脚本。
我的做法是在用户家目录下创建一个 bin 目录,也就是路径位置 ~/bin。
# 创建 bin 目录
mkdir ~/bin
然后给 PATH 变量新增一个路径,我们需要在 ~/.zshrc 文件加上:
export PATH=~/bin:$PATH
这样,每次打开终端时,PATH 路径都会执行 .zshrc 文件,然后给 PATH 变量加上 ~/bin 路径。
自定义脚本
然后我们就可以在 bin 目录下写自己的脚本。
你可以写名为 hello 的 sh 脚本:
#!/bin/sh
echo Hello!
也可以写一个名为 hi 的 nodejs 脚本:
#!/usr/bin/env node
console.log('Hi!')
我们通过第一行带有 #! (称为 shebang)的注释来指定编译器。然后下面的几行就是对应语言的脚本。
然后记得给这些脚本的属性设置为可执行,否则会报权限否认的错误。
chmod u+x hello
chmod u+x hi
看看效果:
下面就可以根据自己需要做写一些脚本了。
想要在 VS Code 下集成的终端打开独立的 iterm2 窗口,我们的一个方式是:
open . -a iTerm .
很长,我们可以写一个名为 iterm 的脚本:
open . -a iTerm ${1:-.}
${1:-.} 代表取第一个参数,如果没有,就实用默认值 .。另外把第一行的注释也省略掉了,默认会作为 shell 脚本执行。
这样我执行 iterm 就能打开独立 iterm2 窗口
或者你可以用 github 做一些文章备份,我写了一个 artcle-push 脚本:
cd ~/Documents/articles
git add .
arg1=${1:-update}
git commit -m $arg1
git push
该脚本可以某个目录的文件进行 commit,然后提交到 Github,且支持指定 commit 信息。
当你写了新的内容,想备份的时候,输入 artcle-push 就可以了,非常方便。
结尾
想要提高效率吗?那你需要做自动化或半自动化,把一些重复的工作交给计算机,赶紧来写你的自定义脚本吧。
我是前端西瓜哥,欢迎关注我,学习更多前端知识。
相关推荐
- 基于Docker方式安装与部署Camunda流程引擎
-
1Camunda简介官网:https://docs.camunda.org/manual/7.19/installation/docker/Camunda是一个轻量级、开源且高度灵活的工作流和决策自...
- 宝塔Linux面板如何部署Java项目?(宝塔面板 linux)
-
通过宝塔面板部署Java还是很方便的,至少不需要自己输入tomcat之类的安装命令了。在部署java项目前,我还是先说下目前的系统环境,如果和我的系统环境不一样,导致部署不成功,那你可能需要去找其他资...
- 浪潮服务器如何用IPMI安装Linux系统
-
【注意事项】此处以浪潮服务器为例进行演示所需使用的软件:Chrome浏览器个人PC中需要预先安装java,推荐使用jdk-8u181-windows-x64.exe【操作步骤】1、在服务器的BIOS中...
- Centos7环境Hadoop3集群搭建(hadoop集群环境搭建实验报告)
-
由于项目需要存储历史业务数据,经过评估数据量会达到100亿以上,在原有mongodb集群和ES集群基础上,需要搭建Hbase集群进行调研,所以首先总结一下Hadoop集群的搭建过程。一、三个节点的集群...
- Hadoop高可用集群搭建及API调用(hadoop高可用原理)
-
NameNodeHA背景在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNo...
- 使用Wordpress搭建一个属于自己的网站
-
现在开源的博客很多,但是考虑到wordpress对网站的seo做的很好,插件也多。并且全世界流量排名前1000万的网站有33.4%是用Wordpress搭建的!所以尝试用Wordpress搭建一个网站...
- Centos 安装 Jenkins(centos 安装ssh)
-
1、Java安装查看系统是否已安装Javayumlistinstalled|grepjava...
- Java教程:gitlab-使用入门(java中的git)
-
1导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作...
- Dockerfile部署Java项目(docker部署java应用)
-
1、概述本文主要会简单介绍什么是Docker,什么是Dockerfile,如何安装Docker,Dockerfile如何编写,如何通过Dockerfile安装jar包并外置yaml文件以及如何通过do...
- 如何在Eclipse中搭建Zabbix源码的调试和开发环境
-
Zabbix是一款非常优秀的企业级软件,被设计用于对数万台服务器、虚拟机和网络设备的数百万个监控项进行实时监控。Zabbix是开放源码和免费的,这就意味着当出现bug时,我们可以很方便地通过调试源码来...
- Java路径-02-Java环境配置(java环境搭建及配置教程)
-
1Window环境配置1.1下载...
- 35.Centos中安装python和web.py框架
-
文章目录前言1.Centos7python:2.Centos8python:3.进行下载web.py框架然后应用:4.安装好之后进行验证:5.总结:前言...
- 《我的世界》服务器搭建(我的世界服务器如何搭建)
-
1.CentOS7环境1.1更改YUM源#下载YUM源文件curl-o/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com...
- CentOS 7 升级 GCC 版本(centos7.4升级7.5)
-
1.GCC工具介绍GCC编译器:...
- Linux安装Nginx详细教程(linux安装配置nginx)
-
环境准备1.因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。命令:yuminstallgcc-c++显示完毕,表示安装完成:2.Nginx的http模块需要...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 基于Docker方式安装与部署Camunda流程引擎
- 宝塔Linux面板如何部署Java项目?(宝塔面板 linux)
- 浪潮服务器如何用IPMI安装Linux系统
- Centos7环境Hadoop3集群搭建(hadoop集群环境搭建实验报告)
- Hadoop高可用集群搭建及API调用(hadoop高可用原理)
- 使用Wordpress搭建一个属于自己的网站
- Centos 安装 Jenkins(centos 安装ssh)
- Java教程:gitlab-使用入门(java中的git)
- Dockerfile部署Java项目(docker部署java应用)
- 如何在Eclipse中搭建Zabbix源码的调试和开发环境
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)