如何在Bash脚本中获取剪贴板(Ctrl+C)中的内容?
在Bash脚本中获取剪贴板内容的几种方案
嘿,这个需求我之前也碰到过,不同操作系统和桌面环境下有不同的工具能搞定,给你整理了几种靠谱的方案:
Linux 桌面环境
Linux下因为桌面环境和显示服务器(X11/Wayland)的差异,适用的工具也不一样:
- X11 环境(比如GNOME、Xfce这类传统桌面):用
xclip或者xsel工具,先确保安装好它们(Debian/Ubuntu系用sudo apt install xclip,Fedora用sudo dnf install xclip)。脚本里获取剪贴板内容的写法:
要是用# 将剪贴板内容存入变量 clipboard_content=$(xclip -selection clipboard -o) # 直接输出剪贴板内容 xclip -selection clipboard -oxsel的话,对应的命令是xsel -b -o,用法和xclip差不多。 - Wayland 环境(比如GNOME 3.26+默认使用):用
wl-clipboard工具,安装后直接用wl-paste命令:clipboard_content=$(wl-paste) - KDE 桌面:可以直接调用Klipper(KDE自带的剪贴板管理工具)的DBus接口,无需额外安装工具:
clipboard_content=$(qdbus org.kde.klipper /klipper getClipboardContents)
macOS
macOS自带了专门的剪贴板命令,直接用pbpaste就能搞定,非常省心:
clipboard_content=$(pbpaste)
Windows 子系统(WSL)
WSL里可以直接调用Windows的PowerShell命令来读取剪贴板:
clipboard_content=$(powershell.exe -Command "Get-Clipboard")
小提示
- 记得先确认对应的工具已经安装,比如Linux下的xclip可能默认没预装,需要手动安装。
- 如果脚本需要跨平台运行,可以加一些判断逻辑,比如根据
uname的输出结果来选择对应的命令。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

