Как написать и использовать текстовый пакетный командный файл

Как написать и использовать текстовый пакетный командный файл

Как написать и использовать после этого типичный текстовый пакетный командный файл?

Я говорю о файле, который содержит следующие команды:

sudo -i
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get check
exit

Думаю, я смогу написать это с помощью Leafpad, но...

  1. Где мне его сохранить?

  2. Какой формат?Какое имя и расширение?

  3. Как я могу использовать его после этого в сеансе LXTerminal, имея только один заказ (в идеале, если бы была возможность использовать его автоматически при каждом запуске системы)?

Большое спасибо за уделенное время!

решение1

В мире unix-подобных систем нет "пакетных" файлов. Мы используем скрипты, содержащие "she-bangs". Чтобы создать такой скрипт, откройте текстовый редактор (например, Leafpad) и начните со строки вроде этой:

#!/path/to/interpreter

Где /path/to/interpreterнаходится двоичный файл, который будет использоваться для интерпретации вашего скрипта. В Linux мы обычно используем "bash" (Bourne Again SHell), "эволюцию" старой доброй оболочки Bourne Shell. По сути, bash запускает двоичные файлы с аргументами, указанными в скрипте, из путей, включенных в переменную среды PATH (обычно она включает /bin, /sbin, /usr/bin, /usr/sbin и другие).

Но вы также можете использовать другие интерпретаторы, такие как Python, Perl, Ruby, sh, csh, zsh, dash, ksh, помимо множества других вариантов.

Ниже she-bang идет ваш скрипт. В вашем конкретном случае, чтобы запустить указанные команды, мы можем использовать bash, в скрипте вроде этого:

#!/bin/bash

# the line above sets bash as the interpreter

# note that "sudo" is not required here because we will run the script as super user later.

apt-get update
# updates APT repositories

apt-get upgrade
# check for software upgrades and upgrade them

apt-get autoremove
# remove obsolete packages

apt-get autoclean
# remove stored .deb files

apt-get check
# update package cache and check for broken dependencies

Теперь сохраните файл. Расширение не нужно, но по символическим причинам назовите его расширением .sh. Мы запустим скрипт как суперпользователь, поэтому нет необходимости менять права доступа к файлу.

Откройте терминал и перейдите в путь, где вы сохранили свой скрипт. Допустим, вы сохранили его как script.sh. Выполните следующую команду:

chmod +x script.sh

chmodозначает "изменить режим" и используется для изменения того, кто может делать что-либо с вашим скриптом. +xдобавляет разрешение на выполнение для всех пользователей, что позволяет любому запускать скрипт, как будто это любая другая программа. Я не буду вдаваться в полный список того, что означают все эти разрешения, ноэтот вопросдовольно хорошо их резюмирует. После этого вы можете ввести:

sudo ./script.sh

Не забудьте часть ./ и не оставляйте пробелов между ., / и s. Команда sudoбудет запущена ./script.shс привилегиями root, поэтому потребуется ваш пароль (конечно, вы должны быть системным администратором).

решение2

То, что в мире Windows называется "пакетным" файлом, в мире *NIX называется "скриптом". По большей части скрипты представляют собой файл с несколькими командами или командами, организованными определенным образом. Вот несколько вещей, которые вам следует знать:

Базовая структура

Обычно вы увидите что-то вроде этого:

#!/bin/sh
# Comments 
printf "Hello world"

Первая строка указывает интерпретатор (обычно называемый shebangстрокой), вторая — комментарий (все, что находится после, #не интерпретируется, это просто текст), третья — фактическая команда.

В терминале вы можете вызвать файл без строки shebang. Это приведет к тому, что скрипт будет прочитан и интерпретирован вашей текущей оболочкой (также известной как интерпретатор команд). Например, я запускаю mkshоболочку. Я указываю, что #!/bin/shон будет запущен оболочкой Ubuntu по умолчанию - dash. Каждая оболочка имеет некоторые особенности синтаксиса команд, поэтому вам нужно соответствующим образом адаптировать свой скрипт.

Написание сценария

Это должно быть сделано в текстовом редакторе, но вы также можете написать это в LibreOffice Writer и затем сохранить его в виде обычного текста. Лично я просто использую текстовые редакторы командной строки ( nanoв основном или vim); аналогия здесь была бы editв версиях Windows до Windows 7.

Имена файлов и расширения не имеют значения в системах *NIX, так как система считывает первые несколько байт файла, чтобы определить его тип. Я привык добавлять .shрасширение, но на самом деле - это не нужно.

Сделать скрипт исполняемым

Это делается с помощью chmod 755 scriptName.shкоманды. Это означает read-write-executeразрешения для владельца (вас) read-executeдля пользователей, которые находятся в группе владельца (например, владельцем файла может быть admin, поэтому, если вы принадлежите к adminгруппе, вы можете читать и выполнять файл ), и read-executeдля кого-либо еще. Никогда не давайте разрешения на запись другим ! Если у вас есть привилегии суперпользователя, это может привести к какой-то плохой афере (т. е. вас могут взломать, и злонамеренный пользователь изменит ваши скрипты так, что они сохранят вашу личную информацию ).

Запуск скриптов

Вы всегда можете запустить скрипт, перейдя в его расположение в терминале и введя ./scriptName.

Чтобы запустить любую команду где угодно, включая скрипты, они должны храниться где-то в системе, которая включена в $PATHпеременную. Вот что я имею в виду:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/xieerqi/bin

$PATHпеременная сообщает мне, что если скрипт или исполняемый двоичный файл находится в /usr/local/sbinили /usr/local/binили любом другом из этих каталогов, я могу выполнить эту команду, просто введя ее в терминал.

Теперь, для ваших собственных скриптов, вы должны создать binпапку, и хранить скрипты там. Если вы используете bashваш .profileфайл конфигурации содержит следующие строки:

# set PATH so it includes user's private bin if it exists
#if [ -d "$HOME/bin" ] ; then
#    PATH="$HOME/bin:$PATH"
#fi

Если вы раскомментируете (удалите #) перед последними тремя строками (от ifдо fi), ваша личная binпапка будет включена в $PATHпеременную.

Связанный контент