-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathlab2.txt
58 lines (48 loc) · 10.8 KB
/
lab2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Лабораторная работа №2
Требования:
Изучить утилиты cd, ls, who, whoami, pwd, touch, cat (обязательно и на чтение, и на запись), cp (обязательно и с файлами, и с папками), mv, rm (обязательно и с файлами, и с папками), mkdir, ps, grep, sort, а также перенаправление потоков, конвейеры, абсолютные, относительные пути в линукс, отличие . и *
Выполнив ряд произвольных действий в UNIX терминале с использованием утилит cd, ls, who, whoami, pwd, touch, cat (обязательно и на чтение, и на запись), cp (обязательно и с файлами, и с папками), mv, rm (обязательно и с файлами, и с папками), mkdir, ps, grep, sort, а также перенаправление потоков, конвейеры, абсолютные, относительные пути в линукс, отличие . и *. Выполненные действия запротоколировать (сохранить в текстовый документ)
Замечание: при выполнении действий для протокола обязательно демонстрируйте какое влияние та или иная команда оказывает, например, перед тем как создать файл нужно показывать содержимое папки в которой вы будете его создавать и после создания снова покажите содержимое директории, чтобы показать что файл появился. Если вы пишете в файл что-то, обязательно демонстрируйте записанное содержимое, если вы переходите в другие директории обязательно показывайте, что текущий путь изменился.
P.S. пример протокола с использованием не всех утилит находится в файле "lab2-example.txt".
Теория:
Программа терминал, консоль, командная строка или эмулятор терминала это программа с помощью которой происходит взаимодействие с компьютером без графического интерфейса, через CLI (Command Line Interface (интерфейс командной строки)). На первый взгляд современным пользователям CLI может показаться отсталым и неудобным, но это не так.
Приемущества:
- Коммандная строка тратить гораздо меньше ресурсов компьютера
- Создание приложений с CLI гораздо проще чем приложений с GUI (Graphic User Interface (графический интерфейс)) и в этом курсе мы будем писать именно CLI приложения
- CLI гораздо проще и удобнее использовать при работе с удаленными машинами
- Существуют программы с огромнейшим количеством настроек, если вы начинающий пользователь то вы увидите панель космического корабля и ничего не поймете, в то время как в командной строке такой проблемы можно избежать.
- Передача настроек гораздо проще, посколь вам достаточно скопировать конфигурационный файл
- Вам не нужна мышка и привыкнув, можно работать значительно быстрее, чем с графическим интерфейсом
- Действия командной строки легко можно автоматизировать написав bash скрипт. Например учась на первом курсе я писал bash скрипт, который создавал мне для каждой олимпиады папку по определенному шаблону
И на этом плюсы не кончаются.
Существуют разные оболочки и языки для работы с командной строкой например PowerShell, Bash, Zsh, Csh, Fish, ReXX.
В этом курсе мы будем работать с UNIX-подобными ОС (опирационными системами) (FreeBSD, Linux, MacOs) и будем использовать bash-подобные языки (bash, csh, zsh).
Разберем основные команды:
- ls [-al] [путь к директории] - команда для просмотра файлов в директории, если не указывать путь, то вы увидите содержимое текущей директории. Флаг a показывает в том числе и скрытые файлы, флаг l показывает более подробную информацию о файлах (объем, дата последнего изменения, уровень доступа).
- pwd - выводит путь к текущей директории
- cd [путь к директории] - команда для перехода в указанную директорию, если путь не указан, то вы перейдете в текущую, тоесть останетесь в текущей директории.
- mv старый_путь новый_путь - команда для перемещения папки или файла. Также используется для переименования файлов.
- mkdir название_папки - команда для создания папки с указанным названием
- touch название_файла - команда для создания файла с указанным названием
- rm [-rf] путь1 путь2 путь3 ... путьn - команда для удаления файлов или папок. Флаг r делает удаление рекурсивным, тоесть удаляет все подпапки, флаг f делает так, что сообщения об ошибках при удалении не выводятся
- cp [-rf] старый_путь новый_путь - команда копирования файла или папки, флаги аналогичны флагам команды rm.
- who - выводит информацию об активных сессиях терминала
- whoami - выводит информацию о конкретно данной сессии
- ps - показывает активные процессы в терминале
- cat файл1 файл2 файл3 ... файлn - команда конкатенации (склеивания файлов) ввыводит результат склеивания, если указать 1 файл, то выведет просто содержимое этого файла, если не один файл не указан, то дает вводить текст из консоли и выводит каждую строку
Перенаправление потоков.
Иногда мы хотим записать результат выполненной команды или программы в файл или хотим, чтобы входные данные программы были введены из файлов (последнее бывает крайне удобно при отладке кода), в таких случаях используется перенаправление потоков, рассмотрим на примерах:
1. cat f1.txt > f2.txt - данная команда запишет в f2.txt результат команды cat f1.txt. Т.е содержимое f1.txt. При этом старые данные f2.txt будут удалены
2. cat > f2.txt < f1.txt - данная команда запишет в файл результат команды cat в f2.txt, входными данными которой будет файл f1.txt, тоесть запишет содержимое f1.txt. При этом старые данные f2.txt будут удалены.
3. cat f1.txt >> f2.txt - данная команда делает то же самое, что и в примере 1, но удаляя содержимое f2.txt
Конвейеры.
Иногда мы хотим передать результат выполнения команды следующей команде, это можно сделать с помощью конвейеров. Пример:
ls | sort -r - данная команда выведет содержимое директории отсортированное в обратном порядке
Утилита grep это мощный инструмент для поиска с огромным количеством опций и настроек. Вот некоторые из них:
grep -r "МАИ" some_dir - выведет все строки во всех файлах всех подпапок которые содержат сочетание символов МАИ
grep -lr "MAИ" some_dir - выведет названия всех файлов всех подпапок пакпи some_dir где встречается сочение символов МАИ
grep -rw "МАИ" some_dir - выведет все строки во всех файлах всех подпапок папки some_dir которые содержат слово МАИ, оно учтет все пробелы, знаки препинания и тд.
grep -c "МАИ" some_file посчитает количество строк, коотрые содержат сочетания симолов МАИ в файле some_file.
grep -v "МАИ" some_file - выведет все строки из файла some_file, в которых не содержится сочетание символов МАИ
ls | grep -E "^test-file[1-9]+" - выведет название всех документов, которые начинаются test-file а дальше содержат только цифры.
Данные опции могут комбинироваться.