You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断命令处于管道首尾?能否实现智能clipboard命令?

实现合并pbcopy/pbpaste的clipboard命令

完全可以实现这个需求,核心是通过判断命令的**标准输入是否来自终端(TTY)**来区分两种使用场景:

  • 当clipboard处于管道开头时,它的标准输入是终端(无上游命令传递数据),此时执行pbpaste输出剪贴板内容
  • 当clipboard处于管道结尾时,它的标准输入来自管道(有上游命令传递数据),此时执行pbcopy将输入内容写入剪贴板

判断逻辑细节

在Shell脚本中,可通过以下方式判断标准输入的来源:

  • 使用test -t 0:返回值为0时,说明标准输入是终端;返回值为1时,说明标准输入来自管道或文件
  • 或使用tty -s:执行成功(返回0)表示标准输入是终端,执行失败(返回1)表示标准输入非终端

实现脚本示例

创建名为clipboard的Shell脚本,放到$PATH包含的目录(如~/bin)中,内容如下:

#!/bin/bash
if test -t 0; then
    # 标准输入为终端,执行pbpaste输出剪贴板内容
    pbpaste
else
    # 标准输入来自管道/文件,执行pbcopy写入剪贴板
    pbcopy
fi

给脚本添加执行权限:

chmod +x ~/bin/clipboard

测试验证

  • 管道开头场景:clipboard | sort -fh 会将剪贴板内容传递给sort处理;clipboard > file1.txt 会将剪贴板内容写入file1.txt
  • 管道结尾场景:echo $PATH | sed "s/:/\n/g" | clipboard 会将处理后的PATH内容存入剪贴板

内容的提问来源于stack exchange,提问作者bryc_wall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:10:55