Запустите текстовый файл как команды в Bash
Если у меня есть текстовый файл с отдельной командой в каждой строке, как заставить терминал запускать каждую строку как команду? Я просто не хочу копировать и вставлять по 1 строке за раз. Это не должен быть текстовый файл... Это может быть любой тип файла, который будет работать.
example.txt
:
sudo command 1
sudo command 2
sudo command 3
5 ответов
Вы можете сделать сценарий оболочки с этими командами, а затем chmod +x <scriptname.sh>
, а затем просто запустить его
./scriptname.sh
Написать скрипт bash очень просто
Файл макета sh:
#!/bin/sh
sudo command1
sudo command2
.
.
.
sudo commandn
Вы также можете просто запустить его с помощью оболочки, например:
bash example.txt
sh example.txt
Казнить
. example.txt
Это делает именно то, что вы просите, без установки исполняемого флага на файл или запуска дополнительного экземпляра bash.
Для подробного объяснения см., Например, https://unix.stackexchange.com/questions/43882/what-is-the-difference-between-sourcing-or-source-and-executing-a-file-i
Вы можете использовать что-то вроде этого:
for i in `cat foo.txt`
do
sudo $i
done
Хотя, если у команд есть аргументы (т.е. в строках есть пробел), вам, возможно, придется немного поэкспериментировать с этим, чтобы защитить пустое пространство, чтобы вся строка была видна sudo
как команда. Но это дает вам представление о том, как начать.