有没有办法让Bash忽略复制的命令中的“ $”?

时间:2018-07-25 22:44:38

标签: bash

在线文档通常会列出其命令,例如

$ apt do something
$ make this file

由于Bash会吐出“ bash:$:not found”命令,因此必须手动复制每一行有点烦人。许多code blocks甚至都有一个“将所有内容复制到剪贴板”按钮,如果您对此无能为力,我不知道为什么他们会这样做。有没有办法解决这个问题,也许将别名“ $”赋予一个空字符串?这样做有意义吗?

2 个答案:

答案 0 :(得分:2)

您可以在~/bin/中制作一个包含类似

的小脚本
#!/bin/sh
xclip -o | sed 's/^\$ *//' | tee /dev/fd/2 | xclip

在复制后但粘贴之前运行它。

逐行:

  • xclip从剪贴板写入数据。您可能需要安装它;还有其他类似的工具。
  • sed删除$和一个或多个空格
  • tee将所有内容回显到终端(stderr),这样您就知道要粘贴的内容

答案 1 :(得分:0)

  

有没有办法解决这个问题呢?也许可以使用别名“ $”作为一个空字符串?

$基本上不是Bash别名的有效名称:

$ alias $='echo hello'
bash: alias: `$': invalid alias name

$ alias \$='echo hello'
bash: alias: `$': invalid alias name

但是,可以创建一个名为$并包含

的脚本(设置了可执行位)
#!/usr/bin/env bash
"$@"

并将其放在PATH中。

我已经测试了这种方法,并且部分有效(即,对于简单命令来说可以,但是显然不适用于$ variable="value"$ cd some/folder之类的命令,因为$脚本只是已执行,而不是源;并且不适用于包含;的命令行。因此,您可能需要将此解决方案视为一种解决方法。