67291a9a50
Introduce ff script -h with auto descriptions, shared help.sh, and usage flags across script/*.sh. Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
1.4 KiB
Bash
Executable File
58 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 将标准输入复制到系统剪贴板(macOS / Linux X11 / Wayland)
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
# shellcheck disable=SC1091
|
||
source "$SCRIPT_DIR/common/help.sh"
|
||
|
||
usage() {
|
||
cat <<'EOF'
|
||
用法: clip-copy
|
||
|
||
从 stdin 读取内容并写入系统剪贴板。
|
||
|
||
支持:
|
||
macOS: pbcopy
|
||
Wayland: wl-copy
|
||
X11: xclip / xsel
|
||
|
||
选项:
|
||
-h, --help 显示此帮助
|
||
|
||
示例:
|
||
echo hello | clip-copy
|
||
cat file.txt | clip-copy
|
||
EOF
|
||
}
|
||
|
||
dotfile_help_requested "${1:-}" && dotfile_show_help
|
||
|
||
set -euo pipefail
|
||
|
||
if command -v pbcopy >/dev/null 2>&1; then
|
||
pbcopy
|
||
elif [ "${XDG_SESSION_TYPE:-}" = wayland ] || [ -n "${WAYLAND_DISPLAY:-}" ]; then
|
||
if command -v wl-copy >/dev/null 2>&1; then
|
||
wl-copy --no-newline
|
||
else
|
||
echo "clip-copy: wl-copy not found (Wayland session)" >&2
|
||
exit 1
|
||
fi
|
||
elif [ -n "${DISPLAY:-}" ]; then
|
||
if command -v xclip >/dev/null 2>&1; then
|
||
xclip -selection clipboard
|
||
elif command -v xsel >/dev/null 2>&1; then
|
||
xsel --clipboard --input
|
||
else
|
||
echo "clip-copy: xclip or xsel not found (DISPLAY=$DISPLAY)" >&2
|
||
exit 1
|
||
fi
|
||
elif command -v xclip >/dev/null 2>&1; then
|
||
xclip -selection clipboard
|
||
elif command -v xsel >/dev/null 2>&1; then
|
||
xsel --clipboard --input
|
||
else
|
||
echo "clip-copy: no clipboard tool (pbcopy / wl-copy / xclip / xsel)" >&2
|
||
exit 1
|
||
fi
|