rust实现的快捷补全到剪贴板的实用工具

最近在兼职项目中老是遇到这样的场景:

  1. 在云服务器之间通过scp命令传输文件,密码太长记不住(客户服务器不方便ssh-copy-id)
  2. 在服务器上使用mysql命令登录修改数据,数据库密码太长记不住(客户设置的密码,直接改掉哈?)
  3. 自己电脑使用gemini cli需要代理,代理命令太长记不住 (简单的放入脚本中不能生效)

之前的做法都是记录到本地记事本,然后打开记事本找到对应的密码再复制到剪贴板,
但是这样太麻烦了,而且容易出错(因为有些密码有特殊字符,所以容易拷贝不全)。

整理下我的需求:

这样的效率太低了,所以我决定写一个工具,能满足我前面的需求。

  1. 命令行执行程序,因为要高效,我开机第一个打开的程序是iterm哈。
  2. 命令方便记忆,就叫yucopy,缩写那就是yc。
  3. 输入一个参数,就能得到对应的密码等值
  4. 参数支持快捷补全
  5. 执行完后密码等信息能自动保存到剪贴板

我的解决方案:

  1. 我的高效流程是用fish shell,参数补全使用fish shel的方案。
  2. 最近在复习rust语言,后续有项目需要用到rust开发,打算用rust实现这个命令行工具。

fish shell

~/.config/fish/config.fish中增加

complete -c yc -x -a '(  cat /opt/dir/yulove/data/key2value.txt | awk -F "=" \'{print $1}\' )'

/opt/dir/yulove/data/key2value.txt是我的配置文件
这样key2value.txt中的key就能自动补全了。

配置文件key2value.txt

参考配置:

yl_mysql_pwd==对应数据库密码
yl_rtest_ip==对应测试服务器ip
yl_baidu_pwd==对应服务器密码
proxy_hong==export https_proxy=http://127.0.0.1:8888 http_proxy=http://127.0.0.1:8888 all_proxy=http://127.0.0.1:8888

可以看到我故意用==去区分key和value,这样像https_proxy=等value值就不容易出错了。

rust代码

Cargo.toml

[package]
name = "yc"
version = "0.1.0"
edition = "2021"[dependencies]
arboard = "3.2.0"

main.rust

use std::env;
use std::fs::File;
use std::io::{self, BufRead};
use arboard::Clipboard;fn main() -> io::Result<()> {let args: Vec<String> = env::args().collect();if args.len() < 2 {println!("Usage: ycopy <key>");return Ok(());}let key = &args[1];let file = File::open("/opt/dir/yulove/data/key2value.txt")?;let reader = io::BufReader::new(file);for line in reader.lines() {let line = line?;let parts: Vec<&str> = line.split("==").collect();if parts.len() == 2 && parts[0] == key {Clipboard::new().unwrap().set_text(parts[1].to_string()).unwrap();println!("Value for key '{}' copied to clipboard.", key);return Ok(());}}println!("Key '{}' not found.", key);Ok(())
}

效果

在这里插入图片描述

总结

因为终端我都是打开tmux的,这样我可以快捷键切换到另一个窗口,然后使用yc命令+方便记忆的key,就能快速得到我想要的保存到剪贴板,
再切换窗口,然后粘贴,这样我就可以快速登录服务器,修改数据库密码,或者使用gemini cli了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89612.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息系统风险的安全技术防范思路

针对信息系统风险的安全技术防范思路 降低风险&#xff0c;即提升了安全能力和水平 保护资产 加强信息系统软硬件及数据安全保护&#xff1b;减少脆弱性 通过研发、部署、应用各环节来尽量减少或避免脆弱性&#xff1b;应对威胁 采取防御措施&#xff0c;实施攻防对抗。

Java项目:基于SSM框架实现的网盘管理系统【ssm+B/S架构+源码+数据库+毕业论文】

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此文件信息的管理…

Echart 地图放大缩小

文章目录 常用方法 1. **开启 `roam` 属性** 2. **通过鼠标滚轮或手势缩放** 3. **设置初始缩放比例** 4. **通过按钮控制缩放** 5. **限制缩放范围** 6. **监听缩放和平移事件** 7. **结合 `dataZoom` 实现数据缩放** 总结 相关文章 在 ECharts 中,可以通过设置地图的 roam …

针对VMware虚拟化环境迁移的复杂场景,我将从技术架构、迁移方案、代码实现、可视化流程四个维度进行专业解析,并提供完整的解决方案框架。

针对VMware虚拟化环境迁移的复杂场景&#xff0c;我将从技术架构、迁移方案、代码实现、可视化流程四个维度进行专业解析&#xff0c;并提供完整的解决方案框架。一、技术架构分析&#xff08;架构图表格对比&#xff09;graph TDA[源环境] -->|vMotion| B[目标环境]A -->…

揭秘 AIGC 背后的技术:GPT、BERT 与 Transformer 模型的工作原理

一、引言AIGC 的崛起与重要性人工智能生成内容&#xff08;AIGC&#xff09;已经不再是未来的技术&#xff0c;它正以惊人的速度渗透到各行各业&#xff0c;重新定义了内容创作、媒体生产、甚至人类认知的边界。从深度学习到大规模自然语言处理&#xff0c;AIGC 的崛起代表着一…

Compose笔记(三十五)--ModalBottomSheetLayout

这一节主要了解一下Compose中的ModalBottomSheetLayout&#xff0c;在Jetpack Compose开发中&#xff0c;ModalBottomSheetLayout是Material Design组件库中用于实现模态底部面板的核心组件&#xff0c;其核心作用是通过声明式API管理底部面板的显示、隐藏及交互逻辑。API Moda…

AWS Partner: Accreditation (Technical)

AWS Partner: Accreditation &#xff08;Technical&#xff09;AWS 核心技术简介云计算的优势AWS 全球基础设施核心技术&#xff1a;计算 Amazon Elastic Compute Cloud (Amazon EC2)存储数据库联网安全性从服务到解决方案解决方案设计简介迁移策略架构最佳实践AWS Well-Archi…

【52】MFC入门到精通——(CComboBox)下拉框选项顺序与初始化不一致,默认显示项也不一致

文章目录1 问题描述2 问题分析与解决上一讲&#xff0c;我们实现了MFC串口助手初级版。 MFC入门到精通——MFC串口助手(一)—初级版&#xff08;串口设置、初始化、打开/关闭、状态显示&#xff09;,附源码1 问题描述 程序运行后串口默认参数&#xff0c;与我们预期不完全一致…

Astro:前端性能革命!从原生 HTML 到 Astro + React 的升级指南

为什么程序员必须关注 Astro在网站性能和 SEO 日益关键的今天&#xff0c;静态站点生成&#xff08;SSG&#xff09;再次成为焦点。Astro 作为一款专为内容驱动网站设计的现代前端框架&#xff0c;正引领一场轻盈革命。它强调服务器优先渲染&#xff0c;将页面预先转为纯 HTML&…

格式转换Total Excel Converter:20 种格式XLS XLSX 批量转 PDFWord

各位办公小能手们&#xff01;今天给大家介绍一款超厉害的软件&#xff0c;叫Total Excel Converter&#xff0c;软件下载地址安装包 它可是专业的Excel文件格式转换工具。你知道吗&#xff0c;它能把Excel工作簿&#xff0c;像XLS、XLSX、XLSM这些格式&#xff0c;批量转换成…

Thread,ThreadLocal,ThreadLocalMap 三者的关系, 以及在实际开发中的应用【AI记录用】

在 Java 多线程编程中&#xff0c;Thread、ThreadLocal 和 ThreadLocalMap 是三个紧密相关的类&#xff0c;它们共同构成了 Java 中**线程本地变量&#xff08;Thread-Local Storage&#xff09;**机制的基础。下面我将从 三者的关系、实现原理 以及 实际开发中的应用 三个方面…

[故障诊断方向]SNNs:针对小样本轴承故障诊断的孪生神经网络模型

目录 1. ​引言与背景总结​ 2. ​方法框架总结​ 3. ​训练策略总结​ 4. ​实验验证总结​ 核心代码实现&#xff08;PyTorch框架&#xff09; ​1. SNN特征提取器&#xff08;多尺度卷积模块&#xff09; ​结论与未来工作总结​ 1. ​引言与背景总结​ ​问题陈述​…

Java中缓存的使用浅讲

Java中缓存的使用浅讲在Java中&#xff0c;缓存系统的使用对于提升应用性能至关重要。缓存的作用主要是减少访问慢速存储&#xff08;如数据库或文件系统&#xff09;的频率&#xff0c;从而提高应用的响应速度。以下是对Java中缓存系统的全面讲解&#xff0c;包括缓存的类型、…

洛谷 P10264 [GESP202403 八级] 接竹竿 普及+/提高

题目描述 小杨同学想用卡牌玩一种叫做“接竹竿”的游戏。 游戏规则是&#xff1a;每张牌上有一个点数 vvv&#xff0c;将给定的牌依次放入一列牌的末端。若放入之前这列牌中已有与这张牌点数相 同的牌&#xff0c;则小杨同学会将这张牌和点数相同的牌之间的所有牌全部取出队列&…

windows docker-02-docker 最常用的命令汇总

一、镜像管理命令说明常用参数示例docker pull <镜像名>:<标签>拉取镜像docker pull nginx:latestdocker images查看本地镜像docker images -a&#xff08;含中间层镜像&#xff09;docker rmi <镜像ID>删除镜像docker rmi -f $(docker images -q)&#xff0…

前端react项目目录详解

1. 项目根目录文件​​文件/目录作用​​package.json​​定义项目依赖、脚本命令&#xff08;如 start/build&#xff09;、版本信息等​​.env​​基础环境变量配置&#xff08;所有环境共享&#xff09;​​.env.development​​开发环境专用变量&#xff08;如本地API地址&…

前端-CSS (样式引入、选择器)

文章目录大纲前端三大件常用样式颜色px:像素1.CSS三种引入方式1.1 行内样式1.2 页内样式1.3 引入外部样式表文件&#xff08;常见&#xff09;基础选择器1. 标记选择器2. id选择器3. 类选择器 最常用4 * 选择器 使用频率较低复合选择器伪类选择器1.超链接伪类&#xff1a;2.子元…

7月19日 台风“韦帕“强势逼近:一场与时间赛跑的防御战

中央气象台7月19日10时继续发布台风黄色预警,今年第6号台风"韦帕"正以每小时20-25公里的速度向西偏北方向移动,强度逐渐加强。这个来自海洋的"不速之客"中心附近最大风力已达10级(25米/秒),预计将于20日下午至夜间在广东深圳到海南文昌一带沿海登陆,…

学习 Python 爬虫需要哪些基础知识?

学习 Python 爬虫需要掌握一些基础技术和概念。 1. Python 基础语法 这是最根本的前提&#xff0c;需要熟悉&#xff1a; - 变量、数据类型&#xff08;字符串、列表、字典等&#xff09; - 条件判断、循环语句 - 函数、类与对象 - 模块和包的使用&#xff08;如 import 语…

IELTS 阅读C15-Test 2-Passage 2

继续雅思上分实验。这次正确率是10/13&#xff0c;还是挺让我吃惊的&#xff0c;因为我又没有完全读懂&#xff01; 题型1-填空题这道题目很简单&#xff0c;同样地去原文段落里找就好&#xff0c;最后一个空填错了是因为我不知道mitigate就是decrease同义词。 题型2-人物匹配题…