📁 Работа с директориями в Linux

Platform Category Level Tested on


🧭 Введение

Каталоги (директории) — основа файловой структуры Linux. Понимание того, как перемещаться, создавать, удалять и управлять директориями — ключ к эффективной работе в консоли.


📍 1. Перемещение между директориями — cd

cd /etc

Опции и примеры:

Команда Действие
cd / перейти в корневой каталог
cd ~ перейти в домашний каталог текущего пользователя
cd .. подняться на уровень выше
cd - вернуться в предыдущую директорию
cd /var/log перейти в указанную директорию

📘 Пример:

cd /etc/nginx
cd ..
cd /usr/local/bin

[!TIP] Команда cd - часто недооценивается — она экономит время при переключении между двумя каталогами.


🧭 2. Текущая директория — pwd

pwd

Показывает текущий путь (print working directory).

📘 Пример:

cd /etc/systemd
pwd
# /etc/systemd

[!NOTE] Полезно при сложной навигации или в скриптах, где нужно знать текущий путь.


🧩 3. Получение имени файла или каталога — basename и dirname

🔹 basename — имя файла без пути

basename /etc/nginx/nginx.conf
# nginx.conf

🔹 dirname — путь к каталогу без имени файла

dirname /etc/nginx/nginx.conf
# /etc/nginx

[!TIP] Часто применяются в bash-скриптах для обработки путей.

📘 Пример в скрипте:

FILE="/etc/ssh/sshd_config"
echo "Файл: $(basename $FILE)"
echo "Путь: $(dirname $FILE)"

📂 4. Создание каталогов — mkdir

mkdir new_folder

Опции:

📘 Примеры:

mkdir projects
mkdir -p /data/backups/2025/january
mkdir -pv /opt/logs/nginx

[!TIP] Ключ -p незаменим при создании многоуровневых структур каталогов.


🧹 5. Удаление каталогов — rmdir и rm -r

🔹 Удаление пустой директории:

rmdir empty_folder

[!NOTE] rmdir удаляет только пустые каталоги.

🔹 Удаление каталога с содержимым:

rm -r old_project/

Опции:

📘 Пример:

rm -rf /tmp/test_dir/

[!WARNING] ⚠️ Будь предельно осторожен с rm -rf — можно легко удалить важные файлы. Проверяй путь перед выполнением:

echo $PWD

🗃️ 6. Просмотр структуры каталогов — tree

tree /etc/nginx

Показывает древовидную структуру каталогов.

📘 Пример:

sudo apt install tree
tree -L 2 /etc

Полезные опции:

[!TIP] tree -dL 3 /var — покажет только каталоги до 3 уровней.


🧾 7. Просмотр содержимого каталога — ls

ls -l
ls -lah /var/log

См. также статью “Основные операции с файлами” для подробностей.


🧰 8. Изменение владельца и прав доступа к директории

sudo chown user:group /opt/projects
sudo chmod 755 /opt/projects

📘 Пример:

sudo chown -R www-data:www-data /var/www/
sudo chmod -R 750 /var/www/

[!IMPORTANT] -R — рекурсивное применение ко всем подкаталогам.


🔍 9. Поиск директорий — find

find /etc -type d -name "nginx"

Ключи:

📘 Пример:

find /var -type d -mtime -1
# все каталоги, изменённые за последние сутки

🔗 10. Символические ссылки на директории — ln -s

ln -s /var/www /home/user/web

Теперь /home/user/web будет ссылкой на /var/www.

📘 Пример:

ls -l ~/web
# web -> /var/www

[!TIP] Удобно для быстрого доступа к часто используемым каталогам.


🧠 11. Полезные трюки

🔹 Создать несколько каталогов за один раз

mkdir {docs,images,scripts,backup}

🔹 Создать дерево директорий

mkdir -p project/{src,bin,logs,tmp}

🔹 Удалить все пустые каталоги в текущем пути

find . -type d -empty -delete

🔹 Подсчитать количество каталогов

find . -type d | wc -l

🔹 Перейти в директорию, где находится исполняемый файл

cd $(dirname $(which nginx))

🚀 Заключение

Работа с директориями — основа эффективного администрирования Linux. Освоив cd, mkdir, rm, find и ln, можно уверенно управлять любыми структурами каталогов.


[!TIP] Для ускорения работы добавь в ~/.bashrc полезные алиасы:

alias ..='cd ..'
alias ...='cd ../..'
alias md='mkdir -pv'
alias rd='rmdir -v'
alias ll='ls -alh'

После сохранения применить:

source ~/.bashrc