Added tasks for lesson 1.

pull/1/head
Vladimir Protsenko 2 years ago
parent e60dc06b90
commit 63e3d440f3

@ -2,33 +2,33 @@
# 1 # 1
Вы в директории /home/stud/data. Какая из команд переместит вас в домашнюю директорию? Вы в директории /home/stud/data. Какая из команд переместит вас в домашнюю директорию?
```
3 cd /home/stud 3 cd /home/stud
5 cd ~ 5 cd ~
8 cd 8 cd
9 cd .. 9 cd ..
```
# 2 # 2
Создайте файл dummy в /tmp. Попробуйте удалить его указав флаг -i для команды rm. В чём отличие удаления файла с этим флагом и без него? Создайте файл dummy в /tmp. Попробуйте удалить его указав флаг -i для команды rm. В чём отличие удаления файла с этим флагом и без него?
```
mkdir /tmp/dummy mkdir /tmp/dummy
rm -r -i /tmp/dummy rm -r -i /tmp/dummy
rm: remove directory '/tmp/dummy'? y rm: remove directory '/tmp/dummy'? y
rm -r /tmp/dummy rm -r /tmp/dummy
```
Отличие в запросе подтверждения действия. Отличие в запросе подтверждения действия.
# 3 # 3
Создайте папку backup в домашней директории. Одновременно скопируйте файл .bashrc в /tmp/ и в backup с помощью cp. Создайте папку backup в домашней директории. Одновременно скопируйте файл .bashrc в /tmp/ и в backup с помощью cp.
```
$ mkdir ~/backup $ mkdir ~/backup
$ cp .bashrc ~/backup; cp .bashrc /tmp/ $ cp .bashrc ~/backup; cp .bashrc /tmp/
```
# 4 # 4
Повторите структуру директории: Повторите структуру директории:
```
mkdir project mkdir project
cd project cd project
mkdir .git mkdir .git
@ -46,40 +46,45 @@ touch 2022-11-23-exp3-calibration.dat
cd ../ cd ../
mkdir backup mkdir backup
mkdir shared mkdir shared
```
# 5 # 5
Скопируйте файлы экспериментов в backup, но распределите по папкам разные типы файлов. .data в backup/dataset, dat-calibration в backup/calibration, логи в backup/logs. В shared поместите все файлы, созданные 23 числа в папку 23day. Напишите команды в двух вариантах: с относительными путями и с абсолютными. Скопируйте файлы экспериментов в backup, но распределите по папкам разные типы файлов. .data в backup/dataset, dat-calibration в backup/calibration, логи в backup/logs. В shared поместите все файлы, созданные 23 числа в папку 23day. Напишите команды в двух вариантах: с относительными путями и с абсолютными.
```
cd backup cd backup
mkdir dataset calibration logs mkdir dataset calibration logs
cp ./raw/*-exp?.dat backup/dataset/ cp ./raw/*-exp?.dat backup/dataset/
cp ./raw/*-exp?-calibration.dat backup/calibration cp ./raw/*-exp?-calibration.dat backup/calibration
cp ./raw/*.log ./backup/logs/ cp ./raw/*.log ./backup/logs/
```
```
export PD=/home/stud/project export PD=/home/stud/project
mkdir $PD/backup/dataset $PD/backup/calibration $PD/backup/logs mkdir $PD/backup/dataset $PD/backup/calibration $PD/backup/logs
cp $PD/raw/*-exp?.dat backup/dataset/ cp $PD/raw/*-exp?.dat backup/dataset/
cp $PD/raw/*-exp?-calibration.dat backup/calibration cp $PD/raw/*-exp?-calibration.dat backup/calibration
cp $PD/raw/*.log ./backup/logs/ cp $PD/raw/*.log ./backup/logs/
```
# 6 # 6
Посчитайте количество строк в файле /var/log/messages. Посчитайте количество строк в файле /var/log/messages.
```
sudo wc -l /var/log/messages sudo wc -l /var/log/messages
sudo cat /var/log/messages | wc -l sudo cat /var/log/messages | wc -l
```
# 7 # 7
Инициализируйте файл head_tail_messages с помощью команды head из строк в /var/log/messages, затем добавьте в head_tail_messages последние 23 строки из /var/log/messages. Инициализируйте файл head_tail_messages с помощью команды head из строк в /var/log/messages, затем добавьте в head_tail_messages последние 23 строки из /var/log/messages.
```
sudo head /var/log/messages > head_tail_messages sudo head /var/log/messages > head_tail_messages
sudo tail -n 23 /var/log/messages >> head_tail_messages sudo tail -n 23 /var/log/messages >> head_tail_messages
```
# 8 # 8
Создайте псевдоним "dc", который разрешается в команду "cd" для случаев опечатки. Создайте псевдоним "dc", который разрешается в команду "cd" для случаев опечатки.
```
alias dc=”cd” alias dc=”cd”
```
# 9 # 9
Прочитайте мануал `man ls` и напишите `ls` команду, которая выводит список файлов в следующем виде: Прочитайте мануал `man ls` и напишите `ls` команду, которая выводит список файлов в следующем виде:
@ -87,19 +92,19 @@ alias dc=”cd”
* размер файла указан с метрическими приставками (e.g. 454M вместо 454279954), * размер файла указан с метрическими приставками (e.g. 454M вместо 454279954),
* файлы выводятся в историческом порядке, * файлы выводятся в историческом порядке,
* вывод в цвете. * вывод в цвете.
```
ls -caht или ls -cahtl ls -caht или ls -cahtl
```
# 10 # 10
Запишите в переменную среды PATH значение "". Как это повлияло на выполнение команд? Перезайдите по ssh и попробуйте вызывать любую команду заново. Сохранились ли изменения? Запишите в переменную среды PATH значение "". Как это повлияло на выполнение команд? Перезайдите по ssh и попробуйте вызывать любую команду заново. Сохранились ли изменения?
```
export PATH=”” export PATH=””
следствие: ни один исполняемый файл системой теперь не находится следствие: ни один исполняемый файл системой теперь не находится
после переподключения система вернулась в прежнее состояние после переподключения система вернулась в прежнее состояние
```
# 11 # 11
Модифицируйте команду так, чтобы у директорий в начале названия присутствовал глобальный индекс idx. Модифицируйте команду так, чтобы у директорий в начале названия присутствовал глобальный индекс idx.
```
idx=0; idx=0;
for species in cubane ethane methane; for species in cubane ethane methane;
do do
@ -109,17 +114,21 @@ do
((idx+=1)); ((idx+=1));
done done
done done
```
```
idx=-1; for species in cubane ethane methane; do for temperature in 25 30 37 40; do mkdir $idx-$species-$temperature; ((idx+=1)); done; done idx=-1; for species in cubane ethane methane; do for temperature in 25 30 37 40; do mkdir $idx-$species-$temperature; ((idx+=1)); done; done
```
# 12 # 12
(*) Напишите команду или сценарий для рекурсивного поиска самого последнего измененного файла в каталоге. В общем, можете ли вы перечислить все файлы по давности? (*) Напишите команду или сценарий для рекурсивного поиска самого последнего измененного файла в каталоге. В общем, можете ли вы перечислить все файлы по давности?
Плохое решение Плохое решение
```
ls -Rlht ls -Rlht
```
Лучше Лучше
```
find ./ -type f -printf "%T+ %H%P\n" 2>/dev/null | sort -r find ./ -type f -printf "%T+ %H%P\n" 2>/dev/null | sort -r
```
где где
%T+ - время последнего изменения в формате 2004-04-28+22:22:05.0, %T+ - время последнего изменения в формате 2004-04-28+22:22:05.0,
%H - путь к директории, в которой файл найден, %H - путь к директории, в которой файл найден,
@ -127,20 +136,21 @@ find ./ -type f -printf "%T+ %H%P\n" 2>/dev/null | sort -r
# 13 # 13
Напишите цикл, который проходит по списку файлов в текущей директории и выводит полный путь к директории и имя файла. Напишите цикл, который проходит по списку файлов в текущей директории и выводит полный путь к директории и имя файла.
```
for f in $(ls); do echo $(pwd)/$f; done for f in $(ls); do echo $(pwd)/$f; done
```
# 14 # 14
Выведите результат сложения 10 и 4 с помощью bash синтаксиса для арифметических операций. Выведите результат сложения 10 и 4 с помощью bash синтаксиса для арифметических операций.
```
echo $((10 + 4)) echo $((10 + 4))
```
# 15 # 15
Выведите результат умножения двух переменных с помощью bash синтаксиса для арифметических операций. Выведите результат умножения двух переменных с помощью bash синтаксиса для арифметических операций.
```
a=1; b=2; echo $((a*b)) a=1; b=2; echo $((a*b))
```
# 16 # 16
Напишите команду, которая рекурсивно находит все HTML-файлы в папке и запаковывает их в tar.gz архив. Ваша команда должна работать, даже если в файлах есть пробелы. Напишите команду, которая рекурсивно находит все HTML-файлы в папке и запаковывает их в tar.gz архив. Ваша команда должна работать, даже если в файлах есть пробелы.
```
find . -type f -name "*.html" -print0 | xargs -0 tar cfz htmls.tar.gz find . -type f -name "*.html" -print0 | xargs -0 tar cfz htmls.tar.gz
```

@ -2,7 +2,7 @@
# 1 # 1
Вы в директории /home/stud/data. Какая из команд переместит вас в домашнюю директорию? Вы в директории /home/stud/data. Какая из команд переместит вас в домашнюю директорию?
```
1 cd . 1 cd .
2 cd / 2 cd /
3 cd /home/stud 3 cd /home/stud
@ -12,7 +12,7 @@
7 cd ~/data/.. 7 cd ~/data/..
8 cd 8 cd
9 cd .. 9 cd ..
```
# 2 # 2
Создайте файл dummy в /tmp. Попробуйте удалить его указав флаг -i для команды rm. В чём отличие удаления файла с этим флагом и без него? Создайте файл dummy в /tmp. Попробуйте удалить его указав флаг -i для команды rm. В чём отличие удаления файла с этим флагом и без него?
@ -21,7 +21,7 @@
# 4 # 4
Повторите структуру директории: Повторите структуру директории:
```
project/ project/
├── .git ├── .git
├── data ├── data
@ -36,7 +36,7 @@ project/
└── 2022-11-23-exp3-calibration.dat └── 2022-11-23-exp3-calibration.dat
├── backup ├── backup
└── shared └── shared
```
# 5 # 5
Скопируйте файлы экспериментов в backup, но распределите по папкам разные типы файлов. .data в backup/dataset, dat-calibration в backup/calibration, логи в backup/logs. В shared поместите все файлы, созданные 23 числа в папку 23day. Напишите команды в двух вариантах: с относительными путями и с абсолютными. Скопируйте файлы экспериментов в backup, но распределите по папкам разные типы файлов. .data в backup/dataset, dat-calibration в backup/calibration, логи в backup/logs. В shared поместите все файлы, созданные 23 числа в папку 23day. Напишите команды в двух вариантах: с относительными путями и с абсолютными.
@ -72,7 +72,7 @@ drwx------+ 47 user group 1.5K Jan 12 18:08 ..
# 11 # 11
Выполните в терминале следующую команду в директории /tmp: Выполните в терминале следующую команду в директории /tmp:
```
for species in cubane ethane methane; for species in cubane ethane methane;
do do
for temperature in 25 30 37 40; for temperature in 25 30 37 40;
@ -80,7 +80,7 @@ do
mkdir $species-$temperature; mkdir $species-$temperature;
done done
done done
```
Что в результате вы получили в консоли? Модифицируйте команду так, чтобы у директорий в начале названия присутствовал глобальный индекс idx. Что в результате вы получили в консоли? Модифицируйте команду так, чтобы у директорий в начале названия присутствовал глобальный индекс idx.
# 12 # 12

Loading…
Cancel
Save