Материал: Аверянов Введение в оператсионные системы и основы программирования 2015

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

во: ../../question/grant и ../../question/thieve. В приведенном примере используется директория «hacker/crack/answer/grant».

Пример 1.19. Созданиеветви дерева (путь «к корню – от корня») v100-1@beta:~/lab1> cd hacker/crack/answer/grant v100-1@beta:~/hacker/crack/answer/grant>mkdir -p ../../question/grant v100-1@beta:~/hacker/crack/answer/grant>mkdir -p ../../question/thieve v100-1@beta:~/hacker/crack/answer/grant> tree ~/hacker /home/groups/v100/v100-1/hacker

`-- crack

|-- answer

|

|-- grant

|

`-- thieve

`-- question

|-- grant `-- thieve

7 directories, 0 files

v100-1@beta:~/hacker/crack/answer/grant>

Командой tree просматривается не текущая директория (в ней ничего нет), а директория hacker, путь к которой указан относительно домашней директории, всегда обозначаемой символом «~» (волна или тильда).

Оставшуюся часть дерева (~/hacker/security) каждый может достроить в соответствии со своим собственными предпочтениями.

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

~/hacker/crack/answer/grant.

Самый простой способ – создавать файлы непосредственно в самой директории, т.е. зайти в директорию и создать файл. Однако в учебных целях необходимо научиться создавать файлы, используя полные и относительные пути к файлам, аналогично тому, как создавались ветви дерева ~/hacker.

Пример 1.20. Созданиефайла с использованием полного пути v100-1@beta:~/lab1> cd

v100-1@beta:~> cat > /home/groups/v100/v100–1/hacker/security/answer/grant/hacker2.txt

<Ctrl+D>

То уверены вы будьте

Что залезет он еще <Ctrl+D>

v100-1@beta:~>cat /home/groups/v100/v100– 1/hacker/security/answer/grant/hacker2.txt <Enter>

То уверены вы будьте Что залезет он еще v100-1@beta:~>

36

Пример 1.20 показывает, как создать файл hacker2.txt с использованием полного пути к нему.

Файл hacker3.txt создается с использованием относительного пути из директории ~/hacker/crack/question/grant, или с таким же успехом из директории ~/hacker/crack/question/thieve. Соответст-

венно, перед созданием файла одну из этих директорий необходимо сделать текущей (пример 1.21).

Пример 1.21. Созданиефайла с использованием относительного пути v100-1@beta:~> cd hacker/crack/question/grant v100-1@beta:~/hacker/crack/question/grant> cat > ../../answer/grant/hacker3.txt

Абсолютно все пароли Поместите в файл readme<Ctrl+D>

v100-1@beta:~/hacker/crack/question/grant> cat ../../answer/grant/hacker3.txt

Абсолютно все пароли Поместите в файл readme

v100-1@beta:~/hacker/crack/question/grant>

1.2.6. Копирование и перемещение файлов

Копирование и перемещение являются неотъемлемыми функциями управления конфигурацией файловой системы. Копирование дает возможность тиражировать файлы и целые каталоги в необходимом количестве экземпляров, а перемещение позволяет менять местоположение информации в связи с необходимостью решения новых задач. Для понимания и выполнения примеров в домашней директории необходимо наличие дерева ~/hacker, построение которого проиллюстрировано в п. 1.2.5.

Копирование файлов осуществляется командой cp (сокращение от copy – копировать). Формат команды копирования: cp что куда, где «что» – это путь к копируемому файлу или директории, а «куда» – путь к копии (файлу или директории). При этом копия может иметь другое имя.

В качестве учебной задачи предлагается скопировать файлы из директории hacker/crack/answer/grant в hacker/crack/question/thieve (пример 1.22), используя различные способы записи путей.

Пример 1.22. Учебно-тренировочное дерево~/hacker v100-1@beta:~> tree ~/hacker /home/groups/v100/v100-1/hacker

37

`-- hacker |-- crack

|

|-- answer

|

|

|-- grant

|

|

|

|-- hacker1.txt

|

|

|

|-- hacker2.txt

|

|

|

|-- hacker3.txt

|

|

|

`-- hacker4.txt

|

|

`-- thieve

|

`-- question

|

 

|-- grant

|

 

`-- thieve

`-- security

 

|-- answer

 

|

|-- grant

 

|

`-- thieve

`-- question |-- grant `-- thieve

15 directories, 4 files

v100-1@beta:~>

Команда cp – копирование файлов

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

v100-1@beta:~> cp hacker/crack/answer/grant/hacker1.txt hacker/crack/question/thieve

v100-1@beta:~>ls hacker/crack/question/thieve hacker1.txt

v100-1@beta:~>

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

Пример 1.24. Копирование из текущей директории с изменением имени v100-1@beta:~> cd hacker/crack/answer/grant v100-1@beta:~/hacker/crack/answer/grant>cp hacker2.txt ../../question/thieve/hck2.txt v100-1@beta:~/hacker/crack/answer/grant>ls ~/hacker/crack/question/thieve hacker1.txt hck2.txt

v100-1@beta:~/hacker/crack/answer/grant>

38

Конечная точка во второй строке примера 1.25 является обозначением текущего каталога.

Пример 1.25. Копирование в текущую директорию v100-1@beta:~/hacker/crack/answer/grant> cd ../../question/thieve v100-1@beta:~/hacker/crack/question/thieve> cp ../../answer/grant/hacker3.txt . v100-1@beta:~/hacker/crack/question/thieve> ls

hacker1.txt hacker3.txt hck2.txt v100-1@beta:~/hacker/crack/question/thieve>

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

Возможно одновременное копирование группы файлов, как в примере 1.26. Для обозначения группы файлов может быть использована маска – «*» (символ «звездочка»). Маска обозначает группу символов. Например, «*» означает «группа любых символов имени файла», аналогичный результат копирования был бы получен при использовании масок «*.*» – файлы с любым именем и любым расширением и «hacker*» (файлы c началом «hacker» и любым продолжением) или «hacker*.*» (файлы c началом «hacker», любым завершением имени и любым расширением).

Пример 1.26. Копирование с применением маски v100-1@beta:~/hacker/crack/answer/grant> cd ../../question/thieve v100-1@beta:~/hacker/crack/question/thieve> cp ../../answer/grant/* v100-1@beta:~/hacker/crack/question/thieve> ls

hacker1.txt hacker2.txt hacker3.txt hacker4.txt hck2.txt v100-1@beta:~/hacker/crack/question/thieve>

Пример 1.23 демонстрирует, как копировать файл hacker1.txt, находясь в домашней директории. В предыдущих примерах начало пути из текущей директории начиналось с «./». Такой вариант – универсальный, однако если речь идет не об исполнимых файлах, а о файлах данных, то начало «./» не является обязательным. Очевидно, что текстовые файлы – файлы данных.

С практической точки зрения перемещение файлов отличается от копирования заменой команды cp на mv (move – перемещать). При этом в отличие от копирования перемещаемый файл (файлоригинал) удаляется из директории-источника. В качестве упражнения предлагается переместить файлы из hacker/crack/answer/grant

вдиректорию hacker/security/answer/grant, по аналогии с примерами

1.24– 1.26.

39

1.3. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ UNIX

1.3.1. Пользователи и учетные записи

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

системное имя (user name) – имя, под которым пользователь входит в систему;

домашний каталог (home directory) – каталог (директория),

вкоторый пользователь попадает при входе в систему; пользова-

тель v100-1 попадает в каталог /home/groups/v100/v100-1;

начальная оболочка (login shell) – командный интерпретатор, который запускается для пользователя при входе в систему; для пользователя v100-1 и других студентов по умолчанию запускается командный интерпретатор bash.

В связи с тем, что UNIX – многопользовательская операционная система, в ней может одновременно работать множество пользователей. Подобно тому, как команда pwd сообщает имя текущего каталога, можно узнать имя «текущего» пользователя (пример 1.27), это делается посредством команды whoami (кто я?).

Команды whoи whoami – информация о пользователях системы

Пример 1.27. Запрос имени текущего пользователя v100-1@beta:~ > whoami

v100-1

v100-1@beta:~ >

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

Пример 1.28. Запрос списка пользователей, работающих в системе v100-1@beta:~> who

v100-2

pts/0

2010-03-01 10:33 (62.117.113.26)

v100-1

pts/1

2010-03-01 10:33 (62.117.113.26)

v100-4

pts/2

2010-03-01 10:33 (62.117.113.26)

 

 

40

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