Kodokon kodokon.com

Относительные пути, абсолютные пути и подстановочные символы

Указывай на любой файл абсолютным или относительным путём и работай сразу с несколькими файлами.

8 мин · 3 вопросов

Открыть этот урок в Kodokon

Есть два способа сказать, где находится файл, совсем как с адресом. Абсолютный путь - это полный почтовый адрес: он отсчитывается от корня и работает откуда угодно. В macOS и Linux он всегда начинается с косой черты /, например /home/yoann/my-project/index.html. В Windows он начинается с буквы диска, например C:\Users\yoann\my-project.

Относительный путь, наоборот, больше похож на «вторая дверь слева»: он отсчитывается от папки, в которой ты сейчас находишься. Всё что угодно можно выразить тремя символами. Точка . обозначает текущую папку. Две точки .. обозначают родительскую папку. Тильда ~ обозначает твою домашнюю папку. Их соединяют косыми чертами и получают маршрут.

BASH
cd /home/yoann/my-project
cd ~/my-project
cd ../other-project
cat ./src/index.html
cp ../photo.jpg .
Одна и та же папка, достигнутая абсолютно и относительно, и копирование в текущую папку.

Когда нужно поработать с десятью файлами, ты же не будешь набирать десять команд. Оболочка понимает подстановочные символы, их ещё называют шаблонами: это особые знаки, которые заменяют один или несколько неизвестных символов. Звёздочка * заменяет любую последовательность символов, в том числе пустую. Вопросительный знак ? заменяет ровно один символ. Квадратные скобки [ ] принимают любой из перечисленных внутри них символов.

BASH
ls *.html
ls src/*.css
ls photo-?.jpg
ls report-202[45].pdf
cp *.txt archive/
Все файлы .html, файлы .css в подпапке, от photo-1 до photo-9, отчёты за 2024 и 2025 годы.

Последняя деталь, которая избавляет от кучи неприятностей: в macOS и Linux имена файлов чувствительны к регистру. Photo.jpg и photo.jpg - это два разных файла, и ls photo* первый из них не найдёт. Windows такой разницы не делает. Поэтому проект, который прекрасно работает на твоей машине с Windows, может сломаться на Linux-сервере, где он размещён, и всё из-за одной заглавной буквы.

Проверка знаний

Убедись, что запомнил ключевые моменты этого урока.

  1. С чего в macOS или Linux всегда начинается абсолютный путь?
    • С точки .
    • С косой черты /
    • С тильды ~
    • С имени текущей папки
  2. Чему соответствует шаблон *.html?
    • Всем файлам, имя которых заканчивается на .html
    • Только файлу с именем ровно *.html
    • Всем файлам в папке, независимо от их типа
  3. Ты хочешь безопасно удалить все файлы .tmp. Какую предосторожность принять?
    • Выполнить rm *.tmp, а потом проверить через ls
    • Сначала выполнить ls *.tmp, чтобы увидеть, что будет удалено
    • Никакую, оболочка всегда спрашивает подтверждение