在 Fish Shell 中创建一个自定义函数来简化命令并复制输出到剪贴板是一个非常实用的技巧。如果你想让这个函数更通用,不仅仅局限于 tree
命令,你可以修改函数定义,使其接受任意命令作为参数。下面是如何创建一个更通用的函数,你可以用它来执行任何命令,并将输出复制到剪贴板:
- 创建通用函数:
打开 Fish Shell,然后定义一个新函数,比如叫 cmd_to_clip
:
function cmd_to_clipset cmd_to_run "$argv"eval $cmd_to_run | tee (tty) | clip.exe
end
这个函数接受任意参数($argv
),这些参数是用户输入的命令和参数,然后使用 eval
执行这些参数组成的命令,并通过管道将其输出复制到剪贴板。
- 保存函数:
使用 funcsave
命令保存这个函数,使其在每次新的 Shell 会话启动时自动加载:
funcsave cmd_to_clip
- 创建别名:
如果你想要一个简短的别名来调用这个函数,可以编辑你的 config.fish
文件,并添加一个别名:
alias ctc='cmd_to_clip'
这样,你就可以使用 ctc
命令后面跟上任何你想要执行并复制输出的命令。
- 重新加载配置:
保存 config.fish
文件后,重新打开一个新的 Shell 会话,或者运行以下命令来重新加载配置:
source ~/.config/fish/config.fish
- 使用函数:
现在,你可以通过调用 cmd_to_clip
函数(或者使用别名 ctc
),后面跟上任何命令及其参数,来执行命令并把结果复制到剪贴板:
ctc ls -l
这将执行 ls -l
命令,将输出显示在终端,并复制到剪贴板。
请注意,clip.exe
可能需要根据你的系统环境进行相应的路径设置。此外,tee (tty)
确保了即使使用了管道,输出也会显示在终端上。如果你不需要在终端中看到输出,可以去除 | tee (tty)
部分。