node.js - 如何使用 Nodejs 而不是 bash 创建全局可用的 shell 脚本?
问题描述
基本上,我希望能够打开一个终端并输入
$ 哈尔普
并让它返回一些我一直忘记的有用命令。我想在不必学习 bash 的情况下做到这一点。或其他语言,因为我知道 JavaScript。我怎样才能做到这一点而不必编译它或将其翻译成 bash 或任何东西?我只想编写一个 javascript 文件并让它运行,就好像我编写了一个 shell 脚本并将它放在 /usr/local/bin 中一样。
解决方案
我想通了,我只是想让人们知道如何去做。
首先,简单的例子——我写了我想引用的文本文件。只是一个普通的文本或降价文件。我称之为 haylp.md
haylp.md:
commands i keep forgetting
然后我创建了一个名为 haylp.js 的 Node/JavaScript 文件来读取它的内容:
haylp.js
const fs = require('fs');
fs.readFile('/usr/local/lib/haylp/emacsCmds.md', 'utf8', (err, data) =>{
if(err){ console.error(err); return; }
console.log(data);
});
这就是我感到困惑的地方,因为我知道有一种方法可以使用看起来像“#!/bin/node”的shebang,它可以让你输入
$ haylp (或) ./haylp.js (或) sh ./haylp.js
所以这回答了我关于shebang的问题,但我仍然无法让它执行,也不知道把它放在哪里。所以这是完整的结果。
第 1 步创建 js 文件并添加 2 行 shebang 以实现兼容性。
haylp.js:
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
const fs = require('fs');
fs.readFile('/usr/local/lib/haylp/emacsCmds.md', 'utf8', (err, data) =>{
if(err){ console.error(err); return; }
console.log(data);
});
步骤 2 创建文本文件
将它放在 /usr/local/lib/haylp 的文件夹中(如果这是放置它的正确位置,我不肯定;如果我错了,请有人纠正我)
步骤 3 使 js 文件可执行:
$ chmod +x haylp.js
步骤 4 将 haylp.js 复制到 bin
$ sudo mv ./haylp.js /usr/local/bin/haylp
这对我的用例来说是否矫枉过正?大概。但它可能不适合你。它可能并不完美,所以如果有人有建议,我会全力以赴。
推荐阅读
- javascript - 范围变量:代码输出的解释?
- python - 如何以对数刻度显示 seaborn 热图的纯数字刻度?
- sql - 正则表达式 - 识别十进制数字的尾随 0?
- python - Python:如果列 Address1、Address2、Address3、Address4 字符串包含“x”,则在 Address4 列中写入“x”
- c# - new SqliteConnection("文件名=:内存:"); 在 connection.Open() 上给出 System.NullReferenceException;
- flutter - Flutter BLoC 库:将 TextEditingController 对象保存在哪里:在 State、BLoC / Cubit 类或小部件中?
- html - 调整 div 旁边的背景图像大小
- javascript - 用于购物车的 Nodejs MongoDB 模式、路由和控制器
- python - 将函数绑定到 Tkinter 中的按钮以创建文件夹结构
- algorithm - 将人员分成两个具有关系图的团队