Цель:

  1. Изучить теоретическую часть лабораторной работы.
  2. В консольном режиме создать в домашнем каталоге подкаталог: /номер_группы/фамилия_студента, где в дальнейшем будут храниться все рабочие файлы студента.
  3. В любом текстовом редакторе (например, vim: vim 1.c) написать программу 1.c, выводящую на экран фразу "HELLO Ubuntu". Компилировать полученную программу компилятором gcc: gcc 1.c –o 1.exe. Запустить полученный файл 1.exe на выполнение: ./1.exe
  4. Написать скрипт, выводящий на консоль и в файл все аргументы командной строки.
  5. Написать скрипт, выводящий в файл (имя файла задаётся пользователем в качестве первого аргумента командной строки) имена всех файлов с заданным расширением (третий аргумент командной строки) из заданного каталога (имя каталога задаётся пользователем в качестве второго аргумента командной строки).
  6. Написать скрипт, компилирующий и запускающий программу (имя исходного файла и exe- файла результата задаётся пользователем в качестве аргументов командной строки). В случае ошибок при компиляции вывести на консоль сообщение об ошибках и не запускать программу на выполнение.
  7. Выполнить индивидуальное задание.

Задача:

  1. Написать скрипт для поиска файлов заданного размера в заданном каталоге (имя каталога задаётся пользователем в качестве третьего аргумента командной строки). Диапазон (min - max) размеров файлов задаётся пользователем в качестве первого и второго аргумента командной строки.
  2. Написать скрипт с использованием цикла for, выводящий на консоль размеры и права доступа для всех файлов в заданном каталоге и всех его подкаталогах (имя каталога задается пользователем в качестве первого аргумента командной строки).
  3. Написать скрипт для поиска заданной пользователем строки во всех файлах заданного каталога и всех его подкаталогах (строка и имя каталога задаются пользователем в качестве первого и второго аргумента командной строки). На консоль выводятся полный путь и имена файлов, в содержимом которых присутствует заданная строка, и их размер. Если к какому-либо каталогу нет доступа, необходимо вывести соответсвующее сообщение и продолжить выполнение.
  4. Написать скрипт поиска одинаковых по их содержимому файлов в двух каталогах, например, Dir1 и Dir2. Пользователь задаёт имена Dir1 и Dir2 в качестве первого и второго аргумента командной строки. В результате работы программы файлы, имеющиеся в Dir1, сравниваются с файлами в Dir2 по их содержимому. На экран выводятся число просмотренных файлов и результаты сравнения.
  5. Написать скрипт, находящий в заданном каталоге и всех его подкаталогах все файлы, владельцем которых является заданный пользователь. Имя владельца и каталог задаются пользователем в качестве первого и второго аргумента командной строки. Скрипт выводит результаты в файл (третий аргумент командной строки) в виде "полный путь, имя файла, его размер". На консоль выводится общее число просмотренных файлов.
  6. Написать скрипт, находящий в заданном каталоге и всех его подкаталогах все файлы заданного размера и принадлежащие определенному пользователю. Диапазон (min - max) размеров файлов задаётся пользователем в качестве первого и второго аргумента командной строки. Имя владельца и каталог задаются пользователем в качестве третьего и четвертого аргумента командной строки. Скрипт выводит результаты поиска в файл (пятый аргумент командной строки) в виде "полный путь, имя файла, его размер". На консоль выводится общее число просмотренных файлов.
  7. Написать скрипт, подсчитывающий суммарный размер файлов в заданном каталоге и всех его подкаталогах (имя каталога задаётся пользователем в качестве первого аргумента командной строки). Скрипт выводит результаты подсчета в файл (второй аргумент командной строки) в виде "каталог (полный путь), суммарный размер файлов, число просмотренных файлов".

Работа с файловой системой при помощи bash-скриптов

Пример скрипта, выводящего содержимое текущего каталога на консоль и в файл: #!/bin/bash dir dir > 1.txt Любой bash-скрипт должен начинаться со строки: #!/bin/bash в этой строке после #! указывается путь к bash-интерпретатору, поэтому если он у вас установлен в другом месте, поменяйте её на ваш путь. Коментарии начинаются с символа # (кроме первой строки). Переменные Следующие переменные используются командным интерпретатором. • $0, $1, $2, $3... - значения аргументов командной строки при запуске скрипта. Где $0 - имя самого файла скрипта, $1 - первый аргумент, $2 - второй аргумент, и т. д. • $@ - все аргументы командной строки, каждый в кавычках. • $# - количество аргументов командной строки. • $? - код возврата последней команды. Пример простого скрипта, выводящего на консоль и в файл содержимое каталога, где имя каталога передаётся скрипту в качестве аргументов при запуске: #!/bin/bash dir $1 dir $1 > 1.txt Запуск скрипта: ./script.sh ~/test_catalog Можно создать собственную переменную и присвоить ей значение: A=121 A="121" let A=121 let "A=А+1" Вывод значения на консоль: echo $A

Пример скрипта с переменными:
#!/bin/bash
# указываем где у нас хранится bash-интерпретатор
parametr1=$1
# присваиваем переменной parametr1 значение первого параметра скрипта
script_name=$0
# присваиваем переменной script_name значение имени скрипта
echo "Вы запустили скрипт с именем $script_name и параметром $parametr1"
# команда echo выводит определенную строку, обращение к переменным осуществляется через $имя_переменной.
echo 'Вы запустили скрипт с именем $script_name и параметром $parametr1'
# здесь мы видим другие кавычки. Разница в том, что в одинарных кавычках не происходит подстановки переменных.
exit 0
# выход с кодом 0 (удачное завершение работы скрипта)