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

98

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

Как мне это сделать в Ubuntu?

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

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

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

    
задан Seth 30.11.2012 в 03:56
источник

3 ответа

128

Существует два метода.

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

#!/bin/bash

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

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

Несколько примечаний:

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

    
ответ дан coteyr 30.11.2012 в 04:18
источник
14

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

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

Несколько вещей, которые отличаются от командных файлов Windows:

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

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

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

  • Переменные имена: $<varname> , а не %<varname>%

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

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

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

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

    
ответ дан iBelieve 30.11.2012 в 04:14
13

Вы имеете в виду писать в файл с помощью сценария оболочки? Вот несколько способов:

touch file

Этот метод просто создаст файл, но если файл уже существует, он просто меняет дату модификации на время, когда вы использовали эту команду.

echo "text" > file

Этот метод перезаписывает содержимое file в text . Если вы хотите очистить файл, вы можете просто сделать это:

echo "" > file

Предположим, вы хотите написать несколько строк, и вы не хотите использовать тысячи% команд co_de%, вы должны использовать эту команду:

cat << EOF > file
test
test1
foo
bar
EOF

Это позволяет вам писать несколько строк в одной команде. Тогда содержимое echo будет следующим:

test
test1
foo
bar

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

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

EDIT : О, я вижу, поэтому вы должны написать файл в gedit, используя расширение >> (необязательно, но это хорошая идея), а затем в файловом менеджере, справа нажмите на файл, выберите «Свойства» и «Разрешения», а также « .sh ». Затем вы можете дважды щелкнуть по нему, и он запустится :). Кроме того, если вы хотите сделать это в терминале, вы можете запустить эту команду, чтобы сделать ее исполняемой (вы можете захотеть добавить Allow executing file as program , если она не принадлежит вам):

chmod +x file

И для запуска:

./file
    
ответ дан MiJyn 30.11.2012 в 04:00