粘贴多行以便它们一致执行

mjb*_*ler 4 bash sudo clipboard

这是一个非常简单的代码片段的示例,我想以执行所有内容的方式将其粘贴到我的终端。

sudo apt update
sudo apt upgrade


sudo apt -y install build-essential
sudo apt -y install git
sudo apt -y install libxml2-dev # required for some tools using xml files

sudo apt autoremove
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果没有事先安装 build-essential ,会发生什么,它只会运行到sudo apt -y install build-essential. 跳过后续行。如果未安装 git,情况也是如此:它将运行到 git 行,然后跳过其余部分。

发生这种情况的原因是什么?有没有办法解决这个问题,而无需创建脚本文件并通过 bash 运行它?

LL3*_*LL3 6

假设您仍在 sudo 的凭据缓存超时范围内(如果您不确定,只需在运行代码片段之前刷新它sudo -v),就会发生该问题,因为 apt(-get) 是一个非常丰富的控制台应用程序,因此即使它不询问您任何内容也会消耗标准输入因为-y.

\n\n

您可以通过在子 shell 中运行整个代码片段来解决这个问题:

\n\n

在提示符下,首先输入 a(然后粘贴代码片段,然后输入结束语)并按回车键

\n\n

应该走了。

\n\n

请注意,粘贴代码片段后并未立即执行。它而是在命令行上获取 \xe2\x80\x9cqueued\xe2\x80\x9d ,等待右括号。

\n\n

(PS:根据您的系统,您可能需要使用apt-get autoremove代替apt autoremove,并且您可能还需要使用-y\xc2\xa0onupdateupgrade

\n