Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Linux_asp_2_rabota.doc
Скачиваний:
14
Добавлен:
16.08.2019
Размер:
322 Кб
Скачать
☆

2.3. Познакомимся с командой echo, переменными оболочки и параметрами запуска программ

Команда echo, как было сказано выше, позволяет распечатать на экране значения отдельных переменных оболочки, в том числе и переменных окружения, задающих условия выполнения всех программ (в том числе и самой оболочки). Принято говорить, что такие переменные создают среду окружения. Выше мы приводили команду, распечатывающую значения всех переменных оболочки. Их инициализация задается многими сценариями, выполняемыми в системе.

Сделаем небольшое отступление, для тех, кто программирует на С. Приведем фрагмент программы, распечатывающей список переменных оболочки, значение которых соответствует третьему аргументу функции main. Общий формат строки такой.

int main(int argc, char *argv[], char *env[])]

Эти три аргумента означают следующее:

argc– количество параметров, переданных при запуске программы.

char *argv[]- значения параметров, переданных при запуске программы.

char *env[]значения переменных оболочки.

/* Program ARGS.C */

#include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[], char *env[])

{

int i;

printf("The value of argc is %d \n\n", argc);

printf("These are the %d command-line arguments passed to"

" main:\n\n", argc);

for (i = 0; i < argc; i++)

printf(" argv[%d]: %s\n", i, argv[i]);

printf("\nThe environment string(s) on this system are:\n\n");

for (i = 0; env[i] != NULL; i++)

printf(" env[%d]: %s\n", i, env[i]);

return 0;

}

Приведем еще несколько переменных окружения и укажем на их роль. Дадим следующую команду.

echo $MAIL

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

/var/spool/mail/root

Командная строка начинается всегда с информации, определяемой переменной $PS1.

echo $PS1

[\u@\h \W]\$

После такого вывода ясно, что конкретно указывается в строке перед полем для набора команды (еще называемой строкой приглашения). При загрузке ASPLinux Live CD определена такая информация: \u – имя пользователя, \h – имя хоста (компьютера) и \W – текущая директория. Непосредственно перед полем ввода команд пользователя расположен знак $.

Еще одна специальная переменная оболочки PATH определяет список подкаталогов, где должны содержаться исполнимые файлы вызываемых команд. Используя команду

echo $PATH

получим список каталогов с основными утилитами.

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

Отметим отличия операционных систем семейства UNIX/Linux от Windows . Семейство последних так же имеет в своем составе переменную PATH. При вызове программы в командном режиме Windows , сначала проверяются текущий, а затем все каталоги, указанные в этой переменной окружения. В системах UNIX/Linux текущий каталог не проверяется. Поэтому, если Вы хотите вызвать команду, запустив файл, расположенный в каталоге не указанном в PATH, можно использовать несколько способов.

В первом указывается полный путь к файлу программы. Во втором задается относительный путь. Если активным является каталог, где расположена вызываемая программа, то относительный путь указывается так ./<имя файла>. Можно использовать символ точка для вызова команды из текущего каталога, набрав следующее.

. <имя файла>

(после точки надо обязательно вставить пробел).

Теперь исполните команду, изменяющую текущий (активный) каталог,

cd ~

Далее воспользуйтесь такой командой

cat > script2

для того, чтобы набрать следующий текст

#!/bin/bash

echo PATH

Такой сценарий после выполнения выводит PATH. При наборе в конце каждой строки нажимайте клавишу <Enter>, а по завершении – <Ctrl+d>. Далее надо придать файлу свойство, позволяющее выполнять его.

chmod u+x script2

Запустите этот сценарий, задавая полный путь к файлу

/root/script2

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

./script2

или по другому

. script2

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

Если просто задать имя файла

script2

то выводится сообщение о том, что файла нет

bash: script2: command not found

Задание 9

Проделайте следующие действия. Добавьте переменной PATH каталог /home. Перенесите туда созданный сценарий и опробуйте разные способы его выполнения.

Упомянутая ранее команда cd предназначена для смены активного каталога. Фактически она позволяет «путешествовать» в иерархической системе директорий. Для этого после команды указывайте имя выбранного каталога (спуститесь на один уровень вниз) или две точки (поднимитесь на один уровень вверх). Сделаем второе, предварительно определив текущий каталог

pwd

root

cd ..

Мы находимся в корневом каталоге (точнее – текущим является корневой каталог «/»).

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

root/script2

Вспомним, что в системе существует домашний каталог пользователя asplinux, расположенный в /home. Сделаем его активным.

cd home

cd asplinux

Команде cd можно задать полное имя

cd /home/asplinux

pwd

Перенесем в директорию /home сценарий script2 командой копирования файлов

cp /root/script2 /home

Этой команде указывается сначала что копировать, а затем – куда. Активным является каталог, по отношению к которому сценарий находится на один уровень выше. Относительный путь для вызова задайте следующим образом.

../script2

Задание 10

Создайте сценарий, например, выводящий простую текстовую строку. Поместите две модификации такого файла в текущий каталог и указанный в переменной PATH. Попробуйте запустить сценарии в обоих каталогах, сделав их активными. Сделайте это в Linux и Windows. Для первой системы Вы знаете, как это сделать, а для второй, перезагрузив компьютер, сначала в меню «Пуск» выберите команду «Выполнить», а затем наберите и исполните такую команду

copy con files.bat

Команда copy в Windows аналогично cp в Linux. Сначала указывается, откуда копировать (системная консоль), а затем куда – файл с расширением bat, являющийся аналогом сценария Linux и имеет свойство исполнимого файла. Теперь команду можно выполнить так

files.bat

Вспомните об отличии в исполнении команд из текущего каталога. Если теперь перейти в корневой каталог

сd \

то, указав полное имя файла, выполним созданный сценарий, а короткое – нет.

files.bat

Во втором случае будет выведено такое сообщение.

Файл “files.bat” не является внутренней или внешней командой, исполняемой программой или пакетным файлом

Для того, чтобы завершить сеанс командного режима в Windows , выполните

exit

Вернитесь в ASP Linux, перезагрузив компьютер.

Теперь изучим, как можно завести в системе собственные переменные. Значения, получаемые ими, будем выводить командой echo. Три следующие команды вводят переменные и придают им разные значения

a=5

b=1

c=one

Два следующих оператора вводят еще две новые переменные, но их значение определяется значениями переменных, уже введенных ранее

d=$a+$b

e=$a+$c

Заметим, что по умолчанию переменные оболочки будут иметь текстовый тип, а значит получат значения такого же типа. Приведенные далее операторы выводят значения всех пяти переменных. Обратите внимание на значения d и e

echo $a $b $c

echo $d $e

5 1 one

5+1 5+one

Теперь продемонстрируем для команды echo действие опции –n. Последняя позволяет осуществить вывод в одной строке результатов нескольких таких операторов

echo -n “First line - ”

echo $a $b $c

First line – 5 1 one

echo -n “Second line: ”

echo $d $e

Second line: 5+1 5+one

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]