Linux викторина №21-25: что делает команда/скрипт на изображении?
Полученные результаты
#1. Что делает команда на изображении выше?
Команда:
ls -1 | paste -sd ','
В этой команде ls -1
(–oneline) выводит каждый файл из текущей директоии в отдельной строке, затем paste -sd
объединяет строки в одну с указанным разделителем, в данном случае символ запятой.
#2. Что делает команда на изображении выше?
Команда:
tar -czf - /var/log/ | openssl enc -aes-256-cbc -pbkdf2 -e -out logs.tar.gz.enc
Описание: команда создает архив из директории /var/log
(tar -czf -
) и отправляет его в стандартный поток и передает его команде openssl (openssl enc -aes-256-cbc -e
), которая шифрует его с помощью AES-256 и сохраняет результат в logs.tar.gz.enc
. Символ минуса – в команде tar выводит данные в stdout.
P.S. Команда расшифровки файла logs.tar.gz.enc
:
openssl enc -aes-256-cbc -pbkdf2 -d -in logs.tar.gz.enc -out logs.tar.gz
#3. Что делает команда на изображении выше?
Команда:
find /var/log -type f -size 100M -exec rm -i {} \;
Описание: Команда find
находит файлы (-type f
) в /var/log
размером более 100 МБ (-size 100M
) и удаляет их с подтверждением (rm -i
). Параметр -exec
с конструкцией {} \;
( – тут экранирование) выполняет удаление с помощью команды rm для каждого найденного файла отдельно.
#4. Что выведет скрипт на изображении выше?
Скрипт:
#!/bin/bash
mkdir project && cd project
echo -e "#!/bin/bashnecho 'Hello from script'" > run.sh
./run.sh
Описание: скрипт создает каталог project
и при успешном создании переходит в него. Далее командой echo
и перенаправлением >
создается другой скрипт, который вывод одну текстовую строку. Но основной скрипт завершится ошибкой “Permission denied” потому что у нового скрипта будет отсутствовать флаг исполнения (x).
#5. Что выведет скрипт на изображении выше?
Скрипт:
#!/bin/bash
mkdir project && cd project
touch file{1..12}.txt
ls | grep -E "file[12].txt" | xargs rm
ls
Описание: скрипт создает директорию project
и переходит в нее. Команда touch
с использованием фигурных скобок {1..12}
создаёт двенадцать файлов: от file1.txt
до file12.txt
. Далее ls
выводит список файлов в текущей директории. grep -E
с регулярным выражением file[12].txt
выбирает только те имена, которые содержат file1.txt
или file2.txt
. xargs
получает по пайплайну от предыдущей команды список файлов (file1.txt file2.txt
… file12.txt
) и передаёт их как аргументы команде rm
, которая удаляет их. Последний ls
выводит список оставшихся файлов десять файлов: с file3.txt
до file12.txt
.