МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Практическая работа по предмету UNIX

    перемещения подкаталога newcat в подкаталог secnew

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

    mv newcat secnew

    Чтобы увидеть результат, лучше воспользоваться следующей

    командой:

    ls -aF secnew .

    3. Использование шаблонов.

    Для перемещения файлов разрешается использовать шаблоны.

    Попробуйте переместить все файлы подкаталога secnew в новый

    каталог. Сначала создайте каталог ctmv - в него Вы переместите

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

    cd; mkdir ctmv; ls -F . secnew ctmv

    А затем воспользуйтесь шаблоном *:

    mv secnew/* ctmv

    Команда

    ls -F secnew ctmv

    позволит увидеть изменения, произошедшие в каталогах secnew и

    ctmv.

    3. Переименование файлов.

    В формате MS Word 97

    1. Работа с shell.

    Интерпретатор shell - это наиболее важная программа для пользователей

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

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

    использования имеющихся команд и даже написания собственных. С

    некоторыми свойствами shell Вы уже знакомы. Одно из них способность

    ссылаться сразу более чем на один файл, используя для этого

    специальные символы - шаблоны; другое - задание списка каталогов, в

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

    третье - возможность использования нескольких команд в одной командной

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

    интерпретатора shell.

    1. Стандартный вход и стандартный выход.

    Многие команды UNIX получают информацию с так называемого

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

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

    сокращения "stdin" и "stdout" соответственно). shell организует

    дело так, что стандартным входом служит клавиатура, а

    стандартным выходом - экран.

    Рассмотрим, к примеру, использование команды cat. В случае,

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

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

    посылает эти данные прямо на stdout. Поэтому при выполнении

    команды

    cat .profile .kermrc

    на экран будет выведено содержимое файла .profile, а следом за

    ним содержимое файла .kermrc.

    Но если команде cat не заданы имена файлов в качестве

    параметров, то она читает данные со стандартного входа

    (клавиатуры) и посылает их на стандартный выход (экран). Вот

    пример. Введите команду

    cat -u

    Затем напечатайте

    Hello there.

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

    Hello there.

    Напечатайте

    Bye.

    Вы получите ответ:

    Bye.

    Как видите, каждая строка, которую Вы напечатали, немедленно

    выдается командой cat на экран. При вводе со стандартного входа

    команда считает, что ввод закончен тогда, когда Вы нажимаете

    клавиши CTRL-d. Эта комбинация клавиш посылает команде сигнал

    EOT (End-Of-Text - конец текста). Поэтому нажмите CTRL-d (должно

    появиться новое приглашение на ввод $) и давайте рассмотрим

    другой пример.

    Воспользуемся новой для Вас командой sort. Это команда

    сортировки. Без указания аргументов она сортирует информацию,

    поступающую со стандартного входа, упорядочивая строки в

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

    выход - экран.

    Попробуйте так:

    введите команду

    sort

    напечатайте с клавиатуры следующее (для перехода на новую строку

    используйте ENTER):

    bananas

    carrots

    apples

    Нажмите CTRL-d и Вы увидите измененный список.

    apples

    bananas

    carrots

    В конце появится новое приглашение на ввод команд $.

    2. Перенаправление входа и выхода.

    Теперь, предположим, что Вы хотите послать результат сортировки

    в файл, чтобы сохранить список планируемых покупок. shell дает

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

    символ ">". Вот как это работает:

    напечатайте команду sort и после символа > укажите имя файла, в

    который хотите сохранить результат выполнения команды (эта

    процедура должна быть Вам знакома - Вы уже создавали файлы

    подобным образом)

    sort > shopping-list

    Затем введите с клавиатуры список предполагаемых покупок (он

    попадет во входной поток команды, ведь по умолчанию входной

    поток - клавиатура):

    bananas

    carrots

    apples

    Снова нажмите CTRL-d.

    Как Вы можете видеть, результат работы команды sort не

    отображается на экране (после нажатия клавиш CTRL-d сразу

    появляется новое приглашение), вместо этого он сохраняется в

    файле shopping-list (список покупок). Давайте проверим,

    действительно ли это так с помощью давно знакомой Вам команды

    cat:

    cat shopping-list

    Если Вы все сделали правильно, то содержимое файла shopping-list

    будет выглядеть следующим образом:

    apples

    bananas

    carrots

    Другой вариант - у Вас сохранен не отсортированный список в

    некотором файле. Один из способов его сортировки и сохранения

    такой - отсортировать файл с данным именем вместо получения

    содержимого файла со стандартного входа и перенаправить

    стандартный выход в файл.

    Создайте файл pokupki, с помощью команды echo и перенаправления

    выходного потока:

    echo " carrots

    bananas

    apples "> pokupki

    для перевода строки используйте клавишу ENTER. ENTER не будет

    восприниматься как сигнал завершения ввода команды до тех пор,

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

    появляться повторное приглашение на ввод ">".

    После того как Вы создали файл, отсортируйте его и сохраните

    указанным выше способом:

    sort pokupki > shopping-list

    С помощью команды cat проверьте выполнение введенной команды:

    cat shopping-list

    Результат должен быть аналогичным предыдущему:

    apples

    bananas

    carrots

    То же самое можно сделать и по-другому. Перенаправлен может быть

    не только стандартный выход, но также и стандартный вход. Для

    этого следует использовать символ " file-list

    Эта командная строка перенаправила выходной поток команды ls в

    файл file-list. При желании Вы можете убедиться в этом с помощью

    команд cat или more.

    Вторая команда сортирует содержимое файла file-list в указанном

    порядке и выводит его на экран:

    sort -r file-list

    Такой способ не самый быстрый и требует создания временного

    файла для сохранения результата работы команды ls.

    shell предоставляет и другой вариант - использование "конвейера"

    (pipeline). "Конвейер" - это замечательное свойство shell,

    которое позволяет связать последовательность команд в конвейер,

    где stdout первой команды посылается прямо на stdin второй

    команды и так далее.

    В нашем примере необходимо направить стандартный выходной поток

    команды ls в стандартный входной поток команды sort. Символ "|"

    обозначает конвейер. Поэтому Вам достаточно ввести:

    ls | sort -r

    и на экране появиться отсортированный список файлов и

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

    создания ненужных файлов.

    Другой полезный пример.

    Команда

    ls /usr/bin

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

    которых слишком быстро исчезают с экрана, и Вы не успеваете

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

    каталога /usr/bin команду more:

    ls /usr/bin | more

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

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

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

    строки входного потока в стандартный выходной поток. Если Вы

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

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

    командную строку:

    ls | sort -r | head -1

    где head -1 просто выдает первую строку (-1) получаемого

    входного потока (в данном случае это отсортированный в обратном

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

    командой ls).

    4. Перенаправление с добавлением.

    Использование ">" для перенаправления выхода смертельно для файла, в

    который происходит перенаправление (если этот файл уже существует).

    Например,

    ls > file-list

    уничтожит прежнее содержимое файла file-list. Убедитесь, что теперь

    файл file-list содержит лишь список имен файлов и подкаталогов

    текущего каталога в алфавитном порядке, набрав команду

    cat file-list

    Если вместо ">" использовать символ перенаправления ">>", выходной

    поток будет добавлен к содержимому указанного файла (а не записан на

    место уже хранящейся в нем информации).

    ls >> pokupki

    В формате MS Word 97

    1. Продолжение работы с shell.

    1. Простейшие циклы shell.

    Типичным считается цикл по последовательности имен файлов, и

    оператор shell for является единственной структурой управления,

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

    последующего выполнения. Синтаксис оператора for таков:

    for переменная in список_слов

    do

    команды

    done

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

    достаточно задать следующий цикл:

    for i in *

    do

    echo $i

    done

    Вместо i можно применять любую переменную shell, но это

    обозначение традиционно. Заметьте, что обращение к переменной

    задается с помощью $i, однако в заголовке цикла переменная

    указывается как i. Значения переменной i определены шаблоном *

    (для выбора всех файлов текущего каталога).

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

    символ перенаправления:

    for i in *

    do

    echo $i

    done > spisok

    в результате будет создан файл spisok, содержащий список имен

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

    это?

    Выходной поток цикла можно направить и по конвейеру. Чтобы

    получить на экране отсортированный список файлов достаточно

    сделать следующее:

    for i in *

    do

    echo $i

    done | sort

    Указав соответствующую опцию команды sort, Вы сможете

    отсортировать список в нужном Вам порядке.

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

    режиме, указав в конце символ &. & применяется ко всякому циклу

    и конвейеру.

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

    ограничение заключается в том, что do и done распознаются как

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

    после перевода строки или точки с запятой. В зависимости от

    размера цикла for иногда лучше помещать его на одной строке:

    for i in список_значений; do команды; done

    Список аргументов для цикла for часто получают путем выбора имен

    файлов по шаблону, но можно получать и любым другим способом, в

    частности, просто вводом аргументов.

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

    столбцов под именами 2, 3 и т.д. Все программы, кроме 2,

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

    связи можно установить с помощью цикла for:

    for i in 3 4 5 6 7 8; do ln 2 $i; done

    Теперь Вы сможете выводить файлы в 3, 4, 5 , 6 , 7 и 8 столбцов.

    2. Совершенствование команды саl.

    shell позволяет сделать взаимодействие между пользователем и программой

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

    используется эта команда: саl [month] year. Однако досадно, что месяц нужно

    задавать числом:

    саl october

    Реакция программы на такую команду:

    bad argument

    (неверный аргумент).

    К тому же команда

    саl 10

    выдает календарь на весь 10-й год, а не на октябрь текущего года. Поэтому

    всегда следует указывать год, если Вы хотите получить календарь на один

    месяц.

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

    не меняя самой программы.

    Первый шаг разработки - определить функции усовершенствованной команды саl:

    месяц нужно распознавать по названию;

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

    версия, за исключением перевода названия месяца в его номер;

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

    зависимости от того, что Вам требуется);

    а при отсутствии аргументов - календарь текущего месяца, так как большей

    частью именно для этого и обращаются к команде.

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

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

    команде cal.

    shell имеет оператор case, который успешно применяется в таких ситуациях:

    case слово in

    шаблон) команды ;;

    шаблон) команды ;;

    esac

    В операторе case значение слово сравнивается поочередно со всеми шаблонами

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

    первым) шаблоном, соответствующим слову. Шаблоны составляются по правилам

    соответствия шаблонов, которые в некоторой степени обобщают правила задания

    имен файлов. Каждое действие завершается двумя символами ;; (для последнего

    варианта можно обойтись без ;;, но обычно их ставят для удобства

    редактирования).

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

    обрабатываются названия месяцев, затем происходит обращение к настоящей

    команде саl.

    В переменной интерпретатора $# хранится число аргументов, с которыми была

    вызвана программа. Символ # в начале слова означает, что вся следующая за

    ним строка рассматривается как комментарий.

    В своем личном каталоге bin с помощью редактора vi создайте файл саl,

    содержание которого следующее:

    # cal: улучшенное взаимодействие с /usr/bin/cal

    case $# in

    0) set `date`; m=$2; y=$7;; # нет аргументов: использует текущие

    1. m=$1; set `date`; y=$7;; # 1 аргумент: использует текущий год

    *) m=$1; y=$2;; # 2 аргумента: месяц и год

    esac

    case $m in

    jan* | Jan*) m=1;;

    feb* | Feb*) m=2;;

    mar* | Mar*) m=3;;

    apr* | Apr*) m=4;;

    may* | May*) m=5;;

    jun* | Jun*) m=6;;

    jul* | Jul*) m=7;;

    aug* | Aug*) m=8;;

    sep* | Sep*) m=9;;

    oct* | Oct*) m=10;;

    nov* | Nov*) m=11;;

    dec* | Dec*) m=12;;

    [1-9]|10|11|12) ;; # номер месяца

    *) y=$m; m=" ";; # обычный год

    esac

    /usr/bin/cal $m $y # запуск настоящей команды

    В первом операторе case проверяется число аргументов $# и выбирается

    подходящее действие. Последний шаблон в этом операторе задает вариант,

    выбираемый по умолчанию: если число аргументов не 0 и не 1, будет выполнен

    последний вариант. (Поскольку шаблоны выполняются по порядку, вариант по

    умолчанию должен быть последним.) При наличии двух аргументов m и у

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

    исходная команда.

    Первый оператор case включает пару нетривиальных строк, содержащих set

    `date`. Хотя сразу это и не очевидно, легко установить действие команды,

    запустив ее. Вы помните, что команда date выводит на экран информацию о дне

    недели, месяце и числе, времени и годе. Для большей наглядности Вы можете

    сначала выполнить команду

    date

    а затем ввести

    set `date`

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

    echo $1

    на эране должно появиться название текушего дня недели;

    echo $4

    Вы должны увидеть текущее время.

    Команда set - встроенная команда интерпретатора, возможности которой

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

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

    значения $1, $2 и т.д. Поэтому set `date` присваивает $1 - день недели, $2

    - название месяца и т.д. Таким образом, при отсутствии аргументов в первом

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

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

    Теперь осталось только перевести значение месяца, если оно представлено в

    строковом виде, в число. Это делается с помощью второго оператора case,

    который практически очевиден. Единственный нюанс состоит в том, что символ

    | в шаблонах оператора case означает альтернативу: малый | большой

    соответствует варианту малый или большой. Конечно, эти варианты можно было

    бы задать с помощью [jJ]an* и т. д.

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

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

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

    Правила сопоставления шаблонов в интерпретаторе

    * задает любую строку, включая пустую

    ? задает любой одиночный символ

    [ссс] задает любой из символов в ссс [a-d0-3] эквивалентно [abcd0123]

    " ... " задает в точности ...; кавычки защищают от специальных

    символов. Аналогично действуют '...'

    \с задает с буквально (т.е. отвергает специальное значение символа)

    a | b только для выражений выбора; задает а или b

    Два последних варианта второго оператора case относятся к случаю, когда

    единственный аргумент может быть годом; напомним, что в первом операторе

    case предполагалось, что аргументом является месяц. Если это число, которым

    может быть задан месяц, то ничего не происходит (иначе предполагается, что

    задан год).

    Наконец, в последней строке вызывается /usr/bin/cal (исходная команда

    cal) с преобразованными аргументами.

    Не забудьте сделать файл выполняемым.

    Проверьте, правильно ли работает новая версия команды.

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

    cal oct

    cal octber

    обязаны выдать календарь на октябрь месяц текущего года. То же самое должна

    сделать команда

    cal Oct

    При наличии двух аргументов команда должна делать то же, что делала прежняя

    версия, за исключением перевода названия месяца в его номер, поэтому

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

    cal 2 1996

    cal feb 1996

    cal Feb 1996

    обязаны выдать на экран календарь февраля месяца1996 года.

    В случае одного аргумента следует печатать календарь месяца или года (в

    зависимости от того, что Вам требуется), поэтому команда

    cal feb

    должна печатать календарь февраля текущего года, а

    cal 1998

    - всего 1998 года.

    И, наконец, при отсутствии аргументов

    cal

    должен быть выдан календарь текущего месяца.

    Если новая версия команды cal находится в подкаталоге bin Вашего личного

    каталога, а он прописан первым в PATH, то, обращаясь к команде cal, Вы

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

    cal будет использована исходная команда? Как этого избежать? Можно ли

    назвать новую версию команды иначе?

    1. Печать файлов.

    Прежде чем послать файл на печать, его нужно специальным образом

    отформатировать. Для подготовки файла к печати служит команда pr. Она

    записывает в стандартный выходной поток заданные файлы, разбитые по

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

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

    стандартный входной поток. Команда pr позволяет осуществлять печать в

    несколько столбцов; устанавливать ширину страницы равную определенному

    количеству символов и длину страницы равную указанному количеству

    строк; начинать печать с заданной страницы; подавлять вывод 5-

    строчного заголовка и пяти последних строк на каждой странице.

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

    списке в виде, подходящем для устройства печати, введите

    pr poem test

    Каждый файл будет напечатан с новой страницы с указанием имени файла и

    нумерацией страниц.

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

    опцию, равную желаемому количеству столбцов:

    pr -3 poem test

    Можно заменить число 3 любым разумным числом, и команда pr

    "постарается" исполнить задание.

    Следует отметить, что pr - это не программа форматирования текста: она

    не разбивает текст на строки и не выравнивает поля.

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

    прежде чем воспользоваться ею следует убедиться, что печатающее

    устройство установлено, в противном случае не следует вводить команды

    посылающие файлы на печать, т.к. кроме сообщений о неполадках

    (например, о том, что в принтере отсутствует бумага) никакого

    результата они не дадут.

    На печатающем устройстве файлы можно распечатывать командой lp (line

    print — печать строк):

    lp [имя файла]...

    Если в командной строке не задано имя файла, то lp обеспечивает печать

    информации со стандартного ввода. Это значит, что lp может стоять на

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

    Т.к. программа lp не изменяет печатаемый текст, то при необходимости

    разбить текст на страницы, снабдить его заголовками и т. д., нужно

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

    и команды lp:

    pr -2 file1 | lp

    текст разбивается на страницы и размещается в 2 колонки, а затем

    отправляется на печать.

    lp filel file 2 file3

    распечатываются последовательно файлы filel, file 2, file3.

    2. Работа с дискетами.

    Системный администратор root имеет возможность, в отличие от простых

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

    подкаталогу корневого каталога, например, каталогу /vocant. После

    этого любой пользователь системы может использовать файлы, записанные

    на дискете, так же как файлы корневой файловой системы. Ссылки на

    каталог /vocant будут являться ссылками на /dev/fd0 (Вы помните, в

    UNIX все устройства, в том числе дисководы, представлены специальными

    файлами).

    Однако в некоторых системах UNIX существуют команды доступные обычным

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

    чтения и записи файлов DOS, а также просмотра файловой системы DOS:

    dosread, doswrite и dosdir.

    Команда dosdir позволяет вывести на экран список файлов и каталогов,

    сохраненных в формате DOS. Для того чтобы увидеть, какие файлы

    находятся на дискете DOS, Вам необходимо ввести следующую команду:

    dosdir /dev/fd0

    на экран будут выведены имена файлов и каталогов (/dev/fd0 –

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

    дисководу для гибких дисков). Если Вы хотите увидеть, какие из файлов

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

    опцией -r команды dosdir:

    dosdir -r /dev/fd0

    Вы также можете вывести на экран список файлов конкретного каталога,

    указав в качестве параметра команды dosdir его имя:

    dosdir /dev/fd0

    В случае задания имени файла

    dosdir /dev/fd0

    Вы увидите сообщение об ошибке:

    dosdir: Not a directory:

    Команда dosread позволяет считывать файл с дискеты DOS в стандартный

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

    экран содержимое файла дискеты DOS, достаточно задать следующую

    команду:

    dosread /dev/fd0

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

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

    DOS в заданном файле MINIX:

    dosread /dev/fd0 >

    Команда doswrite записывает стандартный выходной поток на дискету DOS

    (дискета должна быть отформатирована). Команда

    doswrite /dev/fd0 <

    записывает указанный файл MINIX на дискету DOS с заданным именем.

    3. Архивация файлов.

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

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

    сохранять копии файлов, т.е. заниматься архивированием. Архивирование

    - это копирование файлов с целью их восстановления в случае утраты.

    Наиболее простой способ архивирования - копирование файлов с жесткого

    диска компьютера на дискету.

    В UNIX-системах архивированием данных, необходимых для обеспечения

    работоспособности системы, обязан заниматься системный администратор,

    поэтому Вам следует заботиться лишь о сохранности собственных файлов.

    Как часто архивировать файлы раз в неделю, раз в месяц или ежедневно

    решать Вам. Обычно частота архивирования зависит от того, насколько

    важна информация и сколь скоро она обновляется.

    Для удобства архивирования файлы с данными следует хранить в одном

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

    задав сразу имя каталога.

    Следите за своими архивами: фиксируйте дату их создания и информацию о

    фай

    Страницы: 1, 2, 3, 4, 5


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.