嘿嘿,今天偶又来分享一个超级实用滴小技巧!作为终端党的咱,有时候需要批量替换剪贴板中的内容,比如把 hello 替换为 world,你说手动一个字一个字改?我晕…… 咱拒绝!(敲键盘太累,心疼一下自己QAQ)
所以今天,偶就来教大家写一个适用于 macOS 和 Linux 的超级万能 shell 函数,可以直接替换剪贴板的内容,并且带高亮显示哦~ 而且呢,这个函数自动检测系统,完美运行!各位小伙伴,一起来康康吧~
replace_clip() {
# 参数校验
if [ "$#" -ne 2 ]; then
echo "Usage: replace_clip <from> <to>"
return 1
fi
local from=$1
local to=$2
# 检测系统类型
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS
local clipboard_text=$(pbpaste)
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Linux
if command -v xclip &> /dev/null; then
local clipboard_text=$(xclip -selection clipboard -o)
elif command -v xsel &> /dev/null; then
local clipboard_text=$(xsel --clipboard --output)
else
echo "Error: xclip or xsel is required on Linux to access the clipboard."
return 1
fi
else
echo "Unsupported OS: $OSTYPE"
return 1
fi
# 替换剪贴板内容
local replaced_text=$(echo "$clipboard_text" | sed "s/$from/$to/g")
# 将替换后的内容放回剪贴板
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS
echo "$replaced_text" | pbcopy
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Linux
if command -v xclip &> /dev/null; then
echo "$replaced_text" | xclip -selection clipboard
elif command -v xsel &> /dev/null; then
echo "$replaced_text" | xsel --clipboard --input
fi
fi
# 打印出带有高亮的替换部分
echo "$replaced_text" | sed "s/$to/$(printf '\033[1;31m')$to$(printf '\033[0m')/g"
# 返回成功状态
return 0
}-
通用剪贴板操作:无论是 macOS 还是 Linux,都能自动识别并操作剪贴板!
pbpaste和pbcopy是 macOS 专用的,而 Linux 用xclip或xsel。如果你是 Linux 党,记得先安装这俩小工具哟~sudo apt-get install xclip # 或者 sudo apt-get install xsel -
高亮显示:替换后的字符串可以自动在终端里高亮显示,默认是 红色,让你一眼就能看到哪里变了~(完美主义者的福音!)
-
参数化设计:想换什么,就传什么。命令格式超级简单:
replace_clip hello world
这样一行命令,系统会自动把 hello 变成 world,并且高亮显示
world哦!
-
Step 1:把函数代码复制到你的
~/.bash_profile或~/.zshrc文件中,根据你使用的 shell 选择文件哟~ -
Step 2:执行以下命令以加载你的新配置:
source ~/.bash_profile # 对bash用户 source ~/.zshrc # 对zsh用户
-
Step 3:随时使用!只需要在终端中调用
replace_clip,然后传入你想替换的字符串,比如:replace_clip hello world
-
高亮结果展示:替换后的内容会以红色高亮显示出来,剪贴板中的内容也会被自动更新哦~
嘿嘿,咱写这个脚本真的超好用,适合咱这种懒得手动去替换剪贴板内容的小伙伴们。如果你也常常用剪贴板来处理一些工作流,这个小脚本真的是省时省力!赶紧收藏+点赞,学会了就不用手忙脚乱了哦,哈哈~
试试看吧,超级简单超好用!
如果有啥问题,评论里找偶讨论哈~ 祝大家终端玩的开心! 👾