如何在Bash中将剪贴板内容复制到变量中?
当然有办法实现剪贴板和Bash变量之间的内容传递啦!不同操作系统/桌面环境对应的工具略有不同,我给你分情况整理了实用的方法:
Linux/X11 桌面环境(GNOME、KDE等)
首先得安装常用的剪贴板工具,比如xclip或xsel:
- Debian/Ubuntu系:
sudo apt install xclip xsel - Fedora/RHEL系:
sudo dnf install xclip xsel
剪贴板内容 → Bash变量
用xclip的话:
clipboard_content=$(xclip -selection clipboard -o)
解释:
-selection clipboard指定读取系统全局剪贴板,-o表示输出剪贴板内容到标准输出,再通过命令替换存入变量。
用xsel的话更简洁:
clipboard_content=$(xsel -b -o)
-b代表操作剪贴板(clipboard),-o是输出内容。
Bash变量内容 → 剪贴板
用xclip:
echo "$clipboard_content" | xclip -selection clipboard
用xsel:
echo "$clipboard_content" | xsel -b
注意:一定要用双引号包裹变量,这样能保留内容里的换行、空格和特殊字符,避免格式错乱!
macOS 环境
macOS自带pbcopy和pbpaste工具,不用额外安装,直接用:
剪贴板内容 → Bash变量
clipboard_content=$(pbpaste)
Bash变量内容 → 剪贴板
echo "$clipboard_content" | pbcopy
Windows Subsystem for Linux (WSL)
WSL可以借助Windows原生的命令来操作剪贴板:
剪贴板内容 → Bash变量
clipboard_content=$(powershell.exe -Command "Get-Clipboard")
Bash变量内容 → 剪贴板
echo "$clipboard_content" | clip.exe
额外提醒
- 如果是纯命令行的Linux服务器(没有图形界面/X11服务),这些剪贴板工具都没法工作,因为剪贴板依赖桌面环境的图形服务。
- 处理包含特殊字符(比如
$、\)的内容时,双引号的使用尤其重要,能避免Bash对内容进行不必要的解析。
内容的提问来源于stack exchange,提问作者user276072
相关产品推荐
相关产品推荐

