Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
− | Здесь будут размещены материалы курса | + | Здесь будут размещены материалы курса «Программирование в Linux”. |
| | | |
| === Bash-скрипты === | | === Bash-скрипты === |
| | | |
− | ==== Задание 0 ==== | + | ==== Задание 1 ==== |
| Написать скрипт, генерирующий пароль (случайный набор символов) заданной длины. Минимальный набор разрешённых символов: буквы латинского алфавита, цифры. | | Написать скрипт, генерирующий пароль (случайный набор символов) заданной длины. Минимальный набор разрешённых символов: буквы латинского алфавита, цифры. |
| | | |
− | ==== Задание 1 ==== | + | ==== Задание 2 ==== |
− | Вариант 1.
| |
− | | |
| Дан текстовый файл,содержащий лог компилятора g++ с описанием ошибок и предупреждений, выданных при компиляции. Написать скрипт, читающий данный текстовый файл и выводящий сообщения об ошибках в формате "Error in the file %имя файла%: line #%номер строки%, symbol #%номер столбца%". | | Дан текстовый файл,содержащий лог компилятора g++ с описанием ошибок и предупреждений, выданных при компиляции. Написать скрипт, читающий данный текстовый файл и выводящий сообщения об ошибках в формате "Error in the file %имя файла%: line #%номер строки%, symbol #%номер столбца%". |
| | | |
− | Вариант 2.
| + | ==== Задание 3 ==== |
− | | |
| Написать скрипт, принимающий в качестве аргумента адрес веб-страницы, сохраняющий выдачу этой страницы и выводящий в текстовый файл адреса всех картинок, указанных на странице в html-тегах <''img''>. | | Написать скрипт, принимающий в качестве аргумента адрес веб-страницы, сохраняющий выдачу этой страницы и выводящий в текстовый файл адреса всех картинок, указанных на странице в html-тегах <''img''>. |
| | | |
− | Вариант 3.
| + | ==== Задание 4 ==== |
− | | |
− | Написать скрипт, печатающий контур Российской Федерации в стандартный поток вывода терминального окна. Использовать псевдографику, доступную в кодировке ASCII. Размеры терминального окна считать стандартными.
| |
− | | |
− | Вариант 4.
| |
− | | |
− | Дан текстовый поток, где каждая строчка содержит два числа, разделённых пробелом. Написать скрипт на основе команды '''awk''', обрабатывающий этот поток и выводящий суммы чисел в строках.
| |
− | | |
− | ==== Задание 2 ==== | |
| Написать скрипт, принимающий 3 опциональных аргумента и производящий в соответсвии с указанными параметрами компиляцию исходного кода на Си++. Дополнительно указываются флаги ''-pedantic -std=c++11''. | | Написать скрипт, принимающий 3 опциональных аргумента и производящий в соответсвии с указанными параметрами компиляцию исходного кода на Си++. Дополнительно указываются флаги ''-pedantic -std=c++11''. |
| Список аргументов: | | Список аргументов: |
Строка 30: |
Строка 19: |
| # Имя компилятора. По умолчанию ''g++''. | | # Имя компилятора. По умолчанию ''g++''. |
| | | |
− | ==== Задание 3 ====
| |
− | Написать скрипт, принимающий в качестве аргументов названия двух файлов. Используя команду diff, скрипт должен выводить количество изменений, которые нужно сделать для получения из первого файла второй.
| |
− |
| |
− | <div class="mw-collapsible mw-collapsed" style="width:100%" >
| |
− | === Список изучаемых команд ===
| |
− | <div class="mw-collapsible-content">
| |
− | <syntaxhighlight lang="test" line start="1" enclose="div">
| |
− | alias
| |
− | apt-cache
| |
− | apt-get
| |
− | aptitude
| |
− | awk
| |
− | bash
| |
− | bc
| |
− | cat
| |
− | cd
| |
− | chmod
| |
− | chown
| |
− | clang
| |
− | clang++
| |
− | clang-format
| |
− | clear
| |
− | cron
| |
− | cp
| |
− | date
| |
− | diff
| |
− | dos2unix
| |
− | dpkg
| |
− | echo
| |
− | emacs
| |
− | exit
| |
− | expect
| |
− | find
| |
− | ftp
| |
− | g++
| |
− | gcc
| |
− | gedit
| |
− | gfortran
| |
− | git
| |
− | grep
| |
− | head
| |
− | help
| |
− | history
| |
− | ifconfig
| |
− | ip
| |
− | kate
| |
− | kill
| |
− | killall
| |
− | less
| |
− | ln
| |
− | ls
| |
− | lynx
| |
− | make
| |
− | man
| |
− | mc
| |
− | mcedit
| |
− | more
| |
− | mount
| |
− | mv
| |
− | nano
| |
− | open
| |
− | passwd
| |
− | perl
| |
− | ping
| |
− | ps
| |
− | pwd
| |
− | python
| |
− | sed
| |
− | seq
| |
− | sftp(+ put, get)
| |
− | sh
| |
− | shutdown
| |
− | sleep
| |
− | source
| |
− | spawn
| |
− | ssh
| |
− | su
| |
− | sudo
| |
− | svn
| |
− | tac
| |
− | tail
| |
− | time
| |
− | top
| |
− | touch
| |
− | tr
| |
− | traceroute
| |
− | unmount
| |
− | useradd
| |
− | vi(vim)
| |
− | wait
| |
− | watch
| |
− | wget
| |
− | whatis
| |
− | whereis
| |
− | whoami
| |
− | yum
| |
− | </syntaxhighlight>
| |
− | </div>
| |
− | </div>
| |
− |
| |
− | ==== Список ПО к установке ====
| |
− |
| |
− | Список пакетов к установке с помощью apt-get:
| |
− | * vim
| |
− | * gcc
| |
− | * g++
| |
− | * python3
| |
− | * python-pip3
| |
− | * p7zip
| |
− | * make
| |
− | * binutils
| |
− |
| |
− | Список библиотек к установке с помощью pip3:
| |
− | * numpy
| |
− | * matplotib
| |
− |
| |
− | ==== Список вопросов для подготовки ====
| |
− | # Идеалогия '''unix''', история '''linux''' и отличие от других ОС, структура директорий, различия пользовательских интерфейсов (''unix, linux, bsd, macos, windows, core, uname, cui, cli, gui, etc.'').
| |
− | # Основы работы в консоли (''sudo, useradd, passwd, su, date, time, bc, sleep, mount, top, kill, etc.'').
| |
− | # Всё про '''bash''', включая синтаксис, примеры, обработку текста (''sh, bash, stdin, stdout, grep, awk, sed, etc.'').
| |
− | # Установка и удаление приложений, пакетные менеджеры, поиск информации о пакетах (''dpkg, apt, aptitude, yum, apt-get, apt-cache, etc.'').
| |
− | # Интерпретаторы и интерпретируемые языки (''bash, python, perl, etc.'').
| |
− | # Компиляторы и компилируемые языки (''gcc, clang, c, c++, fortran, etc.'').
| |
− | # Регулярные выражение: описание, живые примеры, применение в коде (''regex, awk, python, perl, etc.'').
| |
− | # Резервное копирование, системы контроля версий, непрерывная интеграция (''diff, rsync, cron, git, svn, github, bitbucket, etc.'').
| |
− | # Настройка и автоматизация сборки (''env. variables, building flags, optimisation, scripts, configure, makefile, cmake, etc.'').
| |
− | # Настройка виртуальных машин, тестирование, оформление документации (''virtualbox, qemu, mingw, cygwin, catch2, doxygen, etc.'').
| |
− | # Микроконтроллеры (всё, что вспомните).
| |
− | # Удалённое управление, пакеты, сетевая модель '''OSI''', сетевые атаки (''ssh, ftp, sftp, ping, ifconfig, traceroute, nmap, injection, man in the middle, etc.'').
| |
| | | |
| === Литература === | | === Литература === |
Строка 165: |
Строка 25: |
| * [http://www.linux-ink.ru/static/Docs/Courses/adv-user-guide/adv-user-guide.pdf Садов О. Л. Основы ОС Linux/UNIX для пользователей] | | * [http://www.linux-ink.ru/static/Docs/Courses/adv-user-guide/adv-user-guide.pdf Садов О. Л. Основы ОС Linux/UNIX для пользователей] |
| * [https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-ru.md#unix Открытые книги по Unix] | | * [https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-ru.md#unix Открытые книги по Unix] |
− |
| |
− | === Материалы ===
| |
− | * [http://mech.spbstu.ru/images/5/51/UnixSHORT.pdf Вводная презентация]
| |
− | * [http://mech.spbstu.ru/images/6/6f/Linux191022.zip Конспект занятий C++]
| |
− | * [http://mech.spbstu.ru/images/2/27/Doxygen.zip Пример использования Doxygen] (zip)
| |
− | * [http://mech.spbstu.ru/images/c/cc/Catch.zip Пример использования Catch2] (zip)
| |
− |
| |
− | === Cсылки по темам занятий ===
| |
− | * [http://freesource.info/wiki/Stat'ja_Klassicheskijj_Unix_Way Особенности Unix-подхода]
| |
− | * [http://programmingexamples.wikidot.com/bash-scripting Синтаксис Bash]
| |
− | * [https://misc.flogisoft.com/bash/tip_colors_and_formatting Использование цвета в терминале]
| |
− | * [http://nuclear.mutantstargoat.com/articles/make/ Создание Makefile]
| |
− | * [https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html Примеры Makefile]
| |
− | * [https://www.networkworld.com/article/2974753/linux/doing-math-with-awk.html Применение awk]
| |
− | * Применение grep: [https://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples 1], [https://www.thegeekstuff.com/2011/10/grep-or-and-not-operators/ 2]
| |
− | * [http://proiot.ru/blog/posts/2017/11/11/neinteraktivnyi-tekstovyi-redaktor-sed/ Применение sed]
| |
− | * [https://www.tecmint.com/difference-between-apt-and-aptitude/ Отличия aptitude и apt]
| |
− | * [https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_OSI Сетевая модель OSI]
| |