如果我有一个文本文件,每一行都有一个单独的命令,我如何让终端将每一行作为命令运行?我只是不想一次复制并粘贴一行。它不一定是文本文件...它可以是任何类型的有效文件。
example.txt
:
sudo command 1
sudo command 2
sudo command 3
您可以使用这些命令创建一个 shell 脚本,然后
chmod +x <scriptname.sh>
,然后通过 运行它
./scriptname.sh
编写bash脚本非常简单
样机sh文件:
#!/bin/sh
sudo command1
sudo command2
.
.
.
sudo commandn
您也可以使用 shell 来运行它,例如:
bash example.txt
sh example.txt
执行
. example.txt
这正是您所要求的,无需在文件上设置可执行标志或运行额外的 bash 实例。
你可以使用这样的东西:
for i in `cat foo.txt`
do
sudo $i
done
尽管如果命令有参数(即行中有空格),您可能需要稍微调整一下以保护空格,以便整个字符串被
sudo
视为命令。 但它为您提供了如何开始的想法。
cat /path/* | bash
或
cat commands.txt | bash
我喜欢这样做:
$ tree -p --noreport
[drwxrwxr-x] .
├── [drwxrwxr-x] bin
│ └── [-rwxrwxr-x] hello
└── [-rwxrwxr-x] main
$ cat main
#!/bin/sh
PATH="./bin:$PATH"
hello
$ cat hello
#!/bin/sh
echo hello
$ ./main
hello
$ █
也许是不好的做法?请在评论中告诉我们。