在ubuntu终端中执行一系列命令

use*_*915 2 ubuntu batch-file ubuntu-12.04

假设我有一组要在ubuntu终端中执行的命令:例如:

sudo apt-get update
sudo install xrdp 
sudo install java
.....
Run Code Online (Sandbox Code Playgroud)

和许多其他人.

是否有可能在ubuntu中执行包含这些命令的文件并在没有人为干预的情况下执行(如是/否),默认是吗?

我尝试安装wine,执行$ wine cmd/c Commands.bat,将所有这些命令放在.bat文件中但收到错误"应用程序试图创建一个窗口,但是没有驱动程序可以加载." 那么,有没有简单的方法在ubuntu中执行一系列命令?

hek*_*mgl 9

你在说什么 - 一个文件中的多个命令 - 被称为"shellscript".

假设你有commands.sh:

sudo apt-get update
sudo install xrdp 
sudo install java
Run Code Online (Sandbox Code Playgroud)

然后你可以使用以下命令执行命令:

bash commands.sh
Run Code Online (Sandbox Code Playgroud)

您还可以使用所谓的shebang机制从中创建直接可执行的shellcript .

把这一行放在最上面(第1行) commands.sh

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

..并使文件可执行:

chmod +x commands.sh
Run Code Online (Sandbox Code Playgroud)

现在你可以直接执行它:

./commands.sh
Run Code Online (Sandbox Code Playgroud)

如果要对所有问题说"是",可以使用以下yes命令:

yes | bash "file_with_commands.sh"
Run Code Online (Sandbox Code Playgroud)


dat*_*olf 6

不需要做任何事情,如同尝试使cmd.exe工作一样疯狂和疯狂.你已经在你的系统上有一个完美的工作shell.你还需要了解类似的程序sudo.

sudo不是一些能够创造某种东西的神奇颂歌.sudo是一个帮助程序,允许启动具有提升权限的程序.sudo this sudo that您可以只使sudo启动一个shell并将带有所有这些命令的脚本传递给shell,而不是拥有一个链.

车削

sudo apt-get update
sudo install xrdp 
sudo install java
Run Code Online (Sandbox Code Playgroud)

sudo sh -c 'apt-get update ; install xrdp ; install java'
Run Code Online (Sandbox Code Playgroud)

然而,这看起来不正确.我想你本来打算写

sudo apt-get update
sudo apt-get install xrdp 
sudo apt-get install java
Run Code Online (Sandbox Code Playgroud)

你可以缩短这个

sudo apt-get update
sudo apt-get install xrdp java
Run Code Online (Sandbox Code Playgroud)

或者在合并的单衬里壳中

sudo sh -c 'apt-get update ; apt-get install xrdp java'
Run Code Online (Sandbox Code Playgroud)

现在关于是/否问题.如果要在无人值守的情况下运行的程序不提供给出默认答案的选项,则可以使用该yes程序.即使它被命名 yes它也可以回答NO或你喜欢的任何东西:

narfi /home/dw
1007 ~ % yes Hello
Hello
Hello
Hello
Hello
Hello
…
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?有一个称为"标准输入/输出"的概念,程序从中读取输入和写入输出.Shell允许您将一个程序的输出重定向到另一个程序的输入.这称为管道.特殊字符|表示shell中的管道.

所以说你有一个想要看到大量Aye输入的程序,你可以对shell进行以下调用

yes Aye | happypirate
Run Code Online (Sandbox Code Playgroud)

所以你可以将它与apt-get结合起来,给出所有默认的答案写作

yes | apt-get install …
Run Code Online (Sandbox Code Playgroud)

然而,这是在错误的树上咆哮.看看apt-get的调用选项:

~ % apt-get --help
apt 0.9.7.6 for amd64 compiled on Oct 16 2012 18:23:06
Usage: apt-get [options] command
       apt-get [options] install|remove pkg1 [pkg2 ...]
       apt-get [options] source pkg1 [pkg2 ...]

apt-get is a simple command line interface for downloading and
installing packages. The most frequently used commands are update
and install.

…
  -y  Assume Yes to all queries and do not prompt    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
…
Run Code Online (Sandbox Code Playgroud)

apt-get为您提供了一个选项,可以自动回答所有问题的所有问题.干净吧?请注意,其他程序可能使用不同的选项键,因此建议您始终阅读其精细手册(RTFM).