Материал: 396_OS_uchebnoe_posobie_part1_2012

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

[student@wp1

student]$who<Enter>

student1

pts/1

Jan

18

19:24

(192.168.1.38)

student2

pts/0

Jan

18

20:25

(192.168.1.25)

[student@wp1

student]$_

 

 

показывает, что в системе зарегистрировано два пользователя: student1 и student2. Первый зашёл в систему 18 января в 19:24 с использованием текстового терминала pts/1 (сетевой вход с компьютера с адресом 192.168.1.38). Второй – 18 января в 20:25, с использованием текстового терминала pts/0 (сетевой вход с компьютера с адресом 192.168.1.25).

Чтобы определить, какой пользователь, когда был зарегистрирован в системе, используется команда last, которая выдаёт содержимое журнала регистрации. Например, вызов:

[student@wp1 student]$last<Enter>

student1 pts/1 1.2.3.4 Wed Jan 18 19:24 still logged in student1 pts/1 1.2.3.4 Wed Jan 17 19:24 – 20:00 (00:36)

[student@wp1 student]$_

показывает, что пользователь student1 был зарегистрирован в системе 18 января

в19:24 и до сих пор работает, а также был зарегистрирован 17 января в 19:24 и вышел из системы в 20:00, т.е. провёл в ней всего 36 минут.

4.8.Физическое размещение файлов на носителях информации

ВLinux всё доступное пользователям файловое пространство объединено

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

Чтобы подключить новую файловую систему, а также посмотреть, какие файловые системы уже подключены, используется команда mount.

Если её вызвать без аргументов, то на экран будет выдан список уже подключённых файловых систем. В этом списке каждая строка описывает одну подключённую файловую систему. Первым полем строки является устройство, на котором хранится подключённая файловая система (например, /dev/hda4 –

4-й раздел жёсткого диска, подключённого к первому контроллеру IDE в режиме master28). Второе поле содержит метку общей файловой системы, которая является точкой входа. Далее идёт тип подключённой файловой системы и её параметры. Например:

28 Подробнее об устройстве жёсткого диска и о способах его разделения на разделы смотрите в курсе «Организация ЭВМ и систем».

36

[student@wp1 student]$mount<Enter>

/dev/hda4 on / type ext2 (rw) proc on /proc type proc (rw) /dev/hda2 on /boot type ext2 (rw)

192.168.1.1:/home on /home type nfs (rw,addr=192.168.1.1)

[student@wp1 student]$

Этот пример показывает, что корневая файловая система находится на устройстве, описываемом файлом /dev/hda4 (/dev/hda4 on / type ext2) и имеет файловую систему типа ext2. Каталог /boot (вторая строка) ссылается на файловую систему 2-го раздела устройства, подключённого к первому контроллеру первым устройством, и также имеет файловую систему ext2. Каталог /home ссылается на сетевую файловую систему (тип nfs), находящуюся на компьютере с адресом 192.168.1.1 и имеющую локальное имя /home.

Чтобы подключить новую файловую систему, необходимо вызвать команду mount29, указав ей в качестве первого аргумента имя устройства, где она хранится, а в качестве второго – точку в общей файловой системе, к которой её надо подключить. Например:

[student@wp1 student]$mount /dev/fd0 /mnt/fl<Enter> [student@wp1 student]$

Чтобы отключить файловую систему, необходимо использовать команду umount, которой в качестве аргумента следует указать соответствующую точку в общей файловой системе. Например:

[student@wp1 student]$umount /mnt/fl<Enter> [student@wp1 student]$

4.9. Среда окружения

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

Список всех установленных переменных можно получить, используя команду env. Например,

[student@wp1 student]$env | head -5<Enter> HOSTNAME=wp1.csc.neic.nsk.su

TERM=linux

SHELL=/bin/bash

HISTSIZE=1000

29 Подробнее о команде mount смотрите в электронном справочнике man.

37

USER=student [student@wp1 student]$_

В примере вывод команды env направлен на вход команды head, которая выводит заданное опцией число строк (в данном случае 5), начиная с начала файла. В результате выдано пять переменных: HOSTNAME, TERM, SHELL, HISTSIZE, USER с соответствующими значениями.

Установка новых и изменение значения существующих переменных среды окружения осуществляется путем экспортирования (помещения в среду): export переменная=значение.

Чтобы удалить переменную, используется команда unset: unset имя.

Таблица 3. Некоторые стандартные переменные среды окружения

Имя

Значение

UID

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

Инициализируется при запуске оболочки.

 

HOME

Домашний каталог текущего пользователя.

 

Список каталогов, разделённых двоеточием, в которых команд-

PATH

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

 

не задан его путь.

PS1

Формат строки-приглашения (первая строка).

PS2

Формат строки-приглашения (вторая строка).

PWD

Текущий каталог.

TERM

Тип используемого терминала.

HOSTNAME

Сетевое имя компьютера.

SECONDS

Число секунд, прошедших с момента запуска оболочки.

 

4.10. Переменные. Массивы

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

Значение переменной присваивается следующим образом: переменная=значение (т.е. без процедуры экспортирования). Например, X=1, или X=а, или X=”f” и т.п.

Значение массивов могут задаваться двумя способами:

1.имя[индекс]=значение;

2.имя=(значение1 значение2 ... значениеN).

В первом случае в качестве индекса могут быть использованы как числовые значения, так и символьные лексемы. Например: FRUIT[0]=apple или

FRUIT[first]=apple.

38

Обратите внимание, что до и после знака «=» нет пробелов!!! Если поставить пробелы, например, так x = 1, то командная оболочка будет считать, что введена команда x, и она имеет два параметра: = и 1.

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

Удалить значение переменной или массива можно также с использованием команды unset.

4.11. Подстановка переменных, команд и арифметических выражений

Командная оболочка BASH позволяет формировать команды с использованием значений переменных, результатов работы других команд и т.п. Такое формирование называется подстановкой. Т.е. в команду «подставляется» что-либо (переменная, вывод другой команды и т.п.). Для подстановки используется либо символ $, либо выражение, заключённое в обратные апострофы (`выражение`).

Если в тексте команды встречается символ «$», то следующий за ним текст до пробела или конца команды интерпретируется как имя переменной, значение которой подставляется в текст команды. Например:

[student@wp1 student]$FRUIT=Апельсин<Enter> [student@wp1 student]$echo “Фрукт ”$FRUIT<Enter>

Фрукт Апельсин

[student@wp1 student]$_

В примере создаётся одна переменная командной оболочки (FRUIT), которой присваивается значение «Апельсин». Затем выполняется команда echo, которая должна выдать на экран текст, указанный ей в качестве параметра. В данном случае параметром является строка “Фрукт “$FRUIT, в которой присутствует символ «$». Поэтому прежде чем выполнить команду echo, командная оболочка «подставит» в её аргумент значение переменной FRUIT, сформировав тем самым текст “Фрукт Апельсин”.

Подстановку переменных можно использовать и для формирования новых команд. Например:

[student@wp1 student]$DIR=Docs<Enter> [student@wp1 student]$COMM=“ls –A”<Enter> [student@wp1 student]$COMM=$COMM“ ”$DIR<Enter> [student@wp1 student]$$COM<Enter>

. ..

[student@wp1 student]$_

39

Обратите внимание, что при присваивании переменной значения её имя указывается без знака доллара. Т.е. если Вы напишите $FRUIT=apple, командная оболочка выдаст ошибку: -bash Апельсин=apple:command not found. Так как прежде чем выполнить команду, командная оболочка подставит в неё значение переменной FRUIT, а затем только попытается её выполнить. И если Вы напишите echo FRUIT, то на экран будет выведено слово FRUIT, а не значение переменной с таким именем.

Для подстановки элементов массива используется запись вида ${имя[индекс]}. Например:

[student@wp1 student]$m[0]=Docs<Enter> [student@wp1 student]$m[1]= “ls –A”

[student@wp1 student]$COMM=${m[1]}“ ”${m[0]}<Enter> [student@wp1 student]$$COM<Enter>

. ..

[student@wp1 student]$_

Если в качестве индекса массива указать символ «*» или «@», то результатом будут все элементы массива. Такую операцию можно выполнять только в том случае, когда все элементы массива проинициализированы.

Запись вида ${имя} можно использовать и для подстановки переменной, например, в том случае, если имя переменной содержит символ подчёркивания.

Например, ${FRUIT_APPLE}.

Подстановку можно использовать также и в случае, если требуется в команде использовать то, что некоторая программа помещает в поток вывода. В этом случае программа заключается в обратные апострофы. Прежде чем выполнить команду, командная оболочка выполнит программу, заключённую в обратные апострофы, затем всё, что она поместит в поток вывода, будет подставлено в командную строку, и только затем команда будет выполнена.

Например:

[student@wp1 student]$DATE=`date`<Enter> [student@wp1 student]$echo $DATE

Ср. нояб. 30 13:32:23 NOVT 2011 [student@wp1 student]$_

Переменной DATE присваивается текст, который должна была вывести на экран команда date, т.е. текущую системную дату. Затем на экран выводится значение переменной DATE.

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

[student@wp1 student]$foo=$((((5+3*2)–4)/2))<Enter> [student@wp1 student]$echo $foo

40

Источник: https://studfile.net/preview/16708918/