Как создать файл сценария для команд терминала?

В Windows я могу написать файл, содержащий команды для cmd (обычно .cmd или же .bat файлы). Когда я нажимаю на эти файлы, он открывается cmd.exe и запустить их команды, содержащиеся в файле.

Как бы я сделал это в Ubuntu?

Я уверен, что это дубликат, но я не могу найти свой ответ.
Это похоже на эти вопросы, но они не отвечают на вопрос:

Храните часто используемые команды терминала в файле

Эмулятор CMD.exe в Ubuntu для запуска файла.cmd/.bat

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,

Надеюсь, что это поможет и получайте удовольствие от написания сценариев!

Другие вопросы по тегам