举个例子:
当我将以下代码粘贴到终端时:
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
,直接使用 运行wmake
。sudo
您也不需要;
在每个命令末尾使用 。;
仅当您在同一行运行两个命令时才需要 (例如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 直接运行命令。