лаб.2. Командные файлы Линукс

. Командные файлы.

ользовательским интерфейсом.

у человеком и компьютером называется интерфейсом командной строки (CLI – command line interface). Следует отметить, что в компьютерной истории командная строка появилась намного раньше, чем графический интерфейс.

имодействия с компьютером, он широко распространен и сегодня. Для этого есть причины, например:

есс.

Текстовый интерфейс менее требовательный к ресурсам компьютера, чем графический.

Бывает, что графический интерфейс просто не нужен (например, на части серверов).

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

 

Что такое «консоль»

.

.

ругие.

Обычно на одной машине установлено несколько реализаций командной строки, но только одна используется по умолчанию. Чтобы узнать, какая работает у вас, введите команду: echo $SHELL. Если вы еще не знаете, куда ее ввести, читайте дальше.

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

 

Как запустить консоль

.

(правда, по очереди, поскольку монитор и клавиатура у вас одна). Один пользователь может работать в нескольких консолях одновременно.

, графическая система GNU/Linux, работает в седьмой.

продолжить работу.

ые консоли симулируют работу таких терминалов.

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

. Для работы можно пользоваться любым из установленных.

супер-пользователя »root«).

апускает другие программы. Эмулятор терминала выводит окно для работы в консоли, подготавливает сеанс работы и запускает интерпретатор команд.

 

Как работать в консоли

Подсказка (prompt)

ка может быть настроена как угодно, но обычно так:

[email protected]:/current/directory$

Где:

user — имя пользователя

computer — имя компьютера

обозначается тильдой (~).

) или не является. Если является, то это решетка (#), и если не является, то доллар ($).

.

Внешний вид подсказки можно настроить под себя.

Как устроена команда

Команда устроена так:

метры]

 — одно из следующих:

). Такую команду интерпретатор выполняет сам.

.

.

 зависят от команды.

). Но это иногда может привести к неожиданным результатам, если пользователь пытается вызвать известную ему программу, а вместо этого интерпретатор сам обрабатывает команду.

единяют расширение к имени исполняемого файла, если оно не указано. Интерпретаторы команд в Linux не делают ни того, ни другого. Если вам нужно запустить файл в текущей директории, можно это сделать, например, так:

./program

ь к файлу, т.е. пункт 3.

Примеры простых команд

 выводит указанную строку на экран

echo This is a test line

 

tab в каталог /tmp:

cp /boot/grub/menu.lst /etc/inittab /etc/mtab /tmp

(/boot/grub/menu.lst -> /boot/grub/menu.lst.bak:

cp /boot/grub/menu.lst /boot/grub/menu.lst.bak

 

для вывода содержимого файла или нескольких файлов:

cat ~/Документы/Отчет

Или:

cat ~/Документы/Первая_половина_отчета ~/Документы/Вторая_половина_отчета

Тильда обозначает домашний каталог пользователя.

Текущий каталог и относительные пути

бы дойти до нужного файла или каталога.

.

. Они указывают, как дойти до каталога или файла X из каталога Y. Например:

justin_bieber.ogg:

../Музыка/justin_bieber.ogg

найти директорию subdir в текущем каталоге, там файл text.txt:

subdir/text.txt

можно узнать простой командой: pwd

.

привыкли пользоваться командной строкой в этих системах, то обратите внимание: команда cd без параметров значит «перейти в домашний каталог», а не что-либо другое.

Вот так можно скопировать файл file1 в текущем каталоге в file2:

cp file1 file2

переместить file1 на каталог вверх, т.е. в родительский каталог текущего каталога:

mv file1 ..

Еще можно перейти в родительский каталог и переместить файл после этого. Допустим, мы находимся в каталоге mydir:

cd ..

mv mydir/file1 .

символа, использующихся в путях:

 — текущий каталог

 — родительский каталог

 

А где мой диск C:?

В ОС Windows имеется несколько корневых каталогов, по одному на каждый диск: C:, D:, E: и так далее.

подкаталогах и будет отображаться их содержимое.

.

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

В этом случае откройте менеджер файлов, кликните по нужному диску, и он примонтируется. Скорее всего, директория, куда он примонтировался, автоматически откроется.

 

Системные каталоги

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

/bin

то сокращенно от `binaries’ (т.е. двоичные или выполняемые файлы). Здесь находится много важных системных программ. Большинство основных команд Unix находятся в этом каталоге.

/dev

дисков. fd0 — первый дисковод, fd1 — второй. Различные /dev/ttys, /dev/cua устройства используются для доступа к последовательным портам. Например, /dev/ttys0 относится к `COM1′ под MS-DOS.

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

Устройства, имена которых начинаются с hd, имеют доступ к жестким дискам. /dev/hda относится ко всему первому жесткому диску, а hda1 только к первому разделу /dev/hda.

/etc

файл инициализации) и т.д.

/sbin

В sbin находятся важные исполняемые системные файлы, используемые системным администратором.

/home

home содержит домашние каталоги пользователей.

/lib 4

ньше и сэкономит место в системе.

/proc

ограммы и процессы в указанное время.

/tmp

Многие программы нуждаются в создании рабочих файлов, которые нужны короткое время. Каноническое место для этих файлов в /tmp (там обычно чаще проводится уборка мусора).

/usr

льны для системы. Но это такие необязательные вещи, которые делают систему полезной и интересной.

/usr/X11R6 — содержит The X Window System, если вы ее инсталлировали.

которых нет ни в каких других местах, например, в том же /bin их нет.

/usr/etc – также как и /etc, содержит всевозможные системные программы и конфигурационные файлы.

/usr/include — содержит include-файлы(header — файлы) для компилятора Си.

й код. Кроме того, многие другие программы хранят в /usr/lib свои конфигурационные файлы.

ержит отформатированные страницы для раздела 1.

/usr/src — содержит исходные коды (неоткомпилированные программы) для различных программ вашей системы. Наиболее важная вещь здесь это каталог /usr/src/linux, в котором содержатся исходные коды ядра Linux.

/var

var содержит каталоги, которые часто меняются в размере или имеют тенденцию быстро расти. К числу таких каталогов относятся:

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

дет помещаться в /var/spool/mail до тех пор, пока вы не прочитаете ее или не удалите. 5

Входящие и исходящие новости помещаются в /var/spool/news и т.д.

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

 

Автодополнение

нажать [TAB] один или два раза и консоль либо дополнит команду/имя файла, либо выдаст список для уточнения.

Ра

[TAB]

[20:41:52][alex][~]: cd /home/alex/Рабочий\ стол/

[20:41:52][alex][~]: ls /usr/share/ic

[TAB][TAB]

iceweasel/ icons/

Специальные символы и их экранирование

мволов входят:

. Есть три способа это сделать:

:

my file

Обратный слэш перед обычным, не специальным символом будет просто проигнорирован.

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

.

). Они экранируют все специальные символы. Пример:

my income

#Символ ‘$’ не экранируется двойными кавычками, а одинарными — экранируется.

.

Вывод результата работы в файл

имя файла

Например:

рии.

grep loruser /etc/passwd >~/Документы/myfile

имя файла

Можно направить в файлы оба потока:

файл_для_ошибок

Пример:

rep loruser /etc/passwd >~/Документы/myfile 2>~/Документы/myerrors

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

#Для вывода

#Для ошибок

Ввод из файла

рограмму считать данные из файла, как если бы их вводили с клавиатуры?

рамме и пользуйтесь ею.

Но если вы уверены, что такой функции нет, вы все же можете направить данные из файла в поток ввода программы:

файл

Да, можно комбинировать перенаправление ввода и вывода:

файл_для_вывода

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

 

Оператор |

направляется на стандартный ввод программы, расположенной справа от символа |.

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

 

Фильтры

 а также следующие команды.

 

 

Таблица 5.1. Команды-фильтры

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

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

 

Шаблоны файлов

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

$ ls Chapter?

f» в указанной позиции.

 — то малые буквы.

 

 

 

)

. Копирование файлов будет выполняться, но Вы сможете продолжать работу с Терминалом.

Общий формат для запуска команд в фоновом режиме следующий:

command &

 

)

 (точка с запятой).

command1; command2; command3

порядке. Этот процесс называется последовательным выполнением.

Например, введите:

cd; pwd; ls

 выполнит эти команды последовательно:

 изменит ваше местоположение, переместив вас в регистрационный каталог;

его текущего каталога;

 перечислит файлы в вашем текущем каталоге.

?

Получение справки по командам

тв. Так же существуют мануалы в формате »Info«. Этот формат поддерживает разбивку на главы и своего рода (гипер)ссылки.

 

shell

Очистка экрана

Чтобы очистить экран терминала нужно применить команду clear.

 

ls — вывод имен файлов

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

 без параметров, вы получите просто список файлов в каталоге.

[email protected]:~/information$ ls

fonts.tar.gz linux.jpg report.odt template ubuntu.jpg

. В результате получим список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру.

олучим подробную информацию о каждом файле.

ngvinus:~/information$ ls -l

-rw-r—r— 1 admin admin 217589 2009-02-12 13:35 fonts.tar.gz

-rw-r—r— 1 admin admin 162348 2009-02-03 20:50 linux.jpg

-rw-r—r— 1 admin admin 155847 2009-02-15 12:54 report.odt

mkdir — создание каталога

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

mkdir mydir1 mydir2 mydir3

cp — копирование файла

.

.jpg и windows.jpg уже существует, то будет выдан запрос на перезапись файла:

[email protected]:~/information$ cp -i linux.jpg windows.jpg

cp: переписать `windows.jpg’? y

) используется для копирования одной директории в другую.

щение, переименование файла

, чтобы случайно не перезаписать существующий файл.

rm — удаление файла

 предназначена для удаления файлов. Основные опции команды:

 — удалить директории и их содержимое.

 

cd — смена текущего каталога

.

[email protected]:~$ cd information/

[email protected]:~/information$

.

 следующим образом:

[email protected]:~/information$ cd ..

:~$

 

cat — вывод содержимого файла

 и в каждом по две строки.

[email protected]:~/information$ cat download

first line of file download

second line of file download

[email protected]:~/information$ cat ubuntu

first line of file ubuntu

second line of file ubuntu

Сделаем конкатенацию двух файлов.

[email protected]:~/information$ cat download ubuntu

first line of file download

second line of file download

buntu

second line of file ubuntu

так же позволяет создать файл. Например:

Cat > newfile.

.

pwd — вывод полного пути текущего каталога

Команда pwd используется, чтобы вывести полный путь текущего каталога.

[email protected]:~/information$ pwd

/home/admin/information

 

man — получение руководства

.

 

Дата

Проверка в Linux даты из командной строки — date

 

Изменение вида приглашения

.

 — переменная, которая задает вид строки приглашения командной строки, которое bash выводит, когда ожидает ввода очередной команды пользователем.

ая за вторичный тип приглашения ввода.

 — третичное приглашение, выводится тогда, когда пользователь должен сделать выбор в операторе select.

мандой перед исполняющейся командой.

 — содержимое этой переменной выполняется перед каждой строкой приглашения.

$ echo $имя_переменной

$ export имя_переменной=’значение’

 

 означает — «читабельный для человека».

 

Она может показывать информацию для всех поддиректорий отдельно или для папки в целом.

 

Команда: free -m показывает информацию в Мегабайтах.

 

Q

 

Редактирование текстового файла

. Выход из редактора CTRL+X.

ивизирует экранно-ориентированный редактор

Редактор ed работает с копией файла; изменения, производимые над копией, отображаются на файл только после выполнения команды записи w.

 

отмонтирование дисков

mount [параметры] устройство путь — Монтирование устройства.

: mount /dev/sda1 /mnt/Disk1.

umount устройство/путь — Размонтирование.

Пример: umount /mnt/Disk1.

 

 

Виды ссылок в Linux

Что такое индексный дескриптор?

иск имеет собственную таблицу индексных дескрипторов.

.

Какие ссылки бывают жесткими?

нформации о файле, а лишь указывает (ссылается) на его дескриптор.

на ядре Linux.

Сколько имен у файла?

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

бывает недостаточно одного имени файла? Все дело в удобстве доступа (а также предоставлении доступа).

айл в графическом режиме, придется по крайней мере открыть последовательно два каталога. Но куда удобнее будет поместить еще одно имя файла на Desktop (Рабочий стол).

В такой ситуации единственным выходом будет создать еще одну жесткую ссылку на файл и поместить ее в каталог пользователя.

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

о диска.

. Они представляют собой файлы, указывающие не на индексные дескрипторы, а на имена файлов.

Ссылка – это не копия!

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

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

данные первоначального файла не изменятся.

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

Создание ссылок в Linux

ile1 file2

.

:

ln list ./Desktop/l_class

ln /root/list /home/vasy/Desktop/l_class

В последнем варианте указаны полные имена исходного и нового имен файла.

 

Управление пользователями в Linux

ля (помимо пользователя root) для повседневной работы. Каждый физический пользователь должен быть зарегистрирован в системе, т. е. иметь собственное имя пользователя.

Разделение прав и о работе под рутом

ти пароль — либо пароль суперпользователя, либо пароль от вашего аккаунта, в зависимости от настроек.

полнять не рекомендуется.

и введя пароль, Вы получите сообщение:

<Username> is not in the sudoers file. This incident will be reported.

 

Пользователи с точки зрения Linux

рирует следующую информацию о каждом пользователе.

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

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

т системный администратор.

  Это зашифрованный (encripted) пароль пользователя. Для создания и изменения пароля используется команда passwd.

фамилия и т. д.) «реального» пользователя.

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

 Командная оболочка, которая запускается при входе в систему. Например, /bin/bash или /bin/zsh.

 

ле /etc/passwd.

Каждая строка в файле имеет формат:

имя_пользователя:зашифрованный_пароль:UID:GID:полное_имя:дом.каталог:оболочка

ется несколько более безопасной, поскольку файл /etc/passwd может читаться кем угодно, а права доступа к файлу /etc/shadow гораздо сильнее ограничены. Теневые пароли также обеспечивают иные функции, например, истечение срока действия пароля.

 

х пользователей

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

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

Синтаксис:

useradd [опции] LOGIN

Некоторые из опций:

-d домашняя директория

-s шелл

-p пароль

ватлея)

-G (Другие группы, к которым приндалежит пользователь)

Пример

useradd -g primary_grp -G admin -s /bin/shell -p xxxx -d /home/user

 

Удаление пользователей

а для пользователя kiwi будет выглядеть как

kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash

При этом вход в систему пользователя kiwi станет невозможным.

Установка атрибутов пользователя

казаться нужным изменить атрибуты этого пользователя, например, домашний каталог или пароль. Самый простой способ сделать это — просто поменять информацию в файле /etc/passwd. Для создания пароля нужно использовать команду passwd. Так, команда

passwd larry

изменит пароль пользователя larry. Изменять пароли любых пользователей может только пользователь root, однако свои пароли пользователи могут изменять сами, отдавая команду passwd без параметров.

Группы пользователей

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

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

в файле /etc/group. Формат каждой строки таков:

имя группы:пароль:GID:другие члены группы

:

root:*:0:

users:*:100:mdw,larry

guest:*:200:

other:*:250:kiwi

руппе, и это осуществляется посредством перечисления их имён в файле /etc/group. Команда groups перечисляет список групп, к которым относится (имеет доступ) данный пользователь.

ьзователей создана группа other; в эту группу занесён пользователь kiwi.

никать в привилегированные группы (командой newgroup), в это поле надо поставить символ *.

никакого другого конфигурирования не требуется. Для удаления группы можно просто удалить соответствующую строчку в файле /etc/group.

Еще команды для работы с пользователями и группами

— Показывает сводную информацию по текущему пользователю;

;

— Показывает последних зарегистрированных пользователей;

— Показывает имя текущего пользователя и время входа;

— передача сообщения другому пользователю.

можно вызвать эти команды.

 

Виды прав доступа

Права доступа определяются по отношению к трём типам действий:

чтение,

запись и

исполнение.

Эти права доступа могут быть предоставлены трём классам пользователей:

владельцу файла (пользователю),

й принадлежит файл,

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

.

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

пример:

/home/ivanov/docs# ls -l report1303

-rw-r—r— 1 ivanov users 505 Mar 13 19:05 report1303

которая владеет этим файлом (users). Последнее поле — это имя файла (report1303). Другие поля описаны в документации к команде ls.

па для пользователя — владельца файла, пользователей — членов группы-владельца, а также для всех остальных пользователей.

случае первым символом было бы d) или псевдофайлом устройства.

разом, ivanov имеет право на чтение и запись (изменение) файла report1303.

ет права на исполнение этого файла. Это разумно, так как файл report1303 не является программой.

вует только символ r, все пользователи из группы users могут читать этот файл, но не могут изменять или исполнять его.

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

раво на исполнение для всех каталогов вдоль пути к файлу.

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

Для изменения прав доступа к файлу или каталогу используется команда chmod.

. Режим может быть задан в абсолютном или символьном виде.

— восьмеричное число, являющееся поразрядным ИЛИ следующих режимов (названы не все режимы):

Доступен для чтения владельцем.

Доступен для записи владельцем.

Доступен для выполнения (в случае каталога — для просмотра) владельцем.

Доступен для чтения членами группы.

00020    Доступен для записи членами группы.

ен для выполнения (просмотра) членами группы.

Доступен для чтения прочими пользователями.

Доступен для записи прочими пользователями.

Доступен для выполнения (просмотра) прочими пользователями.

остей, по три буквы в каждой:

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

[кому] операция права

ugo.

казанные).

— любая осмысленная комбинация следующих букв (не все):

Право на чтение.

Право на запись.

Право на выполнение (поиск в каталоге).

Например, команда chmod u+w,go+x f1

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

Изменить режим доступа к файлу может только его владелец или суперпользователь.

 

Лабораторная работа № 2.А

) (не требует установки).

Адрес сервера при подключении по ssh — 195.209.66.3.

Логин и пароль совпадает с вашими при входе в профиль.

icc.ru/documentation/cmnds.pdf

 

Выполнить с помощью терминала следующие задания:

Определить путевое имя рабочего каталога. Какое путевое имя получили (относительное или абсолютное)?

алог Glava1, а в нем – подкаталоги Glava2 и Glava3. В подкаталоге Glava3 создать текстовый файл myname.txt, содержащий три строчки по образцу:

Фамилия Имя Отчество

Факультет Курс Номер группы

Часы Минуты День Месяц Год

файл myname.txt в подкаталог Glava2 под этим же именем и в подкаталог Glava3 под именем fio.txt.

1 общедоступным (все пользователи могут читать и записывать) разделяемый каталогом.

myname1.txt.

Отредактировать файл fio.txt так, чтобы он содержал информацию на изучаемом Вами иностранном языке, а имя и отчество были бы сокращены до инициалов.

гаться в каталоге Glava1.

Удалить с диска каталог Glava2.

енам файла.

раздать следующие права: Владелец может читать и записывать в файл. Пользователи группы владельца могут только читать. Остальные не имеют никаких прав. Попробуйте просмотреть содержимое папки.

каталог Glava3, а затем скопировать на нее каталог Glava1 вместе со всем его содержимым.

, содержащий текст:

#include <stdio.h>

main()

{

}

).

.

1\myname.txt жесткую и символьную ссылки. Все объекты оставьте в том же каталоге, что и файл-оригинал.

1.

Glava1\myname.txt

1.

Создайте символьную ссылку на рабочем столе на любой глубоко вложенный каталог файловой структуры.

В чем различие?

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

и / ?

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

 

 

 

 

 

 

Командные файлы

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

зуйтесь, например, редактором Leafpad.

Cоздадим файл с именем cmd (в домашнем каталоге), в который запишем следующие команды:

#вывод строки на экран, приветствие

date    #вывести текущую дату

pwd    #вывести текущий каталог

вывести оглавление текущего каталога

Всё что за знаком # это коментарий и интерпритатором не воспринимается.

я всех пользователей (настройка по умолчанию) разрешить выполнение этого файла ( +х).

#!/bin/bash.

е (где, вы можете узнать набрав whereis bash) поменяйте её на ваш путь.

Коментарии начинаются с символа # (кроме первой строки).

В bash переменные не имеют типа(о них речь пойдет ниже)

 

Переменные командного интерпретатора

авится знак $. Их можно разделить на следующие группы:

— позиционные переменные вида $n, где n — целое число;

— простые переменные, значения которых может задавать пользователь или они могут устанавливаться интерпретатором;

hell.

 

присваивает значения переменным:

z=1000

х= $z

есhо $х

1000

Здесь переменной x присвоено значение z.

ная с нуля. Например, в командной строке

саt text_1 text_2…text_9

, например:

set arg_1 arg_2… arg_9

здесь $1 присваивается значение аргумента arg_1, $2 — arg_2 и т.д.

, например:

echo $1 $2 $9

arg_1 arg_2 arg_9

ции обо всех аргументах (включая последний) используют метасимвол *. Пример:

echo $*

arg_2 arg_3 … arg_10 arg_11 arg_12

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

 получить следующую информацию:

);

# – число аргументов, которое было сохранено интерпретатором при выполнении какой-либо команды;

? – код возврата последней выполняемой команды;

есса PID;

! – PID последнего фонового процесса.

 

Встроенные команды

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

 — назначение текущего каталога;

 — выполнение команды, заданной аргументами cmd и arg, путем вызова соответствующего выполняемого файла.

га -s — в символьном представлении;

 — режим работы интерпретатора, присваивание значений параметрам;

 — вычисление и выполнение команды;

;

лнения программы, возвращает код возврата, равный нулю, в вызывающую программу;

R — команда cmd выполняется при обнаружении ошибки; cond — символьное или числовое обозначение сигнала, в этом случае команда cmd выполняется при приходе этого сигнала;

name будут включаться в среду всех вызываемых впоследствии команд;

м n;

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

 

 

Управление программами

. Многие команды LINUX вырабатывают код завершения только для поддержки этих операторов.

:

if <условие>

then

list1

else

list2

fi

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

В случае анализа файлов синтаксис команды следующий:

test [ -rwfds] file

где

го можно прочитать (код завершения 0);

-w – файл существует и в него можно записывать;

-f – файл существует и не является каталогом;

-d – файл существует и является каталогом;

-s – размер файла отличен от нуля.

оверяет, истинно ли данное отношение, например, равны ли А и В . Сравнение выполняется в формате:

-eq А = В

B

test A -ge B эквивалентно А >= В

-le А <= В

-gt А > В

-lt А < В

Отношения слева используются для числовых данных, справа – для символов.

 имеются еще некоторые средства для проверки:

;

из операндов имеет значение true;

 

Циклы

 true:

while list1

do

list2

done

 false имеет формат:

until list1

do

list2

done

ршение программы.

.

:

for name in [wordlist]

do

list

done

нчится список wordlist.

:

case <string> in

s1) <list1>;;

s2) <list2>;;

.

.

.

sn) <listn>;;

*) <list>

esac

:

down your age’

read age

case $age in

test $age -le 20) echo ‘you are so young’ ;;

test $age -le 40) echo ‘you are still young’ ;;

test $age -le 70) echo ‘you are too young’ ;;

*)echo ‘Please, write down once more’

esac

а случай неправильного ввода числа.

Лабораторная работа №2.В

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

сылок на файлы (в том числе имена каталогов). Группа представляет собой объединение файлов с одинаковым числом ссылок на них.

асширением. Затем осуществляется переход в родительский каталог, который затем становится текущим, и указанные выше действия повторяются до тех пор, пока текущим каталогом не станет корневой каталог.

ог.

Разработать программу, которая выводит на экран имена тех каталогов, которые находятся в текущем каталоге и не содержат в себе подкаталогов.

одержат в себе подкаталоги.

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

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

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

каталогом не станет корневой каталог.

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

араметром Shell-программы. Форма вывода результата:

 

 

 

 

 

 

 

 

 

объединения помещается либо в указанный Shell-программой файл, либо выводится на экран в форме:

 

 

 

 

 

 

 

 

 

 

 

 

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

Leave a Comment

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