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

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

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

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

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

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

Есть два метода.

Во-первых, наиболее распространенным является запись файла, убедитесь, что первая строка

#!/bin/bash

Затем сохраните файл. Затем отметьте его исполняемым с помощью chmod +x file

Затем, когда вы нажмете (или запустите файл из терминала), команды будут выполнены. По соглашению эти файлы обычно не имеют расширения, однако вы можете сделать так, чтобы они заканчивались на .sh или любым другим способом.

Несколько заметок:

  • Любой (и я имею в виду любой) файл может быть выполнен в Linux при условии, что первая строка - это путь к программе, которая должна интерпретировать файл. Общие примеры включают /bin/python, /bin/sh, /bin/dash, но даже странные вещи с мячом работают как /bin/mysql
  • Bash - это полноценный язык. Это значительно сложнее, чем cmd.exe в окнах. Он имеет сильный язык программирования, который поддерживает функции, циклы, условные выражения, строковые операции и т.д.
  • Эти документы может помочь, если вы столкнетесь с проблемами.
  • Если вы не хотите делать файл исполняемым, вы можете запустить его, передав его в качестве аргумента 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 > filetesttest1foobarEOF

Это позволяет вам писать несколько строк в одной команде. Содержание file тогда было бы так:

testtest1foobar

Если вы хотите добавить что-то в файл, замените > к >>.

Надеюсь, это поможет!


РЕДАКТИРОВАТЬ: О, я понимаю, значит, вы бы записали файл в gedit, используя .sh> расширение (необязательно, но это хорошая идея), а затем в файловом менеджере щелкните правой кнопкой мыши файл, выберите Свойства-Разрешения и проверьте Allow executing file as program. Затем вы можете дважды щелкнуть по нему, и он запустится :). Кроме того, если вы хотите сделать это в терминале, вы можете запустить эту команду, чтобы сделать ее исполняемой (возможно, вы захотите добавить sudo если это не принадлежит тебе):

chmod +x file

И бежать:

./file

Эквивалентом пакетных файлов Windows являются сценарии оболочки, а отличным руководством по началу работы является Сценарии Bash.

По большей части команды, которые вы можете вводить в командной строке, могут быть помещены в сценарий командной оболочки.

Пара вещей, которые отличаются от пакетных файлов Windows:

  • Существуют различные интерпретаторы команд, называемые оболочками. По умолчанию используется bash, но если вам интересно, есть и другие, такие как zsh, ksh, dash, perl, python и т.д.

  • Чтобы запустить сценарий оболочки, вам нужно сделать файл исполняемым, что вы можете сделать с помощью chmod +x <filename>

  • В Ubuntu текущий каталог не является путем поиска программы, поэтому вам необходимо запустить ./<filename>, не <filename>

  • Имена переменных - это $<varname>, не %<varname>%

  • Команды в сценарии командной оболочки по умолчанию не печатаются, как в командном файле.

  • Расширение имени файла может быть .sh или (что более привычно) вам не нужно использовать расширение. Поставь #!/bin/bash в самой первой строке файла, который сообщает Ubuntu, какую программу использовать для запуска файла.

  • Комментарии начинаются с #, не rem.

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