如何将代码粘贴到终端并逐行执行?(它有 sudo)

如何将代码粘贴到终端并逐行执行?(它有 sudo)

举个例子:

当我将以下代码粘贴到终端时:

wclean;
sudo bash;
wmake;

它要求输入密码sudo bash,然后我必须输入它(没问题)。但它不会继续前进。它在 之前就停了下来wmake

然后

如何粘贴一个全部的风俗代码到终端并逐行执行?我想要一个简单的解决方案,因为我粘贴的这些代码来自互联网、书籍、教程……

答案1

如果其中一个命令等待终端输入,则一次粘贴多个命令可能会导致问题。在这种情况下,其余粘贴将被视为该命令的输入,而不是作为随后运行的单独命令。最常见的例子可能是密码提示sudo

但是,Bash 能够打开文本编辑器来输入命令,默认情况下是nano。按Ctrl+ X,然后按Ctrl+ ,即可启动命令编辑器E。编辑器启动后,您到目前为止在当前命令行中输入的所有内容也将出现在那里,您可以进行编辑。但是,如果命令行为空,编辑器也将为空。

在编辑器中,您现在可以轻松粘贴或输入多个命令,只需每行输入一个命令,Bash 就会逐个执行它们。您也可以在其中输入整个脚本,这无关紧要。您编写的内容会在内部保存为临时文件并像 Bash 脚本一样执行。这里唯一的区别是,如果您有多个命令,Bash 会先打印命令本身,然后再执行它。

如果您已完成编辑并想要提交命令列表,只需退出编辑器(Ctrl+ Xfor nano)。它会询问您是否保存更改,您回答“ Yes”并点击Enter接受建议的临时文件名。然后 Bash 将开始一个接一个地执行所有命令。

答案2

就你的情况而言,答案是更改你正在使用的命令。你正尝试以 root 身份启动 bash shell 以运行命令。最简洁的方法是直接运行sudo command。因此,你只需将以下内容直接复制粘贴到终端中:

wclean
sudo wmake

你不需要先sudo bash运行然后 wmake,直接使用 运行wmakesudo您也不需要;在每个命令末尾使用 。;仅当您在同一行运行两个命令时才需要 (例如comm1; comm2)。

答案3

如果您以超级用户身份进入,您运行的所有命令都将被授予超级用户权限,因此不需要输入密码。

在粘贴命令之前,只需在终端提示符下输入即可sudo su。提示符必须从 $ 更改为 #。

答案4

正如 @jiipeezz 所评论的,在 之后不继续没有任何问题sudo bash,因为使用此命令可以打开一个新 shell。实际上,终止 shell(使用exit)后将执行下一个命令。如果要wmake以超级用户身份运行该命令,则必须使用 将该命令作为参数传递给 shell sudo bash -c 'wmake'。尝试:

wclean;
sudo bash -c 'wmake';

但是我认为在新的 shell 上运行单个命令是没有意义的,而是使用 sudo 直接运行命令。

相关内容