Материал открыт для чтения

Войдите, чтобы сохранять прогресс и результаты.

Войти
Linux: Старт в терминале

Навигация в терминале: pwd, ls, cd и пути

чтение ~8 минУрок 5 из 18

Навигация и первые файловые операции

module linux start Image06

Перед практикой важно не просто запомнить команды, а понимать, какой вопрос каждая команда решает. В терминале ты всё время отвечаешь на три базовых вопроса: где я сейчас, что здесь есть, и что я хочу сделать с файлом или директорией.

Вопрос Команда
Где я сейчас? pwd
Что лежит рядом? ls
Как перейти в другое место? cd
Как создать директорию? mkdir
Как создать или записать файл? touch, printf, echo, >
Как скопировать? cp
Как переместить или переименовать? mv
Как удалить? rm

Linux-навигация строится вокруг текущей директории. От неё зависят относительные пути, поэтому перед файловыми операциями полезно проверять контекст.


pwd: текущая директория

pwd означает print working directory - вывести текущую рабочую директорию.

pwd
# /root

Команда ничего не меняет, только показывает место, в котором ты сейчас находишься. Это особенно важно перед командами cp, mv и rm: ошибка в текущей директории может привести к работе не с теми файлами.

Вывод команды можно сохранить в файл:

pwd > /root/location.txt
cat /root/location.txt

Символ > перенаправляет стандартный вывод команды в файл. Если файл уже существовал, он будет перезаписан.


ls: посмотреть содержимое

ls показывает содержимое директории.

ls
ls /opt/devops/lab1

Часто используемые флаги:

ls -l     # длинный формат: права, владелец, размер, дата
ls -a     # показать скрытые файлы
ls -la    # оба режима сразу
ls -lh    # human readable: размеры вроде 4K, 10M

Флаги можно объединять: ls -la означает то же самое, что ls -l -a.

Пример длинного вывода:

drwxr-xr-x 2 root root 4096 Jan 15 10:23 notes
-rw-r--r-- 1 root root  128 Jan 15 10:23 config.txt
-rw-r--r-- 1 root root   64 Jan 15 10:23 .secret

Если нужно увидеть скрытый файл, имя которого начинается с точки, обычного ls недостаточно. Используй ls -a или ls -la.


cd: переход между директориями

cd означает change directory - сменить текущую директорию.

cd /var/log
pwd
# /var/log

Полезные варианты:

cd /              # перейти в корень файловой системы
cd ~              # перейти домой
cd                # тоже перейти домой
cd ..             # подняться на уровень выше
cd -              # вернуться в предыдущую директорию

Если ты находишься в /opt/devops/lab1/notes, команда cd .. поднимет тебя в /opt/devops/lab1. Она не переносит в корень и не создаёт директорию. .. всегда означает родительскую директорию относительно текущего места.


Абсолютный и относительный путь

Абсолютный путь начинается от корня /:

/var/log/syslog
/opt/devops/lab1/config.txt
/root/location.txt

Он работает одинаково из любой текущей директории.

Относительный путь считается от текущей директории:

logs/app.log
../config/app.conf
./script.sh

Пример:

# Перейти в рабочую директорию лабораторной.
cd /opt/devops/lab1

# Посмотреть объект notes внутри текущей директории.
# Это относительный путь: shell ищет /opt/devops/lab1/notes.
ls notes

# Прочитать config.txt из текущей директории.
# После cd это означает /opt/devops/lab1/config.txt.
cat config.txt

# Подняться на уровень выше в /opt/devops, затем снова зайти в lab1.
# В итоге это тот же файл: /opt/devops/lab1/config.txt.
cat ../lab1/config.txt

Здесь config.txt и ../lab1/config.txt указывают на один и тот же файл, потому что текущая директория уже /opt/devops/lab1. Если бы ты находился в /root, тот же относительный путь config.txt означал бы /root/config.txt. Поэтому в лабораторных полезно после каждого перехода делать pwd.


Чтение и запись простых файлов

cat выводит содержимое файла:

cat /etc/hosts
cat /opt/devops/lab1/config.txt

Если нужно скопировать содержимое одного файла в другой, можно перенаправить вывод:

cat /opt/devops/lab1/config.txt > /root/config_copy.txt

Для записи короткой строки удобно использовать printf:

printf 'Hello DevOps\n' > /root/README.md

\n означает перевод строки. Без него текст будет записан без финального перехода на новую строку.

echo тоже часто используют для простых строк:

echo "Hello DevOps" > /root/README.md

Разница для новичка такая: echo проще, а printf предсказуемее, когда важны спецсимволы и точный формат.

Есть два основных перенаправления вывода:

command > file.txt    # перезаписать файл
command >> file.txt   # дописать в конец файла

Перед > будь внимателен: если файл уже был, его содержимое будет заменено новым выводом.


mkdir и touch: создать директорию или пустой файл

mkdir создаёт директорию:

mkdir /root/myproject

Если нужно создать вложенный путь сразу, используется -p:

mkdir -p /root/backup/configs

Без -p команда упадёт, если /root/backup ещё не существует. С -p она создаст все недостающие промежуточные директории и не будет ругаться, если часть пути уже есть. Поэтому mkdir -p часто встречается в скриптах.

touch создаёт пустой файл или обновляет время изменения существующего файла:

touch /root/myproject/notes.txt

Если нужно создать файл сразу с текстом, используй printf или echo с >:

printf 'Hello DevOps\n' > /root/myproject/README.md

cp: копирование

cp копирует файл из источника в назначение:

cp /opt/devops/lab1/config.txt /root/myproject/

Первый аргумент - что копируем. Второй - куда копируем.

Если второй аргумент является директорией, файл сохранится внутри неё с тем же именем:

cp /opt/devops/lab1/config.txt /root/myproject/
# получится /root/myproject/config.txt

Если вторым аргументом указать полный путь с новым именем, копия получит это имя:

cp /opt/devops/lab1/config.txt /root/myproject/myconfig.txt

Для директорий нужен рекурсивный режим:

cp -r /opt/project /root/project_copy

В этом курсе сначала работай аккуратно с файлами, а cp -r используй только когда действительно нужно копировать целую директорию.


mv: перемещение и переименование

mv перемещает файл или директорию. Эта же команда используется для переименования.

Переименовать файл в той же директории:

mv /root/myproject/config.txt /root/myproject/myconfig.txt

Переместить файл в другую директорию:

mv /root/myproject/myconfig.txt /root/backup/configs/

Главное отличие от cp: после mv старого пути больше нет. Если ты сделал mv old.txt new.txt, файл не продублировался, а сменил имя.


rm: удаление без корзины

rm удаляет файлы:

rm /root/myproject/README.md

В Linux обычно нет корзины на сервере. Команда удаляет сразу. Особенно осторожно работай под root.

Для удаления непустой директории нужен рекурсивный режим:

rm -r /root/myproject

Что делает -r: проходит по дереву директории и удаляет вложенные файлы и папки. Поэтому rm -r требует максимальной внимательности.

Перед удалением полезно выполнить:

pwd
ls -la /root/myproject

Так ты проверяешь, что путь действительно тот, который нужен. Хорошая привычка в production: сначала посмотреть, потом удалять.


Безопасный порядок работы

Когда выполняешь лабораторную или реальную задачу на сервере, держи простой порядок:

  1. Узнай место: pwd.
  2. Посмотри содержимое: ls -la.
  3. Выполни действие: cd, cp, mv, rm, mkdir.
  4. Проверь результат: снова ls, cat или pwd.

Например:

cd /opt/devops/lab1
pwd
ls -la
cat .secret > /root/found_secret.txt
cat /root/found_secret.txt

Такой подход кажется медленным только в начале. На практике он экономит время, потому что ты сразу видишь контекст и быстрее находишь ошибку, если команда сработала не так, как ожидалось.

Материал изучен?

Войдите, чтобы сохранить прогресс и перейти к практической лаборатории.

Войти и продолжить