* глава доступ к файлам содержание icon

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



Название* глава доступ к файлам содержание
страница1/6
Дата конвертации20.05.2013
Размер1.03 Mb.
ТипРеферат
скачать >>>
  1   2   3   4   5   6



* ГЛАВА 2. Доступ к файлам *


СОДЕРЖАНИЕ


Введение

2.1. Поиск файлов

2.1.1. tree - визуализация файлового дерева

2.1.2. thead - печать начала каждого файла

2.1.3. tgrep - поиск строк в дереве файловой системы

2.1.4. paths - нахождение пути доступа к исполняемым файлам, со

специальными опциями

2.2. Вывод информации

2.2.1. lc - вывод файловой информации на экран по столбцам

2.2.2. ll - вывод файловой информации в длинном формате

2.2.3. kind - вывод однотипных файлов

2.2.4. m - простой доступ к команде more

2.2.5. mmm - обработка программой nroff макрокоманд для рукописей

2.2.6. pall - печать всех файлов в дереве


ВВЕДЕНИЕ


В главе 1 был представлен обзор общей структуры системы UNIX и

показано, как взаимодействуют ее различные части. Это похоже на введе-

ние в географию, когда на глобусе показывают континенты и крупные вод-

ные пространства. Такая информация, хотя и является хорошим фундамен-

том для общих знаний, вряд ли поможет найти наилучший путь из

Сан-Франциско в Лос-Анжелес. Необходим следующий уровень детализации:

названия поселений, дорог, развилок, улиц, адресов.

Файловая система UNIX похожа на континент со множеством городов

и, действительно, с адресами внутри городов. Каталоги и различные

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

тами назначения, названия файлов - с адресами. Большое число путей и

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

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

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

принципов.

Будучи пользователями UNIX, все мы научились пользоваться основ-

ными командами файловой информации, как, например, ls с различными оп-

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

перемещать файлы. Тем не менее, находить нужную информацию о файлах из

всей массы информации не так-то легко. Нам необходимо создать инстру-

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

UNIX, чтобы находить то, что мы ищем, и, соответственно, выводить ин-

формацию о файлах на экран, печатать листинги содержимого файлов и

т.д.

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

чают задачу поиска и доступа к файлам. Доступ к файлам может быть

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

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

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

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

текстовые файлы вообще или исходные файлы на языке Си в частности.


^ КОМБИНИРОВАНИЕ ПРОДУКТИВНЫХ ИДЕЙ


Две концепции являются общими почти для всех файловых инструмен-

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

чает, что некоторые команды системы UNIX (например, find) просматрива-

ют все файловое дерево, начиная с некоторой заданной начальной точки

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

лог, то его содержимое тоже исследуется - и так далее вниз к самому

нижнему под-подкаталогу. Так проходятся маршруты ко всем файлам в це-

лом дереве.

Стандартные команды системы UNIX обеспечивают только ограниченное

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

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

в этой главе - воспользоваться преимуществами такого рекурсивного по-

иска и распространить их на многие другие функции.

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

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

каналами и управление потоком данных с помощью переадресации. Вероят-

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

работе с UNIX и эффективно их использовали. Возможно, вы еще не осоз-

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

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

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

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

(В следующей главе мы выйдем за пределы распечатки и отображения ин-

формации на экран и научимся работать с файлами так, что мы сможем ко-

пировать, перемещать и восстанавливать их по мере надобности.)

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

дела: поиск файлов и распечатка файловой информации. Имеет смысл

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

чтобы потом с ним работать.


^ ПОИСК ФАЙЛОВ


Этот раздел посвящен поиску файлов, где бы они ни находились, вы-

воду на экран выбранной информации и поиску символьных строк внутри

файлов.

Первая программа, tree, обходит все файловое дерево и печатает

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

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

глобальный осмотр файловых областей и их вложенной по глубине структу-

ры.

Другое инструментальное средство - это thead. Thead печатает

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

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

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

идентифицировать содержимое файла. При вызове thead вы можете явно за-

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

имен файлов. Это делает команду thead фильтром - особым видом команд

системы UNIX, который мы обсудим позже.

Следующее инструментальное средство - tgrep. Как следует из наз-

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

использует утилиту grep. Tgrep ищет символьные строки в каждом файле,

который находится в данном сегменте файлового дерева. Tgrep также яв-

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

ру.

В нашем последнем проекте в этом разделе мы обратимся к использо-

ванию каталогов как средства "навигации". Сначала мы опишем основной

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

файлов проверяет, находится ли этот файл в каком-либо каталоге по ука-

занному маршруту поиска. Затем мы построим paths - утилиту, которая

дополняет функцию поиска полезными опциями.


^ РАСПЕЧАТКА ФАЙЛОВОЙ ИНФОРМАЦИИ


Этот раздел знакомит вас с инструментальными средствами, предназ-

наченными для вывода на экран имен файлов и их содержимого. Инструмен-

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

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

команды, и внести больше смысла в одну команду.

Первые два командных файла являются пре- и постпроцессорами для

команды ls. Команда lc выводит файловую информацию по столбцам, коман-

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

нены опциями команды ls, чтобы сделать распечатки более информативны-

ми. Так как команда ls используется довольно часто, упаковка наиболее

часто применяемых нажатий клавиш в командные файлы представляется це-

лесообразной. Упаковка уменьшает количество постоянно набираемых сим-

волов и упрощает использование команд, исключает необходимость запоми-

нания подробного синтаксиса.

Третье инструментальное средство - это kind. Kind - еще один ко-

мандный файл препроцессорного типа, использующий команду UNIX file.

Команда file читает указанный файл и затем сообщает, является ли этот

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

file не выбирают файлы заданного типа, возникает необходимость в соз-

дании для этого специальной утилиты. Команда kind работает с распечат-

кой команды file. Kind выводит на экран имена файлов только заданного

типа.

Еще один командный файл - m, который облегчает работу со стан-

дартной командой more системы UNIX, уменьшая количество необходимых

для запуска команды символов и упрощая интерфейс. Делается это без по-

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

файла или передать команде more данные по программному каналу, вы мо-

жете сделать то же самое для m.

Следующий командный файл - это mmm. Он состоит из одной заготов-

ленной командной строки для программы nroff системы UNIX. Существует

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

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

запоминании специфических опций, необходимых для вашей работы с коман-

дой. Эти проблемы отпадут, если у вас есть команда mmm. Определите оп-

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

(о том, как это сделать практически, речь пойдет ниже). Теперь доста-

точно набрать mmm - и вы имеете возможность работать с вашей командой

nroff.

Последняя утилита - pall. Pall обходит файловое дерево, ведя по-

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

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

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

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

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

файлами программ.

Определив в общем основные наши задачи, перейдем к более близкому

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


^ 2.1. ПОИСК ФАЙЛОВ


2.1.1. tree - визуализация файлового дерева





ИМЯ: TREE




tree - вывод на экран структуры файлового дерева


НАЗНАЧЕНИЕ


Находит все файлы в файловом дереве и выводит на экран имена фай-

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


^ ФОРМАТ ВЫЗОВА


tree [dir]


ПРИМЕР ВЫЗОВА


$ tree $HOME


Выводит структуру файлового дерева регистрационного каталога.


ТЕКСТ ПРОГРАММЫ


1 :

2 # @(#) tree v1.0 Visual display of a file tree Author: Russ Sage

2а вывод на экран структуры файлового дерева


4 if [ "$#" -gt 1 ]

5 then echo "tree: wrong arg count">&2

6 echo "usage: tree [dir]" >&2

7 exit 2

8 fi

9 if [ "$#" -eq 1 ]

10 then if [ ! -d $1 ]

11 then echo "$0: $1 not a directory">&2

12 echo "usage: tree [dir]" >&2

13 exit 2

14 fi

15 fi


17 find ${1:-.} -print | sort | sed -e "1p" -e "1d" \

18 -e "s|[^/]*/| /|g" \

19 -e "s|[^ */|/|" \

20 -e "s|/\([^/]*\)$|\1|"


ОПИСАНИЕ


ЗАЧЕМ НАМ НУЖЕН КОМАНДНЫЙ ФАЙЛ tree?


Как мы уже отмечали, вся система UNIX строится вокруг файловой

системы, которая похожа на дерево. Дерево, с которым мы работаем в

системе UNIX, растет вверх ногами: корень находится вверху, а ветви и

листва растут вниз от корня. Физическая структура реальных деревьев и

файловых деревьев, используемых в системе UNIX, очень сходна: один ко-

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

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

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

может иметь каждая ветвь, фактически не ограничено.

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

дереву. Некоторые команды обходят дерево и сообщают о его компонентах,

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

человеком. Это делает командные файлы весьма мощными инструментами.

Перевести необработанные, недружественные сообщения командных файлов в

удобный, информативный вид довольно легко.

Команда tree является комбинацией команд системы UNIX, которые

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

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

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

логов и подкаталогов.


ЧТО ДЕЛАЕТ tree?


Команда tree - это постпроцессор для команды UNIX find. Find

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

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

ту sed системы UNIX, чтобы перевести выход команды find в наглядную

форму.

Входным параметром для команды tree является имя каталога, кото-

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

/usr/spool/uucp, или в относительном, например, ../../bin. Если ника-

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

гом.

Имя каталога является началом (или корнем) отображаемого дерева.

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

гу, отображаются с отступом. Для удобства представления гнездовой

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

косая черта (/).

Рассмотрим пример структуры каталога. Пусть корневым каталогом

будет /tmp с двумя каталогами: a и b. В каталоге a находится подката-

лог aa, который содержит файл file1, а в каталоге b , соответственно,

подкаталог bb, содержащий файл file2. Команда find выдаст распечатку

такого вида:


# find /tmp -print

/tmp

/tmp/a

/tmp/a/aa

/tmp/a/aa/file1

/tmp/b

/tmp/b/bb

/tmp/b/bb/file2


Как видно из этого листинга, файлы a и aa есть каталоги, а файл

file1 находится внизу файлового дерева. Сравните этот результат с ре-

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


# tree /tmp

/tmp

/ a

/ / aa

/ / / file1

/ b

/ / bb

/ / / file2


Корневым каталогом в этом листинге является каталог /tmp. Там,

где дерево переходит на более глубокий уровень, печатаются только сим-

волы косой черты. Первый уровень - /tmp, под этим уровнем находятся

файлы-каталоги a и b, затем, соответственно, их подкаталоги aa и bb.

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

лога находятся два файла (и эти файлы в действительности являются ка-

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

что мы смогли идентифицировать aa и bb как каталоги только потому, что

в них присутствуют файлы file1 и file2.

Сравните этот листинг с выходом "необработанной" команды find.

Выход команды tree исключает отвлекающее внимание повторение элементов

путей доступа при каждом переходе к более низкому уровню. Благодаря

этому, сразу же видно СУЩЕСТВЕННУЮ информацию. Вот что мы имеем в ви-

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

с системой UNIX.


ПРИМЕРЫ


1. $ tree


Использует подразумеваемый каталог (текущий каталог, что рав-

носильно команде "$ tree .") в качестве начала файлового дерева.


2. $ tree /


Печатает древовидный листинг для КАЖДОГО файла всей системы. Ко-

манда find при таком ее запуске начинает с корневого каталога и выдает

информацию о всех файлах системы.


3. $ tree $HOME/..


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

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

одном и том же каталоге, например /usr/*).


ПОЯСНЕНИЯ


Первая строка содержит только знак двоеточия (:) - "нулевую ко-

манду". Это связано с тем, что все командные файлы, описываемые в этой

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

тора Bourne shell. Наш комментарий в строке 2, идентифицирующий

версию, начинается со знака решетки (#). Си-shell ищет этот знак как

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

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

редает командный файл интерпретатору Bourne shell. Вот почему мы не

хотим начинать первую строку со знака #. Мы, конечно, могли бы оста-

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

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

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

Строка 2 идентифицирует версию. Символьная строка @(#) есть спе-

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

как строка "what" ("что"). Команда what в системе UNIX читает файл и

печатает сообщение, которое следует за строкой "what". Чтобы идентифи-

цировать версию данного командного файла, наберите


# what tree


и будет напечатано следующее сообщение:


tree:

tree v1.0 Visual display of a file tree Author: Russ Sage


Строки 4-7 проверяют, не слишком ли много аргументов было переда-

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

$#, которая представляет собой счетчик числа позиционных параметров

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

ется соответствующее сообщение об ошибке в стандартный файл ошибок

(stderr) и программа останавливается с плохим значением статуса.

Отметим, что команда echo обычно печатает в стандартный выход

(stdout). Мы можем перенаправить stdout в другой файловый дескриптор,

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

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

дескриптор (&) стандартного файла ошибок (2)". Печать сообщений об

ошибках в stderr обеспечивает согласованное поведение командного файла

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

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

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

Си. В Си истинное значение есть 1, ложное отлично от 1. При программи-

ровании на языке shell успешным статусом выхода (истиной) является 0,

а плохим статусом (ложью) ненулевое значение.

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

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

напечатать сообщение об ошибке и прекратить работу. Дело в том, что

все инструментальные средства системы UNIX должны быть спроектированы

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

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

димо будет вызвать команду tree и проверить, корректно ли она отрабо-

тала. Хорошим стилем проектирования программных средств является прог-

нозирование и разрешение многих способов использования программы.

Строки 9-15 проверяют, чтобы любые параметры, передаваемые ко-

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

синтаксисе. Напомним, что в командной строке может быть помещен только

один каталог. Если мы используем только один параметр и этот параметр

не является каталогом, то мы печатаем сообщение об ошибке и выходим.

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

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

ется корректным каталогом.

Мы подошли к сердцу команды tree - это строки 17-20. Главным

здесь является команда find системы UNIX. Каталог, в котором ведется

поиск, определяется при запуске команды. Синтаксис ${1:-.} является

формой параметрической подстановки и означает следующее: если $1 (что

является первым позиционным параметром) установлен (иными словами,

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

использовать это значение. В противном случае следует использовать ка-

талог . (текущий каталог). Этот тип подстановки дает нам возможность

запускать команду tree без указания имени каталога (когда после tree

на командной строке ничего не следует),- то есть работать в режиме "по

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

Команда find выводит на печать полное имя каждого файла, который

ей встречается. Поскольку не используется никакая специальная опция

для селекции файлов, печатаются все имена. После этого все полные име-

на файлов сортируются для более удобного чтения. Такая сортировка

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

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

Далее, отсортированные полные имена файлов передаются по прог-

раммному каналу команде sed системы Unix. Sed - это "потоковый редак-

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

тификации и обработки различных образцов текста. Опции -e являются

операциями редактирования, применяемыми к поступающим данным. Первый

оператор просто сообщает команде sed, что нужно напечатать первую

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

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

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

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

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

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

работе.

Вторая операция редактирования является командой подстановки. Она

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

первого символа /) на последовательность пробелов и затем один символ

(/). Это избавляет нас от печатания имен промежуточных каталогов впе-

реди полного имени файла. Буква g в конце этой строки означает, что

эта операция выполняется глобально, то есть для всех считываемых сим-

волов. Итак, теперь строка состоит из начального элемента пути и одной

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

черты. Символы обратной косой черты (\) в конце операций редактирова-

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

продолжить работу со следующей строкой в текущем пакете операций ре-

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

Третья операция редактирования (строка 19) также является коман-

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

(вплоть до символа /) на "не символ" и один символ косой черты. Этот

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

смещает символ в самую левую позицию. Это создает гнездовую индикацию,

которую мы видели в предыдущем примере.

Последняя операция редактирования (в строке 20) заменяет символ

косой черты и все отличные от него символы (до конца строки) просто на

символы, отличные от /. Отметим, что это устраняет самый правый символ

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

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

Отметим синтаксис \1 команды sed - признак, относящийся к первому

(в данном случае единственному) регулярному выражению в скобках, кото-

рое ему предшествует. В данном случае команде sed указано пройти сим-

волы, соответствующие регулярному выражению - символы, отличные от /.


2.1.2. thead - печать начала каждого файла





ИМЯ: thead




thеаd Печатает заголовок (первые несколько строк) файлов.

  1   2   3   4   5   6




Похожие:

* глава доступ к файлам содержание iconПрограммы-оболочки. Операционные системы windows
Они преобразуют неудобный командный пользовательский интерфейс в дружественный графический интерфейс или интерфейс типа "меню". Оболочки...
* глава доступ к файлам содержание iconАкадемик Н. И. Вавилов Ученицы 11б класса 411 школы Досаевой Екатерины Болонкина Е. В. Петродворец 1999 год. Содержание: Введение Глава I: Становление Глава II: Лысенковщина Глава III: Арест Глава IV: Путешествия Заключение Список литературы Ссылки Приложение Введение: Очень трудно определить границ

* глава доступ к файлам содержание iconСодержание Введение 3 Глава Сущность и содержание маркетинга в туризме 5 Глава Процесс планирования маркетинга в сфере туризма 17 Глава Особенности рекламы в сфере туризма 22 Заключение 27 Список литературы 28 Введение
С развитием межгосударственных контактов сфера услуг вышла за рамки отдельных стран и превратилась в один из важнейших видов мирового...
* глава доступ к файлам содержание iconСодержание. Введение. 2 Глава Что такое недвижимость? 3 Глава Оценка недвижимости. 4 Глава Расчет видов износа. 7 Глава Факторы, негативно влияющие на рынок недвижимости 17 и пути их устранения. Заключение. 19 Список использованной литературы. 20 Введение
Появился слой новых владельцев недвижимости как в сфере личного потребления, так и во многих сферах предпринимательской деятельности....
* глава доступ к файлам содержание iconДокументы
1. /Доступ к информации/book147.doc
2. /Доступ...

* глава доступ к файлам содержание iconС. Ю. Витте Содержание Введение Глава I. Очерк жизни и деятельности С. Ю. Витте Глава II. Время и реформы С. Ю. Витте Денежная реформа 1895-1897 гг

* глава доступ к файлам содержание iconСодержание: Введение. Глава Многообразие видов и форм любви. Их классификации. Глава Становление понимания любви от античности через средневековье к эпохе Возрождения. Глава Философия любви в Новом времени. Заключение. Введение
Необычайно по своему количеству многообразие вариаций проявления любви, однако наиболее часто мы говорим об эротической любви, под...
* глава доступ к файлам содержание iconСовременный гуманитарный университет тверской филиал
Краткое содержание дипломной работы: Ведение. Глава Правовое регулирование прав ребенка. Глава 2 Защита прав ребенка в семейных правоотношениях....
* глава доступ к файлам содержание iconСодержание Введение. 1 Глава Сущность и критерии малого предпринимательства. 4 Глава Организация финансов малого предприятия. 9
Система государственной поддержки и регулирования малого предпринимательства. 16
* глава доступ к файлам содержание iconСодержание. Введение с. 2 Глава Сущность маркетинга. Его элементы с. 3-13 Глава Основные принципы маркетинга с. 13-20 Глава Особенности развития маркетинга в РФ с. 21-27 Заключение с. 27-28 Список использованной литературы с. 29 Введение
«Максвелл-хаус» с двумя чайными ложками сахарного песка «Домино», одновременно жуя сдобную булочку «Сара Ли». Мы покупаем апельсины,...
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©rushkolnik.ru 2000-2015
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы