Sha-bang выбор интерпретатора для выполнения команд скрипта

.

Shell скрипты — это наборы команд, хранящиеся в файле. При запуске файла, Shell читает его и выполняет команды так, как будто они были введены при помощи клавиатуры. Кроме стандартных команд Shell имеет еще целую кучу возможностей, благодаря которым можно писать достаточно мощные скрипты при помощи нескольких строк.

Написание первого скрипта

Для написания скрипта Вам нужно сделать 3 вещи:

  • написать скрипт
  • установить права на выполнение
  • положить его туда, где Shell сможет найти его

Shell скрипт — это обычный текстовый файл. По-этому для его написания Вам понадобится текстовый редактор. Существует целая уйма таких редакторов под Linux. Например

  • vi (vim) — не рекомендую использовать новичкам, иначе поначалу потратите кучу нервов и времени
  • nano — именно то что нужно новичку. Все просто, подсказки написаны в футере редактора
  • gedit — стандартный графический текстовый редактор в оболочке Gnome
  • kwrite — стандартный графический текстовый редактор для KDE

Вы также можете использовать любой другой редактор, который Вам нравится. Я обычно использую geany или vi. Так давайте уже напишем этот первый скрипт. По традиции представляю Вам скрипт «Hello World» на Bash

Сохраните этот файл под любым именем, например my_script. Теперь проанализируем, что же в нем написано.

Первая строка очень важная. Она указывает, какую программу нужно использовать для интерпретации скрипта.

HackWare.ru

Другие языки вроде Perl, Awk, Python, PHP также могут использовать этот механизм.

Вторая строка — это просто комментарий. Все что находится за символом «#» игнорируется в Bash. Комментарии становятся полезными, когда Ваш скрипт будет состоять из множества строк. Обычно в комментариях описывают что делает той или иной блок кода, чтобы если вдруг кто-то посторонний посмотрит на код, то ему было понятно.

Последняя строка — команда echo. Отправляет текст на стандартный вывод, другими словами просто печатает его.

3,2,1,0 — Запуск

Для начала установим права на запуск скрипта при помощи команды chmod

755 — означает, что Вы имеете права на выполнение, чтение и запись. Все остальные могут только читать и выполнять. Если Вы хотите ограничить доступ к скрипту, то установите права 700.

Запустить скрипт можно 2 способами:

или же

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

После запуска Вы должны увидеть «Hello World!». Если нет, тогда убедитесь, что Вы запускает скрипт из директории в которой он лежит.

Прежде чем идти дальше, нужно узнать кое-что о путях. При вводе имени команды система ищет ее в специальных директориях. Если команда не найдена, то получим хорошо известное сообщение об ошибке: command not found.

Посмотреть список директорий, в которых Shell ищет команды — просто

Вы увидите список директорий разделенных двоеточием, в которых система будет искать команду. В нашем случае этого не происходило, потому что мы указали путь к скрипту («./»);

Добавить в этот список новый каталог можно при помощи следующей команды

Где directory — путь к любому каталогу.

Хорошей практикой является создание в своей домашней директории каталог bin, в который складывать все свои скрипты. Создайте ее при помощи команды mkdir и переместите в нее Ваш скрипт.

P.S.: если Вы добавили какую-то директорию в переменную PATH, то после выхода из системы Ваши изменения исчезнут. Чтобы изменения сохранились нужно написать эту команду в файл .bashrc или .bash_profile, который находится в домашней директории, тогда она будет выполнятся каждый раз когда Вы входите в систему.

По мотивам http://linuxcommand.org

Latest Stable Version 4.3.1

The latest stable version 4.3.1 can be downloaded from here:
Classic Shell 4.3.1 (English)
Classic Shell 4.3.1 (French)
Classic Shell 4.3.1 (German)
Classic Shell 4.3.1 (Italian)
Classic Shell 4.3.1 (Polish)
Classic Shell 4.3.1 (Russian)
Classic Shell 4.3.1 (Spanish)
Classic Shell 4.3.1 (Traditional Chinese)
Classic Shell 4.3.1 (Simplified Chinese)

The latest version is also available on the FossHub.com mirror.

Older Versions

Versions 4.0.0 and newer can be downloaded from the Mediafire archive
The archive also contains the PDB files for people who need help debugging the code.

Versions 3.6.8 and older can be downloaded from the Source Forge archive

The fosshub archive also contains a complete set of old versions.

Translations

Translation DLLs for the latest version can be downloaded from here:
Latest Translations

Translation DLLs for older version can be found here:
All Translations

Note: a translation DLL will only work for the exact version of Classic Shell it is intended for. Make sure you download the right version.

Classic Shell Utility

The Classic Shell Utility can assist you in troubleshooting problems with the Classic Shell software. Download it from here: http://www.mediafire.com/download/3ukeryzw41qpfz8/ClassicShellUtility.exe
It can perform multiple functions.

Save system log

The tool will collect information about your system to help with troubleshooting. Save the file and attach it in a forum post that describes your problem.

For best results:

  • Run the tool using the same account that is causing problems.

    Основы работы в командной строке Linux

    Do not run as administrator.

  • The tool may ask for administrative credentials if necessary. If you choose not to provide them, the tool will still work but will collect less information.
  • Some of the collected information may be sensitive (like what applications you have installed). If you wish to keep that information confidential, you can either upload the file to the FileDrop folder (see below), or archive it with a password, attach the archive in the forums and send a PM with the password to the user Ivo.

Remove Classic Shell

The tool will attempt to manually remove the Classic Shell software from your system. Use it in case you are having problems uninstalling using the conventional methods. It is designed to work even after a failed attempt to uninstall the software when some of the registry may be corrupted or some of the files may be missing.

For best results:

  • Close all other programs
  • Sign out all other accounts
  • Read all the instructions carefully
  • Restart your computer after the tool completes

Show Metro colors

The tool will display the Windows start screen color palette. This is useful for people trying to create skins for Windows 8, 8.1 and 10.

Uploads

Use this location to upload crash dumps or screenshots for troubleshooting:
Media Fire FileDrop
Important: Please enter a description for the file — who is it from and what is it for. Or post a message in the forums. Otherwise I have no way of knowing what to do with it.

Сответствие консольных команд Windows и Linux.

Сответствие консольных команд Windows и Linux.

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

Соответствие команд CMD Windows командам Linux

Описание Команда CMD Windows Команда Linux
Вызов справочной системы HELP apropos, man, whatis
Вызов командного интерпретатора (оболочки) CMD bash, csh, sh
Очистка экрана CLS clear, reset
Вывод сообщения на экран ECHO echo
Пауза в работе PAUSE sleep
Настройка параметров терминала MODE stty
Установка значений переменных окружения (указание путей к каталогам) PATH, SET, SETx env, set
Изменение системной даты DATE date
Изменение системного времени TIME date
Выход из командной строки EXIT exit
Работа с файлами и каталогами
Отображение списка файлов и каталогов DIR dir, ls
Создание каталога MKDIR mkdir
Удаление каталога RMDIR rmdir
Удаление файла DEL, ERASE rm
Переход в другой каталог CD cd
Копирование файлов или каталогов COPY, XCOPY cp
Переименование файла REN, RENAME mv
Перемещение файлов MOVE mv
Поиск файла WHERE find, locate
Вывод на экран содержимого файла TYPE, MORE cat, less, more
Сравнение содержимого двух файлов COMP, FC cmp, diff, diff3, sdiff
Сортировка строк в текстовом файле SORT sort

Эта работа посвящена ознакомлению со средствами языка shell, для создания процедур обработки данных. Изучаются вопросы оформления shell-процедур.

Изучение команд:

Set – присваивание значения параметрам, передаваемым процедурам;

Echo, read, banner – вспомогательные команды для ввода и вывода информации;

If, then, else – команды проверки условий и ветвления вычисления в процедуре;

Test – проверка файлов, числовых величин, строк символов;

While, until, for – команды построения циклических процедур;

— правила построения и постановки значений переменных;

— вычисление арифметических выражений;

— обработка символьных строк.

Командный язык shell (в переводе — раковина, скорлупа) фактически есть язык программирования очень высокого уровня. На этом языке пользователь осуществляет управление компьютером. Обычно, после входа в систему вы начинаете взаимодействовать с командной оболочкой.

Программирование на языке Shell происходит в окне терминала, а сами операции выполняются сразу, как только нажимается клавиша Enter после введения текста функции. (В отличие, скажем, от языка С++, где для того, чтобы компьютер выполнил введённые вами функции, необходимо запускать написанную программу нажатием клавиши F9. В Shell такого нет, а значит, нужно быть внимательным при вводе функций и команд, т.к. в случае ошибки придётся переписывать всю программу заново).

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

Имя shell-переменной — это начинающаяся с буквы последовательность букв, цифр и подчеркиваний.

Значение shell-переменной — строка символов.

Для присваивания значений переменным может использоваться оператор присваивания "=".

var_1=13 — "13" — это не число, а строка из двух цифр. (аналог из С++: char var_1[3] = “13”) )

var_2="ОС UBUNTU" — здесь двойные кавычки (" ") необходимы, так как в строке есть пробел.

ВАЖНО: Обратим внимание на то, что, как переменная, так и ее значение должны быть записаны без пробелов относительно символа "=".

Возможны и иные способы присваивания значений shell-переменным. Так например запись,

приводит к тому, что сначала выполняется команда "date" (обратные кавычки говорят о том, что сначала должна быть выполнена заключенная в них команда), а результат ее выполнения, вместо выдачи на стандартный выход, приписывается в качестве значения переменной, в данном случае "DAT".

Можно присвоить значение переменной и с помощью команды "read", которая обеспечивает прием значения переменной с (клавиатуры) дисплея в диалоговом режиме (аналог из С++: scanf или cin). Обычно команде "read" в командном файле предшествует команда "echo", которая позволяет предварительно выдать какое-то сообщение на экран. Например:

При выполнении этого фрагмента командного файла, после вывода на экран сообщения

Введите трехзначное число:

интерпретатор остановится и будет ждать ввода значения с клавиатуры. То число, которое пользователь введёт с клавиатуры, станет значением переменной "x".

Одна команда "read" может прочитать (присвоить) значения сразу для нескольких переменных. Если переменных в "read" больше, чем их введено (через пробелы), оставшимся присваивается пустая строка. Если передаваемых значений больше, чем переменных в команде "read", то лишние игнорируются.

ПРЕДУПРЕЖДЕНИЕ. На самом деле интерпретатор для продолжения работы ждет лишь нажатия клавиши. Введенное вами число воспринимается им не как число, а как последовательность символов(!). Интерпретатор не проверяет, что вы ввели. Поэтому в качестве значения переменной может оказаться любая введенная абракадабра или просто нажатие , как значение пустой строки. (Для обеспечения проверки формата ввода следует написать свою команду).

При обращении к shell-переменной необходимо перед именем ставить символ "$" для получения Значения этой переменной. Сравните две команды, по-разному набранные с клавиатуры и заметьте разницу в результатах, распечатываемых программой на экране. Запись echo x печатает исключительно те буквы, которые введены после команды echo. (Аналог в С: printf(“x”) и printf(“%d”, x)).

И еще один пример. Фрагмент командного файла:

выдаст на экран

Что наглядно показывает, что команда echo может за один раз выводить на экран несколько переменных.

Команда "set" устанавливает значения параметров. Это бывает очень удобно. Например, команда "date" выдает на экран текущую дату, скажем, "Mon Oct 13 16:46:28 2011", состоящую из пяти слов, тогда

выдаст на экран

Команда "set" позволяет также осуществлять контроль выполнения программы, например:

set -v на терминал выводятся строки, читаемые shell.
Set +v отменяет предыдущий режим.
Set -x на терминал выводятся команды перед выполнением.
Set +x отменяет предыдущий режим.

Команда "set" без параметров выводит на терминал состояние программной среды

Как во всяком языке программирования в тексте на языке shell могут быть комментарии. Для этого используется символ "#". Все, что находится в строке (в командном файле) левее этого символа, воспринимается интерпретатором как комментарий. Например,

Как во всяком процедурном языке программирования в языке shell есть операторы. Ряд операторов позволяет управлять последовательностью выполнения команд.

Введение в администрирование UNIX/Командная строка UNIX

В таких операторах часто необходима проверка условия, которая и определяет направление продолжения вычислений.

Команда test ("[ ]")

Команда test проверяет выполнение некоторого условия. С использованием этой (встроенной) команды формируются операторы выбора и цикла языка shell.

Два возможных формата команды:

test условие

или

[ условие ]

Пробелы должны быть и между значениями и символом сравнения или операции (как, кстати, и в команде "expr") . Про последнюю следует сказать подробнее. Именно команда expr даёт программе возможность воспринимать ту или иную переменную именно как число. (Иными словами, если сравнивать два ЯП, Shell и С, запись echo `expr $x` будет аналогична записи printf(“%d”, x).

Разница в том, что в языке Си тип данных (char, int и пр.) определяется и устанавливается сразу при объявлении переменной, а в shell тип данных определяется после того, как значение было записано в переменную и может меняться в теле программы).

Пример работы с командами и операторами языка shell.

Попробуйте объяснить смысл каждой строки из данного примера. Какие операции запрашивает пользователь, и какие ответы даёт система?

В shell используются условия различных "типов".

Условный оператор "if"

В общем случае оператор "if" имеет структуру

if [условие] ; echo $0

then список

[elif условие

then список]

[else список]

Fi

Здесь "elif" сокращенный вариант от "else if" может быть использован наряду с полным, т.е. допускается вложение произвольного числа операторов "if" (как и других операторов). Разумеется "список" в каждом случае должен быть осмысленный и допустимый в данном контексте.

Конструкции

[elif условие

then список]

и

[else список]

не являются обязательными (в данном случае для указания на необязательность конструкций использованы квадратные скобки — не путать с квадратными скобками команды "test"!).

пример использования оператора if:

Самая усеченная структура этого оператора

if условие

then список

fi

Обратите внимание, что структура обязательно завершается служебным словом "fi". Число "fi", естественно, всегда должно соответствовать числу "if".

Примеры.

Пусть написан расчет "if-1"

Тогда вызов расчета

if-1 12 11

даст

/home/sae/STUDY/SHELL,

а

if-1 12 13

даст

if-1 : Hello!

Оператор вызова ("case")

Оператор выбора "case" имеет структуру:

case строка in

шаблон) список команд;;

шаблон) список команд;;

esac

Здесь "case" "in" и "esac" — служебные слова. "Строка" (это может быть и один символ) сравнивается с "шаблоном". Затем выполняется "список команд" выбранной строки. Непривычным будет служебное слово "esac", но оно необходимо для завершения структуры.

Пример.

###

# case-1: Структура "case".

# Уже рассматривавшийся в связи со

# структурой "if" пример проще и

# нагляднее можно реализовать с

# помощью структуры "case".

echo -n " А какую оценку получил на экзамене?: "

read z

case $z in

5) echo Молодец ! ;;

4) echo Все равно молодец ! ;;

3) echo Все равно ! ;;

2) echo Все ! ;;

*) echo ! ;;

esac

Непривычно выглядят в конце строк выбора ";;", но написать здесь ";" было бы ошибкой. Для каждой альтернативы может быть выполнено несколько команд. Если эти команды будут записаны в одну строку, то символ ";" будет использоваться как разделитель команд.

Обычно последняя строка выбора имеет шаблон "*", что в структуре "case" означает "любое значение". Эта строка выбирается, если не произошло совпадение значения переменной (здесь $z) ни с одним из ранее записанных шаблонов, ограниченных скобкой ")". Значения просматриваются в порядке записи.

###

# case-2: Справочник.

# Для различных фирм по имени выдается

# название холдинга, в который она входит

case $1 in

ONE|TWO|THREE) echo Холдинг: ZERO ;;

MMM|WWW) echo Холдинг: Not-Net ;;

Hi|Hello|Howdoing) echo Холдинг: Привет! ;;

*) echo Нет такой фирмы ;;

esac

Оператор цикла с перечислением ("for")

Оператор цикла "for" имеет структуру:

for имя in список значений

do

список команд

done

где "for" — служебное слово определяющее тип цикла, "do" и "done" — служебные слова, выделяющие тело цикла. Не забывайте про "done"! Фрагмент "in список значений" может отсутствовать.

Пример работы с оператором done:

Т.о. мы видим, что переменная i в цикле пробегает по всем значением, заданным в условии (т.е. по очереди принимает значения всех переменных, указанных в условии), и для каждого из них выполняет ту операцию, которая заказана в теле цикла.

Оператор цикла с истинным условием ("while")

Структура "while", также обеспечивающая выполнение расчетов, предпочтительнее тогда, когда неизвестен заранее точный список значений параметров или этот список должен быть получен в результате вычислений в цикле.

Оператор цикла "while" имеет структуру:

while условие

do

список команд

done

где "while" — служебное слово определяющее тип цикла с истинным условием. Список команд в теле цикла (между "do" и "done") повторяется до тех пор, пока сохраняется истинность условия (т.е. код завершения последней команды в теле цикла равен "0") или цикл не будет прерван изнутри специальными командами ("break", "continue" или "exit"). При первом входе в цикл условие должно выполняться.

a=`expr $a + 1`

т.е. при каждой итерации значение "a" увеличивается на 1.

Оператор цикла с ложным условием ("until")

Оператор цикла "until" имеет структуру:

until условие

do

список команд

done

где "until" — служебное слово определяющее тип цикла с ложным условием. Список команд в теле цикла (между "do" и "done") повторяется до тех пор, пока сохраняется ложность условия или цикл не будет прерван изнутри специальными командами ("break", "continue" или "exit"). При первом входе в цикл условие не должно выполняться.

Отличие от оператора "while" состоит в том, что условие цикла проверяется на ложность (на ненулевой код завершения последней команды тела цикла) проверяется ПОСЛЕ каждого (в том числе и первого!) выполнения команд тела цикла.

Примеры.

Здесь программа с бесконечным циклом ждет ввода слов (повторяя на экране фразу "some more"), пока не будет введено "5". После этого выдается "enough" и команда "break" прекращает выполнение цикла.


⇐ Предыдущая10111213141516171819Следующая ⇒


Дата публикования: 2014-11-04; Прочитано: 598 | Нарушение авторского права страницы



studopedia.org — Студопедия.Орг — 2014-2018 год.(0.012 с)…

HOW-TO: 10 простых и полезных трюков для командной строки UNIX и Linux

Полная информация по UNIX командам и их параметрам выдается с помощью справочной команды
man <имя команды> (q или Q — выход из man).
Далее под именем файла понимается простое, полное или относительное имя файла.
Простое имя файла — это имя файла в текущем (рабочем) каталоге (директории), например, mytest.
Полное (абсолютное) имя файла включает путь от корневого каталога, обозначаемого символом слеш (/), до каталога, содержащего файл, например, /home/u9999/dir/mytest
(слеш используется и как разделитель подкаталогов). Заметим, что /home/u9999 называется домашним каталогом пользователя u9999, домашний каталог обозначается тильдой (~).
Относительное имя файла содержит путь, который отсчитывается от текущего каталога и, следовательно, не начинается со слеша, например, dir1/mytest1.
Аналогичные пояснения относятся и к именам каталогов.

Следует иметь в виду, что большие и малые буквы в UNIX различаются.
При наборе команд и путей к файлу можно нажимать клавишу Tab для автодополнения имен; с помощью стрелок вверх и вниз можно выбрать ранее выполнявшуюся команду.

Ниже перечислены основные команды, с которыми полезно ознакомиться для работы в ОС UNIX:

  • pwd — выдать полный путь текущего каталога;
  • mkdir  <имя каталога> — создать каталог;
  • cd  <имя каталога> — сменить текущий каталог;
  • cd ..  — перейти в каталог уровнем выше ;
  • cd  — перейти в домашний каталог ;
  • ls — распечатать содержимое текущего каталога;
  • ls <имя каталога> —  распечатать содержимое заданного каталога;
  • rm -R  <имя каталога> — удалить каталог со ВСЕМИ (опция -R или -r) подкаталогами и файлами в нем;
    rm <имя файла> — удалить файл. Удалённый файл или каталог восстановить невозможно;
  • cp <имя копируемого файла> <имя каталога, в который копируем> — копировать файл, например
  • mv <имя исходного файла> <имя каталога, в который перемещаем|имя файла, в который переименовываем> — переместить (переименовать) файл;
  • cat <имя файла> —  выдать содержимое файла на консоль;
  • gzip <имя файла> — сжать файл;
  • gunzip <имя файла>.gz —  расжать файл;
  • tar <опции> <имя архива>.tar <имена файлов и каталогов> — работа с архиватором tar;
  • size <имя файла с исполняемой программой> — выдать размер исполняемой программы в байтах, например
    где
    — размер выполняемого кода,
    — размер области инициализированных данных,
    — размер области неинициализированных данных,
    общий размер программы,
    — общий размер программы в шестнадцатеричной системе,
    — имя программы.

    Если имя не указано, то будет использоваться a.out ;

  • quotacheck (добавленная команда) позволяет узнать назначенный пользователю лимит дискового пространства и текущий объем его данных на диске, например
  • du <опции> <имя файла или каталога> — оценка места на диске, занимаемого файлом или каталогом, например
    опция -h используется для более удобной формы выдачи (например, 1K 234M 2G), иначе по умолчанию в K, т.е. в Kбайтах (1 Кбайт=1024 байт); опция —si как -h, но использует степень 1000, а не 1024.
    опция -s используется для выдачи суммарного места на диске, занимаемого пользователем u9999.
        При отсутствии аргумента-имени выдается информация для текущего каталога:      — размер текущего каталога;       — размер каталога и подкаталогов.
  • passwd — сменить пароль;
  • uptime — получить время непрерывной работы сервера;
  • exit — выйти из оболочки (или отключиться от машины).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *