How can we help?
Удаляет из текстового файла пустые строки и заменяет маленькие символы на большие, из файла 123 и делает 123out:
#!/bin/bash sed '/^$/d' 123 | tr [:lower:] [:upper:] > 123out
Скрипт создаст директории для нескольких годов (2010–2017), в них — поддиректории для месяцев (от 01 до 12), и в каждый из них запишет несколько файлов с произвольными записями. Например, 001.txt, содержащий текст «Файл 001», 002.txt с текстом «Файл 002».
#!/bin/bash mkdir resultOfRunScript; cd resultOfRunScript; for filePath in ./{2010..2020}/{01..12}/{001..005}; do mkdir -p "$(dirname $filePath)" && echo "Файл $(echo $filePath | cut -d '/' -f 4)" > "$filePath.txt" done # второй вариант #!/bin/bash for i in {2013..2019} do for j in {01..12} do for d in {01..31} do for h in {01..24} do echo $i$j$d$h.txt > $i$j$d$h.txt done mv $i$j$d* $i/$j/$d done done done
Сколько скрытых элементов в каталоге, начинающихся с «.»?
➜ ~ ls -lahd .* | wc -l // включает и каталоги 18 ➜ ~ ll | sed '1,+2D' | awk '{print $9}' | grep '^\.' | wc -l 18 ➜ ~ ls -lad .* | grep ^- | wc -l // только файлы 13 ~ ll | sed '1,+2D' | grep ^- | awk '{print$9}'| grep '^\.'| wc -l 13 ➜ ~ ls -AF | grep '^\.' | grep -v '/$' | wc -l 13 ➜ ~ find . -maxdepth 1 -type f -iname ".*" -ls | wc -l 13
Вывести с помощью cat содержимое всех файлов в директории /etc. Направить ошибки в отдельный файл в вашей домашней директории. Сколько файлов, которые не удалось посмотреть, оказалось в списке?
➜ ~ cat /etc/* > output.txt 2> error.txt ➜ ~ grep Permissiion deny error.txt | wc -l 6 // 6 файлов не хватило прав ➜ ~ grep directory error.txt | wc -l 97 // 97 директорий в папке /etc
Отобразить в /dev список устройств, которые в настоящее время используются вашим UID.
lsof -u zamiloff -a +D /dev | less
Использовать команду cut на вывод длинного списка каталога, чтобы отобразить только права доступа к файлам. Затем отправить в конвейере этот вывод на sort и uniq, чтобы отфильтровать все повторяющиеся строки. Потом с помощью wc подсчитать различные типы разрешений в этом каталоге. Самостоятельно решить задачу, как сделать так, чтобы в подсчет не добавлялись строка «Итого» и файлы. и ..
➜ ~ ll | sed '1,+2D' | awk '{print $1}' | sort | uniq | wc -l 6 ➜ ~ ls -lA | grep -v 'total' | cut -d " " -f '1' | sort | uniq | wc -l 6
Создать файл crontab, который ежедневно регистрирует занятое каждым пользователем дисковое пространство в его домашней директории.
➜ ~ crontab -e 0 5 * * * du -hs /home/zamiloff >> /home/zamiloff/usage.log
Создать скрипт ownersort.sh, который в заданной папке копирует файлы в директории, названные по имени владельца каждого файла.
#!/bin/bash # Сначала считываем всех владельцев файлов в директории, # убираем повторения и делаем папки по одной для каждого. dir=$(ls -l | tr -s ' ' '\t' | cut -f '3' | sort -u) for i in $dir; do mkdir -p $i done # Теперь считываем владельцев и названия. # Проходимся по ним циклом (нечётное - владелец, чётное - название) # Если название - проверяем, что это файл, а не папка. # Если файл - отправляем в директорию с именем хозяина. dirfile=$(ls -l | tr -s ' ' '\t' | cut -f '3 9') count=0 for i in $dirfile; do count=$((count+1)) if (($count%2)) then dir=$i echo $dir = $i zero else if [ -f ./$i ] then cp ./$i ./$dir/$i fi fi done