我无法将长命令粘贴到终端中。
有一个 ls 命令需要很多参数,我正尝试通过复制将其插入终端。
但它运行每一行。
所以我得到了错误。
我能做些什么 ?
答案1
它声音就像是多个命令,或者由于某种原因,一个命令被拆分成多行。如果您能向我们展示,那么在这种情况下,这将让我们知道是哪一个。
这并不是说命令真的太长的情况不存在,只是在实践中这种情况很少见,尤其是在复制和粘贴时!如果你遇到了这个问题,请查看xargs
Eduard 的回答。
如果它是一个添加了换行符的命令,请删除换行符。
互联网上的格式并不总是完美的。一些网站(和作者)使用糟糕的代码标签,这可能意味着某些内容被分成多行,从而破坏它们。一个简单的例子是在两个被截断的目录上运行 ls:
ls a_really_long_directory_name
another_really_long_directory_name
这里的简单答案就是删除换行符:
ls a_really_long_directory_name another_really_long_directory_name
但您也可以使用反斜杠作为行上的最后一个字符来转义换行符:
ls a_really_long_directory_name \
another_really_long_directory_name
如果您想要一起运行多个命令(而不是粘贴),请将它们放入脚本中并在准备好时运行该脚本。
如果“命令”实际上看起来像:
ls a_really_long_directory_name
ls another_really_long_directory_name
这是两个命令。当您粘贴它们时,每个换行符都会强制运行该行。这就是 Ubuntu 中大多数 shell 的工作方式。如果您想将它们捆绑在一起,可以将它们粘贴到一个文件中(我们称之为myscript
),然后告诉 bash 运行这些命令:
bash myscript
你不必处理 crunchbangs 和执行权限,你只需告诉 bash 打开并运行哪个文件。你能如果你愿意的话可以做这些事情但是在这里它们不是必需的。
答案2
长度限制相当长,您可以使用以下方法检查:
xargs --show-limits
(看gnome-terminal 中命令行参数的最大长度是多少?)
因此注释之间可能有新行。您可以先将其粘贴到 gedit 中,确保只有一行,然后使用 Ctrl+Shift+V 将其粘贴到终端中,以进行检查