Относительные пути
В отличие от абсолютного пути, начинающегося в корневом каталоге и ведущего к каталогу назначения, относительный путь начинается в рабочем каталоге. Для обозначения относительных позиций в дереве файловой системы используется пара специальных символов: . (точка) и .. (точка-точка).
Символ . (точка) обозначает рабочий каталог, а символ .. (точка-точка) обозначает каталог, родительский по отношению к рабочему. Ниже показано, как ими пользоваться. Давайте снова сменим рабочий каталог на /usr/bin:
[ [email protected] ~]$ cd /usr/bin
[ [email protected] bin]$ pwd
/usr/bin
Отлично, а теперь допустим, что мы хотим сменить рабочий каталог на родительский для каталога /usr/bin, которым является /usr. Сделать это можно двумя способами: пойти либо по абсолютному пути:
[ [email protected] bin]$ cd /usr
[ [email protected] usr]$ pwd
/usr
либо по относительному:
[ [email protected] bin]$ cd ..
[ [email protected] usr]$ pwd
/usr
Два разных способа дают идентичные результаты. И каким же лучше пользоваться? Конечно, тем, который требует нажимать меньше клавиш!
Аналогично, существуют два способа сменить рабочий каталог с /usr на /usr/bin. Абсолютный путь:
[ [email protected] usr]$ cd /usr/bin
[ [email protected] bin]$ pwd
/usr/bin
Относительный путь:
[ [email protected] usr]$ cd ./bin
[ [email protected] bin]$ pwd
/usr/bin
А теперь я хочу сделать важное замечание. Практически во всех случаях можно опустить пару символов ./, потому что они подразумеваются по умолчанию.
Ввод
[ [email protected] usr]$ cd bin
даст тот же результат. Вообще если путь к чему-либо не указан явно, подразумевается текущий рабочий каталог.
Некоторые полезные сокращения
В табл. 2.1 перечислены некоторые способы быстрой смены рабочего каталога.
Таблица 2.1. Сокращенные варианты команды cd
Сокращение
Результат
cd
Сменить рабочий каталог на домашний
cd -
Сменить рабочий каталог на предыдущий рабочий каталог
cd ~username
Сменить рабочий каталог на домашний каталог пользователя username. Например, cd ~bob выполнит переход в домашний каталог пользователя bob
ЧТО СЛЕДУЕТ ЗНАТЬ об именах файлов
• Файлы, имена которых начинаются с точки, считаются скрытыми. Это означает, что команда ls не будет выводить их, если не вызвать ее с параметром: ls -a. В момент создания учетной записи пользователя в его домашний каталог помещается несколько скрытых файлов, где хранятся различные параметры настройки учетной записи. Далее в этой книге мы еще вернемся к подобным файлам и посмотрим, как можно настроить свое окружение. Кроме того, некоторые приложения помещают в домашний каталог свои скрытые файлы с настройками.
• Linux, как это принято в Unix, различает регистр символов в именах файлов и командах. Файлы с именами File1 и file1 — это разные файлы.
• В Linux не поддерживается понятие «расширения файла», как в некоторых других операционных системах. Вы можете давать своим файлам любые имена. Тип и/или назначение файла определяется другими средствами. Но даже при том, что Unix-подобные операционные системы не используют расширения файлов для определения типа/назначения файлов, некоторые прикладные программы все же используют их для этой цели.
• Хотя Linux поддерживает длинные имена файлов с пробелами и знаками пунктуации, старайтесь не использовать в именах файлов другие знаки пунктуации, кроме точки, дефиса и подчеркивания. Также не используйте пробелы в именах файлов. Наличие пробелов в именах файлов осложняет решение многих задач командной строки — вы это увидите в главе 7. Если необходимо отделить друг от друга слова в имени файла, используйте символы подчеркивания. Потом вы не раз скажете себе спасибо за это.
Теперь, когда мы знаем, как перемещаться по файловой системе, совершим обзорное путешествие по системе Linux. Но прежде чем отправиться, познакомимся еще с несколькими командами, которые пригодятся в пути:
• ls — выводит список содержимого каталога.
• file — определяет тип файла.
• less — выводит содержимое файла.
Любопытные возможности ls
Команда ls является, пожалуй, одной из самых часто используемых команд, и не без оснований. С ее помощью можно увидеть, что находится в каталоге, и узнать некоторые важные атрибуты файлов и каталогов. Как мы уже видели, чтобы получить список файлов и подкаталогов в текущем рабочем каталоге, достаточно ввести команду ls:
[ [email protected] ~]$ ls
Desktop Documents Music Pictures Public Templates Videos
Команде можно явно указать каталог, содержимое которого требуется вывести:
[email protected] ~]$ ls /usr
bin games kerberos libexec sbin src
etc include lib local share tmp
и даже несколько каталогов. Следующий пример выведет содержимое домашнего каталога пользователя (обозначен символом ~) и каталога /usr:
[ [email protected] ~]$ ls ~ /usr
/home/me:
Desktop Documents Music Pictures Public Templates Videos
/usr:
bin games kerberos libexec sbin src
etc include lib local share tmp
Можно также изменить формат вывода, чтобы получить больше информации:
[ [email protected] ~]$ ls -l
total 56
drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Desktop
drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Documents
drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Music
drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Pictures
drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Public
drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Templates
drwxrwxr-x 2 me me 4096 2012-10-26 17:20 Videos
Параметр -l, добавленный в команду, требует использования «длинного» (long) формата вывода.
Мы подошли к очень важному моменту, касающемуся особенностей работы большинства команд. Команды часто сопровождаются одним или несколькими параметрами, изменяющими их поведение, и дополнительными, одним или несколькими, аргументами, на которые воздействует команда. Поэтому большинство команд выглядят примерно так:
команда -параметры аргументы
Большинство команд используют параметры, состоящие из одного символа, которому предшествует дефис, например: -l. Но многие команды, в том числе команды из проекта GNU, поддерживают параметры с длинными именами, состоящие из слова, которому предшествуют два дефиса. Кроме того, многие команды позволяют объединять вместе параметры с короткими именами. В следующем примере команде ls передаются два параметра: параметр l, требующий использовать длинный (long) формат вывода, и параметр t, требующий сортировать результаты по времени (time) изменения:
[ [email protected] ~]$ ls -lt
Добавим параметр с длинным именем --reverse, чтобы изменить порядок сортировки на обратный:
[ [email protected] ~]$ ls -lt --reverse
Команда ls имеет огромное число допустимых параметров. Наиболее популярные из них перечислены в табл. 3.1.
Таблица 3.1. Наиболее популярные параметры команды ls
Параметр
Длинный параметр
Описание
-a
--all
Список всех (all) файлов, даже с именами, начинающимися с точки, которые обычно не выводятся (то есть скрытых)
-d
--directory
Обычно в присутствии этого параметра команда ls выводит информацию о самом каталоге, а не его содержимое. Используйте этот параметр в сочетании с параметром -l, чтобы получить дополнительную информацию о каталоге, а не о его содержимом
-F
--classify
Добавляет в конец каждого имени символ-индикатор (например, прямой слеш, если это имя каталога)
-h
--human-readable
При использовании длинного формата вывода отображает размеры файлов не в байтах, а в величинах с единицами измерения
-l
Выводит результаты с использованием длинного формата
-r
--reverse
Выводит результаты в обратном порядке. Обычно команда ls выводит результаты в алфавитном порядке
-S
Сортировать результаты по размеру (size)
-t
Сортировать результаты по времени (time) последнего изменения
Пристальный взгляд на длинный формат
Как было показано выше, параметр -l заставляет команду ls выводить результаты с использованием длинного формата. Этот формат предусматривает вывод большого количества полезной информации. Ниже приводится пример вывода содержимого каталога Examples в системе Ubuntu:
-rw-r--r-- 1 root root 3576296 2012-04-03 11:05 Experience ubuntu.ogg
-rw-r--r-- 1 root root 1186219 2012-04-03 11:05 kubuntu-leaflet.png
-rw-r--r-- 1 root root 47584 2012-04-03 11:05 logo-Edubuntu.png
-rw-r--r-- 1 root root 44355 2012-04-03 11:05 logo-Kubuntu.png
-rw-r--r-- 1 root root 34391 2012-04-03 11:05 logo-Ubuntu.png
-rw-r--r-- 1 root root 32059 2012-04-03 11:05 oo-cd-cover.odf