有没有办法让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
并在复制后但粘贴前运行它
逐行:
从剪贴板写入/写入剪贴板。您可能需要安装它(使用Ubuntu上的xclip
)sudo apt install xclip
删除sed
和一个或多个空格$
将所有内容回显到stderr,以便您知道要粘贴的内容tee
cut-c2-file | bash
@jeremysprofile,……只有在您有cd
或作业时,它才会起作用,或者任何其他希望能够修改shell的活动状态的命令。为什么要单独使用eval
,而不是“$@”
(顺便说一句,除了分配之外,这对运行cd
)的脚本文本也不起作用。@CharlesDuffy,谢谢!)我相应地更新了我的答案,但它不适用于globs,因为它们在脚本看到它们之前就已经展开了。