Linux 如何将pwd的结果同步复制到剪贴板

pwd是我们经常使用的一个命令,它的作用是显示当前所在路径。

不过,很多时候我们使用pwd命令不仅仅是查看当前路径,而是复制路径

通常情况下,使用pwd命令进行复制路径的操作如下:

  1. 使用pwd显示路径(键盘)
  2. 使用鼠标选中回显的路径 (鼠标)
  3. 按住ctrl+shift+c复制路径 (键盘)
  4. 使用ctrl+shift+v粘贴路径 (键盘)

这里面包含了两次键盘、鼠标的切换,有没有觉得很麻烦?

此时,一个想法很自然的浮现在我们心中:

如果在使用pwd的时候可以在显示路径的同时将路径复制到剪贴板就好了,这样只需要执行步骤1和4。

那么这个愿望是否可以实现呢?

答案是肯定的。

接下来就让我们来看看怎么实现吧。

思路

为了达到目的,我们要做的其实很简单,那就是将pwd输出的内容复制到剪贴板。

但是pwd本身不具备这个能力,因此,我们需要使用其它工具来辅助我们达到这个目的。

这个工具就是xclip,它可以将输入重定向到剪贴板。

所以,我们只需要将pwd的输出使用管道|传递给xclip就可以了。

原型

首先,安装xclip工具:

sudo apt install xclip

然后,使用以下命令将pwd的输出复制到剪贴板:

pwd | xclip -selection clipboard

接下来让我们先看下效果:

# 查看当前路径
➜  ~ pwd
/home/ubuntu
# 执行命令
➜  ~ pwd | xclip -selection clipboard       
# 键盘按下ctrl+chift+v进行拷贝,查看结果
➜  ~ /home/ubuntu

➜  ~

可以看到,pwd的输出确实已经复制到了剪贴板上。

优化

经过上面的操作,我们的命令原型已经有了。

但是这里有一个问题,那就是路径的末尾有一个换行符/home/ubuntu下有一个空行,那就是换行符导致的),这导致我们需要手动删除这个换行符,不方便。

为了去除路径末尾的换行符,我们可以使用echo -n 命令,从而直接输出 pwd 的结果而不带换行符:

echo -n $(pwd) | xclip -selection clipboard

再测试一下:

➜  ~ echo -n $(pwd) | xclip -selection clipboard   
# 键盘按下ctrl+chift+v进行拷贝
➜  ~ /home/ubuntu
➜  ~

这次我们完美地复制了路径,末尾没有换行符。

最后,我们在命令的末尾添加&& pwd,这样我们就实现了既显示路径又将路径复制到剪贴板的功能:

echo -n $(pwd) | xclip -selection clipboard && pwd

部署

这条命令显然太长了。

敲这条命令的效率还不如使用鼠标呢。

因此,我们要简化操作,方法就是使用别名,即将命令命名为cpwd,并将其添加到.bashrc.zshrc中:

# 添加命令
echo "alias cpwd='echo -n \$(pwd) | xclip -selection clipboard && pwd'" >> ~/.bashrc
# 使命令在当前终端生效
source ~/.bashrc

这样我们只需要在终端运行cpwd命令就可以了。

扩展

我们经常会使用ssh命令远程登录到其它计算机上,并且使用scp命令传输文件。

使用scp命令时需要指定路径,因此需要手动复制。

那么我们是否可以将cpwd部署到远程计算机上,从而实现路径的复制呢?

答案是可以的,并且部署方式一致。

但是当你远程使用cpwd命令时可能会遇到如下错误:

Error: Can't open display: (null)

这个错误的原因是xclip依赖于X11图形环境来访问剪贴板。

但是当我们通过ssh远程登录到计算机上时,默认情况下是没有访问本地X11图形环境的权限的。

因此远程计算机上的xclip无法操作我们本地的剪贴板,也就无法将路径拷贝到我们本地的剪贴板上。

为了解决这个问题,我们可以使用X11转发功能,将X11图形环境的显示输出从远程计算机重定向到本地主机。

原理解释清楚后,操作起来其实很简单,使用-X参数即可:

ssh -X user@remote_host

总结

我们通过各种命令的组合,创建了一个新的cpwd命令,从而让我们能够方便地复制当前路径,并且拓展到了远程登录的场景。希望对大家有帮助~
最后,欢迎大家关注我的公众号《嵌入式3分钟》,一起学习嵌入式!
在这里插入图片描述

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TIME_LEAF

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值