【linux】一站式脚本管理神器:Pier,让你的命令行生活更高效!

文摘   2024-07-26 11:34   江苏  

一站式脚本管理神器:Pier,让你的命令行生活更高效!

前言

在数字时代,效率是王道。对于Linux用户来说,终端是他们的第二家园。但随着时间的积累,那些宝贵的一行代码、脚本和工具往往被埋没在杂乱无章的文件夹中。现在,有了 Pier,这一切都将改变。这不仅仅是一个工具,它是你命令行生活的得力助手,让管理变得简单而优雅。

一个集中的仓库,用于管理你所有的一行代码、脚本、工具和命令行界面。添加、删除、列出和运行脚本 - 存储元数据以便稍后轻松找到它们。不再需要在你的 bin 文件夹中翻找...

船坞

unsetunset描述unsetunset

如果你在终端中花费了任何时间,毫无疑问你已经积累了一堆一行代码、脚本、有用的工具和命令行界面。每当你想使用它们时,你都会在你的 bin 文件夹中翻找,试图记住你是如何命名脚本的... Linux 用户喜欢难以记住的命名约定。

脚本应该是一等公民。在 GUI 世界中,我们可以通过某种菜单找到我们的程序。在终端中,脚本会丢失。

pier 的理念是为你的所有脚本创建一个中央仓库,并提供一种附加这些脚本元数据的方法。使用 pier,你可以添加、删除、列出和运行脚本。这些可以通过 pier 在可读的 TOML 配置中进行管理,或者你可以使用它来编目你周围可能已有的现有脚本 - 然后你只需为特定脚本添加元数据,并将其附加到 PATH 中的名称。

unsetunset安装unsetunset

Crates.io: cargo install pier

GitHub 版本: 只需下载发布二进制文件

使用 Nix 包管理器:

  1. 从 GitHub 版本: make installnix-env -if derivation.nix
  2. 从源代码: 更新派生中的 src./.

unsetunset最近的重大变更unsetunset

版本 0.1.4

配置变量 default_interpreter 已被 移除

default_interpreter = ["foorunner", "-c"]

因此,当你从早期版本升级到 0.1.4 时,你需要改为以这种格式指定变量:

[default]
interpreter = ["foorunner", "-c"]

unsetunset操作unsetunset

使用 pier --help 显示命令行帮助,或查看 src/cli.rs 以获取更详细的规范。

pier 0.1.4
Benjamin Scholtz, Isak Johansson
一个简单的脚本管理命令行界面

用法:
    pier [标志] [选项] <别名>
    pier [标志] [选项] <子命令>

标志:
    -h, --help       
            打印帮助信息

    -V, --version    
            打印版本信息

    -v, --verbose    
            详细程度

选项:
    -c, --config-file <路径>    
            设置自定义配置文件。
            
            默认路径按以下顺序确定:
            
            - $PIER_CONFIG_PATH (如果设置环境变量)
            
            - pier.toml (在当前目录中)
            
            - $XDG_CONFIG_HOME/pier/config.toml
            
            - $XDG_CONFIG_HOME/pier/config
            
            - $XDG_CONFIG_HOME/pier.toml
            
            - $HOME/.pier.toml
            
            - $HOME/.pier
            
             [环境变量: PIER_CONFIG_PATH=]

参数:
    <别名>    
            脚本的别名或名称。

子命令:
    add       将新脚本添加到配置中。
    edit      编辑与别名匹配的脚本。
    help      打印此消息或给定子命令的帮助
    list      别名:ls - 列出脚本
    remove    别名:rm - 删除与别名匹配的脚本。
    run       运行与别名匹配的脚本。
    show      显示与别名匹配的脚本。
  • pier list
  • pier add "ip link set wlp58s0 down && sleep 5 && ip link set wlp58s0 up" --alias refresh-wifi
  • pier refresh-wifi

unsetunset示例 pier TOML 配置unsetunset

[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 = "一个清除旧 Docker 容器和镜像的脚本"
tags = [ "docker", "flush" ]

unsetunset示例 pier list 输出unsetunset

▶ pier list           
 别名             | 命令 
-------------------+----------------------------------------------------------------------------------------------------------------
 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

unsetunset在任何解释性语言中执行 pier 脚本unsetunset

以 shebang #! 开头的脚本将使用指定的解释器运行,就像在普通脚本中一样。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 来内联执行脚本。这可以通过解释器变量覆盖。它需要是一个列表,列表中的第一个项是二进制文件,其余的是任何必要的标志。

默认解释器示例配置

# 设置默认解释器,列表中的第一个项应该是二进制文件,其余的是解释器 cli 选项的参数。
[default]
interpreter = ["node""-e"]

# 作为回退解释器运行 nodejs,因为它缺少 shebang
[scripts.hello_world_nodejs]
command = '''
console.log("Hello world!")

'
''

#这将作为 posix sh 脚本运行,因为它有 shebang
[scripts.a_shell_script]
command = '''
#!/bin/sh

nohup st > /dev/null 2>&1&

'
''

结语

Pier 不仅仅是一个脚本管理工具,它是一个革命性的解决方案,旨在简化你的工作流程,提升你的生产力。无论你是开发者、系统管理员还是普通用户,Pier 都能成为你不可或缺的伙伴。加入 Pier 的行列,开启你的高效命令行之旅!


编程悟道
自制软件研发、软件商店,全栈,ARTS 、架构,模型,原生系统,后端(Node、React)以及跨平台技术(Flutter、RN).vue.js react.js next.js express koa hapi uniapp Astro
 最新文章