#005 Команды для навигации и перемещения по каталогам в Linux (cd, ls, pwd, file)

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать систему Linux, ранее мы познакомились с тем, что такое эмулятор терминала и командная оболочка, теперь начнем знакомиться с командами Linux. Кстати, если вы пользователь Windows и хотите начать знакомиться с Linux, то рекомендую первое знакомство осуществлять на виртуальной машине, например, VirtualBox.

Команды для навигации и перемещения по каталогам в Linux (cd, ls, pwd, file)

В этой публикации мы рассмотрим четыре простых команды, которые используются для навигации в системе Linux, то есть для перемещения по каталогам и папкам. Эти команды помогут вам начать изучать свою систему и просматривать из чего она состоит. Но для начала мы немного поговорим про относительный и абсолютный путь в Linux, это нужно, чтобы было понимание, что мы вообще делаем. Первая команда, которую мы рассмотрим — pwd. Команда pwd используется для просмотра текущего рабочего каталога в Linux. Далее мы разберемся с командой cd. Команда cd позволяет нам перемещаться по каталогам системы. Еще мы поговорим о команде ls, которая позволяет просматривать содержимое любого каталога вашей системы. В завершение мы рассмотрим команду file. Команда file в системах Linux используется для того, чтобы определить тип объекта файловой системы, ведь самому Linux вовсе не нужно расширение, чтобы понять какой файл перед ней.


Относительный и абсолютный путь в Linux

Любая иерархия каталогов в операционных системах подобных Unix начинается с корневого каталога или корня, который обозначается таким вот образом: «/».  Обратите внимание: именно слэш (/), а не обратный слэш (\).  Когда мы пытаемся получить доступ к файлу или каталогу при помощи командной оболочки, нам необходимо указывать путь к тому объекту файловой системы, к которому мы ходим обратиться.

Путь к объекту может быть абсолютным, а может быть относительным.  Если путь к файлу или каталогу начинается с корня, то такой путь называется полным или абсолютным, так как таким образом можно «дотянуться» до любого файла из любой точки операционной системы.  Если путь к файлу начинается с той, папки, в которой вы работает, то такой путь называется относительным и работать такая конструкция будет только из той папки, в которой вы находитесь в данный момент. Путь называется относительным, поскольку он составляется относительно того или иного каталога или файла.

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

Древовидная структура любой файловой системы, к которой привыкли пользователи Windows

Древовидная структура любой файловой системы, к которой привыкли пользователи Windows

Нас интересует каталог dir1, который находится на рабочем столе, у этого каталога есть дочерний или вложенный каталог, который называется dir2, а родительским каталогом для dir1 является «Рабочий стол».  Допустим, если мы находимся в каталоге dir1, то для того, чтобы перейти в каталог «Рабочий стол», нам нужно воспользоваться конструкцией «...», это будет относительным путем, поскольку он будет выстроен относительно каталога dir1.

Если же мы хотим из каталога dir1 попасть в каталог dir2, то можем воспользоваться вот таким путем: ./dir1. Здесь символы точка-слеш означает текущий рабочий каталог, конструкцию ./ в данном случае можно не писать, bash вас поймет и без нее.  Хотя как в первом, так и во втором случае, можно воспользоваться абсолютным путем. Для рабочего стола абсолютный путь в моем случае выглядит так:

А для каталога dir2 так:

Если мы находимся в каталоге dir1 и хотим попасть в каталог dir6, то мы можем воспользоваться относительным путем:

Этот путь я выстроил относительно каталога dir1. Из каталога dir6 можно вернуться в каталог dir1, используя относительный путь:

Здесь мы сперва вернемся в каталог dir2, а затем спустимся еще на ступеньку ниже — в каталог dir1. Но из каталога dir1 можно попасть в dir6, используя абсолютный путь:

Также можно использовать абсолютный путь, чтобы из каталога dir6 вернуться в dir1:

С относительными и абсолютными путями в Linux мы разобрались, можем приступить к изучению команд.

pwd – команда для просмотра названия текущего рабочего каталога

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

Во-первых, мы можем узнать содержимое текущего каталога, который, кстати, называется текущим рабочим каталогом. Еще мы можем узнать название родительского каталога и какие у текущего каталога есть дочерние каталоги.

Когда мы разбирались с терминалом и командной оболочкой, то говорили, что в приглашении терминала обычно указывается название текущего рабочего каталога, но приглашение можно настроить так, чтобы название и путь до текущего каталога не показывался и, например, в таких ситуациях неплохо было бы узнать, где мы, собственно, находимся, чтобы понять куда нам идти, для этой цели и служит команда pwd (print working directory). Давайте выполним ее из каталога dir1:

Помните, что при входе в терминал мы обычно попадаем в свой домашний каталог, который для краткости в приглашении обозначается символом ~, давайте выполним команду pwd в домашнем каталоге:

В общем и целом, pwd – это самая простая команда, которую вы можете использовать для навигации при работе с командной оболочкой.

ls – команда для просмотра содержимого каталога

Для команды ls у нас будет отдельная публикация, в который мы подробнее разберемся с ее возможностями. Сейчас нам важно отметить следующее: команда ls используется для просмотра содержимого текущего каталога или любого другого каталога, к которому у вас есть права на чтение.

Работает команда ls очень просто, давайте выполним ее из своего домашнего каталога:

Если мы хотим увидеть содержимое рабочего стола, находясь в домашнем каталоге, то команде ls можно передать путь до того каталога, который мы хотим посмотреть:

На самом деле возможности команды ls куда шире, чем мы их сейчас описали, эта команда обладает массой всевозможных интересных параметров, которые можно комбинировать друг с другом, но об этом в другой раз. Кстати сказать: часто новички в мире Linux, когда речь заходит о командах говорят фразу: дайте список всех Linux команд. Так вот, списка всех команд Linux не существует. Дело всё в том, что каждый дистрибутив (в том числе и Linux Mint) обладает своим собственным набором команд, более того, вы можете изменить этот набор команд удалив или установи какую-нибудь программу, имя которой станет новой командой (про установку Linux Mint на виртуальную машину VirtualBox вы можете почитать здесь).

cd – команда для перемещения по каталогам и папкам

Определять свое местоположение в системе и просматривать содержимое различных каталогов мы научились, теперь давайте научимся двигаться по лабиринту каталогов Linux, для этих целей у нас есть команда cd (change directory).

Давайте для начала перейдем из домашнего каталога в dir1, который находится на рабочем столе. Сделать это можно, используя абсолютный путь cd /home/kirill/Рабочий стол/dir1:

Обратите внимание: произошла ошибка, командная оболочка не смогла найти каталог с именем Рабочий. Дело все в том, что «пробел» в системах подобных Unix является разделительным символом. Вообще, терминал работает с тремя видами символов: обычные текстовые символа, разделительные символы и специальные символы, пробел относится к разделительным и терминал их обрабатывает по-особенному, когда встречает их. Чтобы терминал понял, что словосочетание Рабочий стол — это имя каталога (то есть, чтобы терминал проигнорировал символ пробела), его надо взять в кавычки, которые могут быть как одинарными, так и двойными:

Также из домашнего каталога можно перейти в каталог dir1, используя относительный путь:

А вернуться из dir1 на рабочий стол, мы можем при помощи вот такой конструкции:

Или же можем использовать абсолютный путь:

Чтобы перейти с каталога «Рабочий стол» в каталог dir1, мы можем воспользваться такой штукой:

Хотя конструкцию ./, которая говорит терминалу о том, что это текущий каталог можно опустить, посмотрим это, перейдя из каталога dir1 в dir2:

Стоит отметить, что у команды cd есть несколько полезных сокращений, которые я рекомендовал бы запомнить:

  • cd – переместит вас в домашний каталог;
  • cd / — переместит вас в корень;
  • cd — – переместит вас в предыдущий рабочий каталог;
  • cd ~username – переместит вас в домашний каталог того пользователя, чей логин вы указали.

file – команда для определения типа файлов

Вам нужно для себя отметить две вещи: работа с операционными системами  типа Unix требует от пользователя некоторой внимательности и всё сущее в Linux есть файл. Про работу с файлами в командной оболочке bash мы поговорим отдельно, сейчас давайте разберемся с тем, как определить тип файла, ведь ОС семейства Linux у файлов не обязательно должны быть расширения, а тип файла операционная система определяет по другим параметрам. То есть, если в Linux вы видите файл pict1.jpg – это не обязательно будет изображение.

Но мы смоделируем несколько другую ситуацию. На рабочем столе у меня есть каталог dir1, в котором есть каталог dir2, а в каталоге dir2 есть папки dir4 и dir6 и файл с именем dir5, это показано на рисунке ниже.

Часть содержимого каталога с именем dir2

Часть содержимого каталога с именем dir2

Давайте перейдем в каталог dir2 и выполним команду ls:

Выполнив команду ls мы увидели содержимое каталога dir2 в терминале

Выполнив команду ls мы увидели содержимое каталога dir2 в терминале

Обратите внимание: у меня терминал настроен таким образом, что подсвечивает разными цветами разные объекты файловой системы, хотя ключевое слово здесь настроен, этого может и не быть. Тут, например, терминал подсвечивает каталоги синим цветом, мультимедийные файлы пурпурным, а обычные файлы белым, давайте проверять, но этого может и не быть, хотя терминал может подсвечивать и неправильно, давайте убедимся.

Чтобы понять что здесь есть файл, а что каталог, нам нужно воспользоваться дополнительной командой file, применим ее к объектам файловой системы dir4, dir5, dir6:

Как видим, команда file указывает не только тип файла, но и умеет определять что объект является каталогом. А еще из примера видно, что file умеет работать сразу с несколькими аргументами, то есть ей на проверку можно отправлять сразу несколько файлов, а можно это делать и по одному. Также из примера выше видно, что dir5 — это обычный текстовый файл в кодировки UTF-8. Давайте проверим оставшиеся файлы:

Команда file умеет определять тип файла лучше, чем подсвечивает терминал. Здесь мы видим, что файлы file5 и file6 — это текстовые файлы в кодировке UTF-8. Файл pict1.jpg вовсе никакая не картинка, а текстовый файл. Файла pict2.jpg не существует и file нам об этом сообщает, файл pict2.png вообще является пустым, а вот файл с незамысловатым именем vasya на самом деле является изображением и мы даже видим некоторые характеристики этого изображения.

Итак, мы изучили несколько команд оболочки, которые помогут нам изучать систему Linux Mint и перемещаться между каталогами и папками, а также просматривать их содержимое и определять его тип, для этих целей у нас есть четыре команды: cd, ls, file, pwd. И не забывайте, что для перемещения по каталогам в Linux можно использовать как абсолютный путь, так и относительный.

В следующей публикации мы с вами познакомимся с командами Linux, которые дают нам возможность просматривать файлы.

Я хочу продолжить выпускать уроки по Linux Mint и командной оболочке bash

Если это так, то ваше желание совпадает с моим. Но мне от вас нужна небольшая помощь! Дело всё в том, что весь мой контент доступен полностью и абсолютно бесплатно в блоге и на канале YouTube. Создание контента — это работа, отнимающая много сил и энергии (благо, она мне нравится и пока я готов ей заниматься), оплату с вас за эту работу я не прошу, но прошу помочь распространить этот контент и поддержать мой канал и группу Вконтакте. Поэтому, если вы хотите, чтобы видео выходили чаще, лучше и больше, то можете мне помочь один из нескольких способов, указанных ниже, это нетрудно, но очень мотивирует и помогает:

  1. Оставьте ссылку на мой сайт, канал, группу в ВК, отдельное видео у себя на странице в соц. сетях или на своем сайту.
  2. Вступите в группу в ВК: https://vk.com/zametkinapolyah.
  3. Подпишитесь на мой YouTube-канал: https://www.youtube.com/user/zametkinapolyahru.
  4. И самое эффективное: после просмотра видео не забудьте написать отзыв в комментариях на YouTube и поставить лайк видео, опять же, на YouTube.

Замечу, что все мои видео уроки появляются сперва на YouTube, там вы их увидите быстрее всего.

Если вы считаете, что я вам помог и хотите меня отблагодарить материально, то можете воспользоваться реквизитами, указанными ниже. Все вырученные с доната деньги пойдут на улучшение качества видео, например, я возьму хороший USB микрофон, это будет как приятное дополнение к Full HD.

WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223

Рекомендую посмотреть и почитать: