2012-03-22 123 views
21

如果我在每一行上都有一个带有单独命令的文本文件,我将如何让终端将每行作为命令运行?我只是不想一次复制并粘贴一行。它不必是一个文本文件...它可以是任何类型的文件,将工作。ubuntu将文本文件作为命令运行

例如.TXT

sudo command 1 
sudo command 2 
sudo command 3 

回答

38

你可以做一个shell脚本这些命令,然后chmod +x <scriptname.sh>,然后只是

./scriptname.sh 

它非常简单运行它写一个bash脚本

样机sh文件:

#!/bin/sh 
sudo command1 
sudo command2 
. 
. 
. 
sudo commandn 
+0

你能用我的例子写一个模型.sh文件吗 – Blainer 2012-03-22 15:35:20

+0

在linux扩展中不是强制性的(你甚至可以创建一个没有扩展名的文件)。它可以工作,即使扩展名是.txt – Saphrosit 2012-03-22 15:37:28

+0

是的,但是你应该在文件头部有这个“#!/ bin/sh”,这样内核就知道它的shell脚本 – Chaos 2012-03-22 15:38:33

43

你也可以只用一个shell中运行它,例如:

bash example.txt 

sh example.txt 
+6

只是我正在寻找的快捷方式。谢谢。 – saccharine 2013-03-14 21:26:37

+0

也要调试它可以使用bash -x example.txt – 2014-03-03 16:13:56

+0

这就是为什么我安装了Ubuntu。我知道有一个更简单的方法。 – MJoraid 2017-07-06 05:05:54

6

您可以使用这样的事情:

for i in `cat foo.txt` 
do 
    sudo $i 
done 

虽然如果命令具有参数(即行中有空格),您可能必须稍稍用一下来保护空白区域,以便通过sudo将整个字符串看作命令。但它给你一个关于如何开始的想法。