Новые команды этого урока
Все per-command файлы с полным справочником флагов уже созданы — ниже ссылки и краткое описание для контекста урока.
find
Поиск файлов и каталогов в файловой системе по критериям: имя, тип, размер, дата изменения. Поиск рекурсивный, работает с реальной ФС.
# Поиск по имени
find /path/to/search -name "file.txt"
find /path/to/search -name "*.jpg"
# По типу: f=файл, d=директория
find /path/to/search -type f
find /path/to/search -type d
# По размеру (> 1МБ)
find /path/to/search -name "*.txt" -size +1M
# По дате изменения (< 5 дней)
find /path/to/search -mtime -5
find /home/ -mtime -5 -name "*.txt" -size +15k 2>/dev/null
# Удалить найденные
find -type f -name "*.old" -delete
find /path/to/search -type f -mtime +7 -delete
# Выполнить действие
find /path/to/search -type f -exec chmod 644 {} \;
find /root/ -type f -name "*.txt" -exec cp {} /home \;
locate
Поиск файлов по предварительно построенной базе данных. Значительно быстрее, чем find, но результаты могут быть неактуальными. Перед поиском рекомендуется обновить базу: sudo updatedb.
# Обновить базу данных (рекомендуется перед использованием)
sudo updatedb
# Поиск по имени
locate myfile.txt
locate *.jpg
# Поиск в определённом каталоге (регулярное выражение)
locate -r '/path/to/directory/*\.txt$'
Bash-конструкции: циклы
Циклы for и while — это синтаксические конструкции bash, а не отдельные команды. Они не имеют отдельных per-command страниц.
for — цикл по диапазону / списку
Выполняет блок кода для каждого элемента в заданном списке или диапазоне.
# Цикл по диапазону 1..5
for i in {1..5}
do
echo "Number: $i"
done
# Однострочный вариант
for i in {1..5}; do echo "Number: $i"; done
# Цикл по файлам в директории
for FILE in /some/dir/*
do
cat $FILE
done
while — цикл по условию
Выполняет блок кода, пока заданное условие верно.
# Цикл со счётчиком
counter=1
while [ $counter -le 5 ]
do
echo "Counter: $counter"
((counter++))
done
# Бесконечный цикл (Ctrl+C для остановки)
while true; do echo "Alive" && sleep 1; done
Ранее изученные команды (используются на уроке)
date— вывод текущей даты и времени;date '+%d-%m-%y'для форматированияps— список процессов;ps -ef— все процессы в полном форматеgrep— поиск по тексту;grep -v grep— исключить строки с "grep"wc— подсчёт строк/слов/символов;wc -l— только количество строкawk— обработка текста по полям;awk '{print $1}'— первый столбецchmod— изменение прав доступа; используется в примерах с -execcat— вывод содержимого файла; используется в практическом скриптеmkdir— создание директории;mkdir -p $DATEв скриптеcp— копирование файлов; используется в практическом скриптеsleep— пауза на N секунд; используется в бесконечном цикле и скриптеecho— вывод текста; используется в ДЗ для приветствияpwd— текущая директория; используется в ДЗ