#2 Перемещение между папками в Linux: Команды cd, pwd, домашняя директория пользователя, абсолютный и относительный пути

Использование «cd». Ходим между папками/директориями

Давайте начнем использовать bash для навигации по файловой системе. Для начала напечатайте следующую команду:

cd /

Этой командой мы указали bash-у что хотим переместиться в корневую директорию — /. Все директории в системе организованы в древовидную структуру и / это её начало (или корень). Команда cd служит для изменения текущей рабочей директории.

Пути в Linux

Чтобы узнать в каком месте файловой системы в данный момент вы находитесь (текущую рабочую директорию) наберите:

pwd

В приведенном выше примере / — аргумент команды cd — называется путь. Это место файловой системы, куда мы хотим переместиться. В данном случае / — абсолютный путь, это значит что путь указан относительно корневой директории.

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

Вот несколько примеров абсолютных путей

/dev
/usr
/usr/bin
/usr/local/bin

Как вы уже могли заметить, все эти пути объединяет то, что они начинаются с /. Указывая путь /usr/local/bin в качестве аргумента команде cd мы говорим ей перейти в корневую директорию /, затем в директорию usr, потом в local и bin. Абсолютные пути всегда начинаются с /

Относительные пути

Второй вид путей называется относительными. Bash, команда cd и другие команды отсчитывают эти пути относительно текущей директории. Относительные пути никогда не начинаются с /. Например, если мы находимся в /usr

 cd /usr

Затем мы можем перейти в /usr/local/bin используя относительный путь и затем второй командой запросим текущий путь

cd local/bin
pwd

получим:

/usr/local/bin

Использование «..». Переход к родительской директории

Относительные пути могут содержать одну или несколько директорий «..». «..» указывает на родительскую директорию по отношению к нашей рабочей директории. Пример:

pwd
/usr/local/bin
cd ..
pwd
/usr/local

Как вы видите, команда cd .. ‘поднимает нас на уровень выше’.

Можно добавить .. к относительному пути. Это позволит переместиться в директорию, которая находится на одном уровне с той в которой мы находимся. Пример:

pwd
/usr/local
 cd ../share
pwd
/usr/share

Примеры с использованием относительных путей

Относительные пути могут быть довольно сложными. Вот несколько примеров. Результат выполнения команд не показан, попробуйте определить в какой директории вы окажетесь используя bash.

cd /bin
cd ../usr/share/zoneinfo

cd /usr/X11R6/bin
cd ../lib/X11

cd /usr/bin
cd ../bin/../bin

Рабочая директория «.» -- текущая директория, обозначается точкой

Перед тем как закончить разговор о команде cd, следует упомянуть еще несколько вещей. Во-первых, существует ещё одна специальная директория «.», которая указывает на текущую директорию. Эта директория используется для запуска исполняемых файлов, находящихся в текущей директории.

./myprog

В последнем примере myprog это исполняемый файл находящийся в текущей директории, который будет запущен на исполнение (если он есть).

cd и домашняя директория пользователя

Для того чтобы перейти в домашнюю директорию, нужно набрать:
cd
-- т.е. просто команда cd без аргументов. Без аргумента cd переместит вас в домашнюю директорию. Для суперпользователя домашней обычно является директория /root, а для обычных пользователей — /home/имяпользователя/, например:

/home/qwe/

. Но что если мы хотим указать конкретный файл, находящийся в домашней директории. Например, как аргумент к программе ‘myprog’? Можно написать:

./myprog /home/user/myfile.txt

Однако, использовать абсолютные пути к файлам не всегда удобно. Эту же операцию можно сделать при помощи ~–тильды:

./myprog ~/myfile.txt

~ — специальное имя, указывающее в bash на домашнюю директорию пользователя.

Домашние директории других пользователей

Но что если нам нужно указать файл в домашней директории другого пользователя? Для этого после тильды нужно указать имя этого пользователя. Например, чтобы указать на файл fredsfile.txt находящийся в домашней директории пользователя fred:

./myprog ~fred/fredsfile.txt