6 个版本
0.1.6 | 2024 年 8 月 7 日 |
---|---|
0.1.5 | 2021 年 2 月 24 日 |
0.1.4 | 2020 年 10 月 19 日 |
0.1.2 | 2019 年 11 月 14 日 |
0.1.1 | 2019 年 10 月 26 日 |
#411 在 命令行实用程序
每月 145 次下载
44KB
815 行
pier ~ Linux 脚本管理工具
一个中央仓库,用于管理您所有的单行命令、脚本、工具和 CLI。添加、删除、列出和运行脚本 - 存储元数据以便稍后轻松查找。不再需要翻遍您的 bin
文件夹...
描述
如果您在终端上花费了任何时间,您无疑已经积累了一个漂亮的单行命令、脚本、有用工具和 CLI 的收藏。每次您想使用它们时,您都会翻遍您的 bin
文件夹,试图记住脚本的名字... Linux 用户喜欢难以记住的命名约定。
脚本应该是第一类公民。在 GUI 世界中,我们可以通过某种菜单找到我们的程序。在终端中,脚本会丢失。
pier
背后的想法是创建一个用于所有脚本的中央仓库,并提供一种方式来附加关于这些脚本的元数据。使用 pier
,您可以添加、删除、列出和运行脚本。这些可以通过 pier
以人类可读的 TOML 配置进行管理,或者您可以使用它来编目您可能散落在各处的现有脚本 - 您只需添加特定脚本的元数据,并将其附加到 PATH
中的名称即可。
安装
从 Crates.io: cargo install pier
从 GitHub 发布版: 简单下载发布二进制文件
使用 Nix 软件包管理器
- 从 GitHub 发布版:
make install
或nix-env -if derivation.nix
- 从源代码:将推导中的
src
更新到./.
最近的重大更改
版本 0.1.4
配置变量 default_interpreter
已被 移除
default_interpreter = ["foorunner", "-c"]
所以当从早期版本升级到 0.1.4
时,您需要以以下格式指定变量
[default]
interpreter = ["foorunner", "-c"]
操作
使用 pier --help
在命令行中显示帮助或查看 src/cli.rs
以获取更详细的规范。
pier 0.1.4
Benjamin Scholtz, Isak Johansson
A simple script management CLI
USAGE:
pier [FLAGS] [OPTIONS] <alias>
pier [FLAGS] [OPTIONS] <SUBCOMMAND>
FLAGS:
-h, --help
Prints help information
-V, --version
Prints version information
-v, --verbose
The level of verbosity
OPTIONS:
-c, --config-file <path>
Sets a custom config file.
DEFAULT PATH is otherwise determined in this order:
- $PIER_CONFIG_PATH (environment variable if set)
- pier.toml (in the current directory)
- $XDG_CONFIG_HOME/pier/config.toml
- $XDG_CONFIG_HOME/pier/config
- $XDG_CONFIG_HOME/pier.toml
- $HOME/.pier.toml
- $HOME/.pier
[env: PIER_CONFIG_PATH=]
ARGS:
<alias>
The alias or name for the script.
SUBCOMMANDS:
add Add a new script to config.
edit Edit a script matching alias.
help Prints this message or the help of the given subcommand(s)
list alias: ls - List scripts
remove alias: rm - Remove a script matching alias.
run Run a script matching alias.
show Show a script matching alias.
pier list
pier add"ip link set wlp58s0 down && sleep 5 && ip link set wlp58s0 up" --别名刷新-wifi
pier refresh-wifi
示例 pier
TOML 配置
[scripts.refresh-wifi]
command = "ip link set wlp58s0 down && sleep 5 && ip link set wlp58s0 up"
[scripts.twa-analyze]
command = "docker run --rm -t trailofbits/twa -vw"
tags = [ "infosec" ]
[scripts.enabled-services]
command = "systemctl list-unit-files --state=enabled"
[scripts.flush-docker]
command = "docker container stop $(docker container ls -a -q) && docker system prune -a -f --volumes"
description = "A script to clear out old Docker containers and images"
tags = [ "docker", "flush" ]
示例 pier list
输出
▶ pier list
Alias | Command
-------------------+----------------------------------------------------------------------------------------------------------------
fromscratch | appimage-run ~/AppImage/FromScratch.1.4.3.AppImage
nspawn-bionic | sudo systemd-nspawn --bind=/tmp/.X11-unix -D /var/lib/machines/bionic --bind /home/bscholtz:/home/bscholtz
bspwm-refresh | .config/bspwm/bspwmrc
flush-docker | docker container stop $(docker container ls -a -q) && docker system prune -a -f --volumes
zfs-compression | sudo zfs get all | grep compressratio
mongo-docker | docker run --name mongodb -d mongo:latest
forward-mongo | kubectl port-forward mongo-molecule-set-0 27018:27017
refresh-wifi | ip link set wlp58s0 down && sleep 5 && ip link set wlp58s0 up
lepton | appimage-run ~/AppImage/Lepton-1.8.0-x86_64.AppImage
ledger | appimage-run AppImage/ledger-live-desktop-1.6.0-linux-x86_64.AppImage
reload-urxvt | xrdb ~/.Xresources
kill-docker | rm -rf /var/lib/docker
reload-xresources | xrdb ~/.Xresources
graphiql | appimage-run ~/AppImage/graphiql-app-0.7.2-x86_64.AppImage
enabled-services | systemctl list-unit-files --state=enabled
ports | netstat -tulpn
chmod-copy | chmod --reference=
zfs-drop-caches | sync; echo 2 | sudo tee /proc/sys/vm/drop_caches
update | sudo nix-channel --update && sudo nixos-rebuild switch
flush-untagged | docker images -q --filter dangling=true | xargs -r docker rmi
twa-analyze | docker run --rm -t trailofbits/twa -vw
parity-ubuntu | docker image pull yodascholtz/parity-ubuntu:latest && docker run -p 8545:8545 yodascholtz/parity-ubuntu:latest
在任意解释语言中执行 pier 脚本
以 #!
开头的脚本将以指定的解释器运行,就像在正常脚本中一样。Pier 通过从您的脚本创建临时文件、执行它并最终清理文件来实现这一点。这使得您可以在 python、node.js 等语言中编写 pier 脚本,即使使用 scriptisto 等工具,编译后的语言也可以运行。
Shebang 示例配置
[scripts.run_rust_script]
command = '''
#!/usr/bin/env scriptisto
// scriptisto-begin
// script_src: src/main.rs
// build_cmd: cargo build --release && strip ./target/release/script
// target_bin: ./target/release/script
// files:
// - path: Cargo.toml
// content: |
// package = { name = "script", version = "0.1.0", edition = "2018"}
// [dependencies]
// scriptisto-end
fn main() {
println!("This is a rust script!");
}
'''
[scripts.run_python]
command = '''
#!/usr/bin/env python3
import sys
print("Running python with version {}".format(sys.version))
'''
设置默认的 shell / 解释器
默认情况下,如果没有指定 shebang,pier 将尝试使用您的默认 shell 以内联方式执行脚本。这可以通过解释器变量来覆盖。它需要是一个列表,第一个项是二进制文件,其余的是任何必要的标志。
默认解释器示例配置
# Sets the default interpreter, the first item in the list should be the binary and the rest are the arguments for the interpreter cli option.
[default]
interpreter = ["node", "-e"]
# Runs as the fallback interpreter nodejs as it's lacking a shebang
[scripts.hello_world_nodejs]
command = '''
console.log("Hello world!")
'''
# This will be run as a posix sh script as it has a shebang
[scripts.a_shell_script]
command = '''
#!/bin/sh
nohup st > /dev/null 2>&1&
'''
起源
最初打算作为管理 Docker 一行代码的方式,名称 pier
继续沿用相同的航海主题。我意识到 Pier 可以管理比 Docker 脚本更多的内容。
通往 v1.0.0 的路线图
- 模糊搜索 + 自动完成,例如别名提示
- 完整的基线功能:mv,标记
- 重做测试
- 更新文档,例如贡献指南、模板
星历史
依赖项
~5–15MB
~174K SLoC