Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法让Bash忽略'$';从复制的命令?_Bash - Fatal编程技术网

有没有办法让Bash忽略'$';从复制的命令?

有没有办法让Bash忽略'$';从复制的命令?,bash,Bash,在线文档通常会列出它们的命令,如 $ apt do something $ make this file 由于Bash会发出一个“Bash:$:command not found”(Bash:$:command not found),因此必须单独手动复制每一行有点烦人。很多人甚至有一个“全部复制到剪贴板”按钮,我不明白如果你不能用它做任何事情,为什么他们会有这个按钮。有没有一种方法可以绕过这个问题,可以将“$”别名为空字符串?这样做有意义吗 有没有一种方法可以绕过这个问题,可以将“$”别名为空

在线文档通常会列出它们的命令,如

$ apt do something
$ make this file
由于Bash会发出一个“Bash:$:command not found”(Bash:$:command not found),因此必须单独手动复制每一行有点烦人。很多人甚至有一个“全部复制到剪贴板”按钮,我不明白如果你不能用它做任何事情,为什么他们会有这个按钮。有没有一种方法可以绕过这个问题,可以将“$”别名为空字符串?这样做有意义吗

有没有一种方法可以绕过这个问题,可以将“$”别名为空字符串

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

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

$ alias \$='echo hello'
bash: alias: `$': invalid alias name
但是,可以创建一个名为
$
并包含

#!/usr/bin/env bash
exec "$@"
并将其放入
路径

我已经测试过这种方法,并且它部分有效(也就是说,对于简单的命令,它是可以的,但是对于像
$variable=“value”
$cd some/folder
这样的命令,它显然不行,因为
$
脚本只是执行的,而不是源代码)。

所以,你可能想把这个解决方案当作一个解决方案。

你可以在<>代码> ~/bin /< />代码中编写一个小脚本,包含一些类似

的脚本。
#!/bin/sh
xclip -o |
    sed 's/^\$ *//' |
    tee /dev/fd/2 |
    xclip -selection clipboard
echo
并在复制后但粘贴前运行它

逐行:

  • xclip
    从剪贴板写入/写入剪贴板。您可能需要安装它(使用Ubuntu上的
    sudo apt install xclip
  • sed
    删除
    $
    和一个或多个空格
  • tee
    将所有内容回显到stderr,以便您知道要粘贴的内容

简言之,没有。(阿法克)。(并且“$”是无效的别名。请尝试!)向网站投诉,当您单击“复制到剪贴板”按钮时,他们应该删除提示。他们不这样做真的很愚蠢。这通常是一个暗示,说明(某些)列出的命令可能是为交互使用而设置的。。。因此,您可能希望他们单独复制这些行……您可以将剪贴板复制到一个文件中,然后运行以下操作:
cut-c2-file | bash
@jeremysprofile,……只有在您有
cd
或作业时,它才会起作用,或者任何其他希望能够修改shell的活动状态的命令。为什么要单独使用
eval
,而不是
“$@”
(顺便说一句,除了分配之外,这对运行
cd
)的脚本文本也不起作用。@CharlesDuffy,谢谢!)我相应地更新了我的答案,但它不适用于globs,因为它们在脚本看到它们之前就已经展开了。