Как создать файл сценария для команд терминала?
В Windows я могу написать файл, содержащий команды для cmd (обычно .cmd
или же .bat
файлы). Когда я нажимаю на эти файлы, он открывается cmd.exe
и запустить их команды, содержащиеся в файле.
Как бы я сделал это в Ubuntu?
Я уверен, что это дубликат, но я не могу найти свой ответ.
Это похоже на эти вопросы, но они не отвечают на вопрос:
3 ответа
Есть два метода.
Во-первых, наиболее распространенным является запись файла, убедитесь, что первая строка
#!/bin/bash
Затем сохраните файл. Далее отметьте его как исполняемый chmod +x file
Затем, когда вы нажмете (или запустите файл из терминала), команды будут выполнены. По соглашению эти файлы обычно не имеют расширения, однако вы можете сделать так, чтобы они заканчивались .sh
или любым другим способом.
Несколько заметок:
- Любой (и я имею в виду любой) файл может быть выполнен в Linux при условии, что в первой строке указан путь к программе, которая должна интерпретировать файл. Общие примеры включают
/bin/python
,/bin/sh
,/bin/dash
, но даже нечетные вещи работают как/bin/mysql
- Баш это полный язык. Это намного сложнее, чем cmd.exe в Windows. Он имеет сильный язык программирования, который поддерживает функции, циклы, условные выражения, строковые операции и т. Д.
- Эти документы могут помочь, если у вас возникнут проблемы.
- Если вы не хотите делать файл исполняемым, вы можете запустить его, передав его в качестве аргумента bash:
bash file/to/run.sh
Простой пример Bash
#!/bin/bash
echo "This is a shell script"
ls -lah
echo "I am done running ls"
SOMEVAR='text stuff'
echo "$SOMEVAR"
Второй метод заключается в записи команд с использованием script
, Бежать script
тогда просто делай вещи Когда вы закончите делать тип вещи exit
и скрипт сгенерирует для вас файл со всеми "вещами", которые вы сделали. Это менее используется, но работает довольно хорошо для создания таких вещей, как макросы. man script
для получения дополнительной информации.
Вы имеете в виду запись в файл с помощью сценария оболочки? Вот несколько способов:
touch file
Этот метод просто создает файл, но если файл уже существует, он просто меняет дату модификации на время, когда вы использовали эту команду.
echo "text" > file
Этот метод перезаписывает содержимое file
в text
, Если вы хотите очистить файл, вы можете просто сделать это:
echo "" > file
Скажем, вы хотите написать более одной строки, и вы не хотите использовать тысячи echo
Команды, вы бы использовали эту команду:
cat << EOF > file
test
test1
foo
bar
EOF
Это позволяет вам написать несколько строк в одной команде. Содержание file
будет тогда это:
test
test1
foo
bar
Если вы хотите добавить файл, замените >
в >>
,
Надеюсь это поможет!
РЕДАКТИРОВАТЬ: О, я вижу, так что вы бы написать файл в Gedit, используя .sh
расширение (необязательно, но это хорошая идея), а затем в файловом менеджере щелкните файл правой кнопкой мыши, выберите "Свойства" - "Разрешения" и проверьте Allow executing file as program
, Тогда вы можете дважды щелкнуть по нему, и он будет работать:). Кроме того, если вы хотите сделать это в терминале, вы можете запустить эту команду, чтобы сделать ее исполняемой (вы можете добавить sudo
если он вам не принадлежит)
chmod +x file
И запустить:
./file
Эквивалентом пакетных файлов Windows являются сценарии оболочки, а отличным руководством по началу работы является Bash Scripting.
По большей части команды, которые вы можете вводить в командной строке, могут быть помещены в сценарий оболочки.
Пара вещей, которые отличаются от командных файлов Windows:
Существуют разные интерпретаторы команд, называемые оболочками. По умолчанию используется bash, но если вам интересно, есть и другие, такие как zsh, ksh, dash, perl, python и т. Д.
Чтобы запустить скрипт оболочки, вам нужно сделать исполняемый файл, что вы можете сделать с
chmod +x <filename>
В Ubuntu текущий каталог не является путем поиска программы, поэтому вам нужно запустить
./<filename>
не<filename>
Имена переменных
$<varname>
не%<varname>%
Команды в сценарии оболочки по умолчанию не печатаются, как в командном файле.
Расширение имени файла может быть
.sh
или (более привычно) вам не нужно использовать расширение. Положил#!/bin/bash
в самой первой строке файла, которая говорит Ubuntu, какую программу использовать для запуска файла.Комментарии начинаются с
#
неrem
,
Надеюсь, что это поможет и получайте удовольствие от написания сценариев!