3. Работа с файлами
Основные операции с файлами
Заголовок раздела «Основные операции с файлами»Файлы — основа всего в Linux. Умение их копировать, перемещать, просматривать и искать — базовый навык любого разработчика или администратора.
cp — копирование файлов
Заголовок раздела «cp — копирование файлов»cp file.txt backup.txt # скопировать файлcp file.txt /tmp/ # скопировать в другую директориюcp -r mydir/ mydir_backup/ # скопировать директорию рекурсивноcp -i file.txt dest.txt # спросить перед перезаписьюcp -v file.txt dest.txt # verbose — показывать что делаетсяcp -p file.txt dest.txt # сохранить права и времяcp *.txt /backup/ # скопировать все .txt файлыФлаг -r (recursive) обязателен при копировании директорий.
mv — перемещение и переименование
Заголовок раздела «mv — перемещение и переименование»mv old.txt new.txt # переименовать файлmv file.txt /tmp/ # переместить файлmv dir1/ dir2/ # переместить/переименовать директориюmv -i file.txt dest.txt # спросить перед перезаписьюmv -v *.log /var/logs/ # verbose перемещениеmv работает для переименования (если источник и назначение в одной файловой системе, это моментально).
rm — удаление файлов
Заголовок раздела «rm — удаление файлов»rm file.txt # удалить файлrm file1.txt file2.txt # удалить несколько файловrm -i file.txt # спросить перед удалениемrm -f file.txt # принудительно (без подтверждения)rm -r mydir/ # удалить директорию рекурсивноrm -rf mydir/ # удалить принудительно рекурсивноrm *.tmp # удалить все .tmp файлы⚠️ ОСТОРОЖНО: rm -rf необратимо! Нет корзины, нет undo. Перед удалением важных файлов — бэкап!
Никогда не выполняй: rm -rf / или rm -rf /* — это уничтожит всю систему.
cat — просмотр содержимого файла
Заголовок раздела «cat — просмотр содержимого файла»cat file.txt # вывести содержимое файлаcat file1.txt file2.txt # вывести несколько файлов подрядcat -n file.txt # с номерами строкcat -A file.txt # показать непечатаемые символыcat > newfile.txt # создать файл (Ctrl+D для завершения)cat >> file.txt # добавить в конец файлаless — постраничный просмотр
Заголовок раздела «less — постраничный просмотр»less — умный просмотрщик больших файлов. Не загружает весь файл в память.
less bigfile.log # открыть файлless +F logfile.log # следить за файлом (как tail -f)Навигация в less:
j/kили стрелки — строка вниз/вверхCtrl+F/Ctrl+B— страница вперёд/назадG— в конец файла,g— в начало/текст— поиск вперёд,n— следующее совпадениеq— выход
head и tail — начало и конец файла
Заголовок раздела «head и tail — начало и конец файла»head file.txt # первые 10 строкhead -n 20 file.txt # первые 20 строкhead -c 100 file.txt # первые 100 байт
tail file.txt # последние 10 строкtail -n 50 file.txt # последние 50 строкtail -f /var/log/syslog # следить за файлом в реальном времениtail -f --pid=1234 app.log # следить пока процесс 1234 живtail -f незаменим для просмотра логов в реальном времени!
find — поиск файлов
Заголовок раздела «find — поиск файлов»find — мощнейший инструмент поиска файлов по любым критериям.
# Поиск по имениfind /home -name "*.txt" # все .txt файлы в /homefind . -name "config.js" # найти config.js в текущей директорииfind / -iname "readme*" # без учёта регистра
# Поиск по типуfind . -type f # только файлыfind . -type d # только директорииfind . -type l # только символические ссылки
# Поиск по размеруfind . -size +100M # больше 100 мегабайтfind . -size -1k # меньше 1 килобайтаfind . -size +1M -size -500M # от 1 до 500 МБ
# Поиск по времени измененияfind . -mtime -7 # изменённые за последние 7 днейfind . -mtime +30 # не изменявшиеся >30 днейfind . -newer reference.txt # новее чем reference.txt
# Поиск по правамfind . -perm 644 # файлы с правами 644find . -perm /u+x # исполняемые файлы
# Выполнение команды над найденными файламиfind . -name "*.log" -delete # удалить все .log файлыfind . -name "*.py" -exec chmod +x {} \; # сделать исполняемымиfind . -type f -exec ls -lh {} \; # показать детали каждого файлаПрактика
Заголовок раздела «Практика»# Создай структуру для экспериментовmkdir -p ~/test/{dir1,dir2,dir3}touch ~/test/file{1..5}.txtecho "Hello World" > ~/test/hello.txtecho "Line 1\nLine 2\nLine 3" > ~/test/multiline.txt
# Посмотри что создалиls -la ~/test/
# Скопируй файлыcp ~/test/hello.txt ~/test/hello_backup.txtcp -r ~/test/dir1/ ~/test/dir1_backup/
# Переименуй файлmv ~/test/file1.txt ~/test/renamed.txt
# Посмотри содержимоеcat ~/test/hello.txthead -2 ~/test/multiline.txt
# Найди все .txt файлыfind ~/test -name "*.txt"
# Очисти за собойrm -rf ~/test/Теперь ты умеешь работать с файлами на уровне профи. Следующий урок — права доступа!