4.3 Управление каталогами из командной строки (Managing Directories from the Command Line)¶
Теперь, когда вы понимаете, как устроена файловая система Linux, и умеете искать файлы, можно приступить к управлению файловой системой. В этой части главы мы сосредоточимся на управлении каталогами из приглашения командной строки. Будут рассмотрены следующие темы:
- Навигация по файловой системе
- Просмотр содержимого каталогов
- Создание новых каталогов
- Копирование, перемещение и удаление каталогов
Начнём с обсуждения навигации по файловой системе из приглашения командной строки.
Навигация по файловой системе (Navigating the File System)¶
При работе с файловой системой Linux из приглашения командной строки одной из наиболее частых задач является перемещение между различными каталогами на устройствах хранения данных. Система Linux предоставляет следующие команды оболочки для этой цели:
pwdcd
Начнём с изучения команды pwd.
Использование команды pwd (Using the pwd Command)¶
Команда pwd — относительно простая утилита. Её название расшифровывается как Print Working Directory (вывести рабочий каталог). Эта команда просто отображает на экране текущий каталог.
Утилита может быть полезна, если профиль вашей оболочки не настроен на отображение текущего каталога в составе приглашения командной строки. Чтобы использовать pwd, достаточно ввести pwd в приглашении командной строки, как показано ниже:
В этом примере видно, что текущим каталогом является /home/rtracy.
Совет
Символ ~ в приглашении командной строки указывает на домашний каталог текущего пользователя. Поскольку в приведённом примере выполнен вход под учётной записью rtracy, символ ~ указывает на каталог /home/rtracy.
Если использовать команду pwd с параметром -P, она отобразит физический путь к каталогу без учёта символьных ссылок. Работа со ссылками рассматривается далее в этой главе.
На данном этапе вы умеете определять, в каком каталоге находитесь. Нередко требуется перейти в другой каталог файловой системы. Рассмотрим, как это сделать.
Использование команды cd (Using the cd Command)¶
Команда cd используется в приглашении командной строки Linux для смены каталогов в файловой системе. Чтобы воспользоваться этой командой, достаточно ввести cd с последующим именем каталога, в который нужно перейти. Это можно сделать двумя способами. Если ввести cd и затем имя каталога без указания полного пути к нему, команда cd предположит, что данный каталог является подкаталогом текущего. В следующем примере выполнена команда cd Documents:
Поскольку команда была выполнена из /home/rtracy, команда cd сменила текущий каталог на /home/rtracy/Documents. Такой способ называется использованием относительного пути (relative path). Путь, указанный вместе с командой, определяется относительно некоторой другой точки файловой системы — в данном случае каталога /home/rtracy.
С командой cd можно также использовать абсолютные пути. При использовании абсолютного пути (absolute path) указывается полный путь, начиная с /, к каталогу, в который нужно перейти, как в следующем примере:
Поскольку был указан абсолютный путь (/var/log), команда cd поняла, что каталог /var/log не находится в текущем каталоге. Вместо этого путь был определён от корневого каталога (/), и произошла смена текущего каталога на него.
Совет
Если ввести cd в приглашении командной строки без указания пути, произойдёт автоматический переход в домашний каталог текущего пользователя.
Команду cd можно также использовать для перемещения вверх по иерархии файловой системы. Для этого нужно ввести cd .., что переместит текущий каталог на один уровень выше в иерархии. Рассмотрим следующий пример:
В этом примере выполнена команда cd .., которая переместила из /var/log в каталог /var. Чтобы подняться на два каталога выше, можно ввести команду cd ../.. в приглашении командной строки:
Совет
Можно также использовать псевдоним .. для перемещения на один уровень вверх в иерархии и псевдоним ... — для перемещения на два уровня вверх. Большинство дистрибутивов автоматически определяет эти псевдонимы в одном из файлов конфигурации bash.
Теперь рассмотрим команду ls.
Просмотр содержимого каталогов (Viewing Directory Contents)¶
К этому моменту вы научились определять текущий каталог и переходить в другие каталоги файловой системы. Теперь нужно научиться выводить список файлов и подкаталогов, которые могут находиться в каталоге. Это делается с помощью команды ls. Если ввести ls в приглашении командной строки, на экране отобразится содержимое текущего каталога, как показано ниже:
rtracy@openSUSE:~> ls
bin Documents Music Public Templates test.txt words
Desktop Downloads Pictures public_html test2.txt Videos yourfile.txt
Как и в случае с командой cd, при использовании ls можно также указывать абсолютный путь. Это заставит ls отобразить содержимое указанного каталога. Рассмотрим пример:
rtracy@openSUSE:~> ls /var/log
acpid cups mail ntp Xorg.0.log.old
apparmor faillog mail.err pk_backend_zypp YaST2
audit firewall mail.info pm-powersave.log zypp
boot.log gdm mail.warn samba zypper.log
boot.msg krb5 messages warn
boot.omsg lastlog NetworkManager wtmp
ConsoleKit localmessages news Xorg.0.log
В этом примере выполнена команда ls /var/log, что привело к отображению содержимого /var/log. При работе с ls можно использовать различные параметры для настройки её поведения. Ниже приведены некоторые из них:
-
-a— отображает все файлы, включая скрытые. В следующем примере выполнена командаls -aв каталоге/home/rtracy:rtracy@openSUSE:~> ls -a . .esd_auth .inputrc test2.txt .. .fontconfig .local test.txt .bash_history .fonts .mozilla .themes .bashrc .gconf Music .thumbnails bin .gconfd .nautilus Videos .cache .gnome2 Pictures .viminfo .config .gnome2_private .profile .vimrc .dbus .gstreamer-0.10 Public words Desktop .gtk-bookmarks public_html .xim.template .dmrc .gvfs .pulse .xinitrc.template Documents .hplip .pulse-cookie .xsession-errors Downloads .ICEauthority .recently-used.xbel .xsession-errors.old .emacs .icons Templates yourfile.txt -
-l— выводит подробный список содержимого каталога. Это очень полезный параметр. С его помощью можно просматривать имена файлов, сведения о владельце, права доступа, даты изменения и размеры. Пример показан ниже:rtracy@openSUSE:~> ls -l total 56 drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:41 bin drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Desktop drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Documents drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Downloads drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Music drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Pictures drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Public drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:41 public_html drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Templates -rw-r--r-- 1 rtracy users 37 2011-01-20 11:04 test2.txt -rw-r--r-- 1 rtracy users 182 2011-01-21 11:48 test.txt drwxr-xr-x 2 rtracy users 4096 2011-01-19 10:42 Videos -rw-r--r-- 1 rtracy users 23 2011-01-20 11:32 words -rw-r--r-- 1 rtracy users 121 2011-01-21 11:46 yourfile.txt -
-R— отображает содержимое каталога рекурсивно, то есть выводит содержимое текущего каталога вместе с содержимым всех подкаталогов. В зависимости от количества записей в каталоге может потребоваться добавить| moreпосле использования этого параметра. Это заставит утилитуmoreприостанавливать вывод постранично.
На большинстве дистрибутивов определены несколько псевдонимов для команды ls. Например, в openSUSE псевдоним dir или ll запускает команду ls -l, псевдоним l запускает ls -alF, а псевдоним la запускает ls -la.
Приведённый список охватывает лишь часть доступных параметров команды ls. Полный перечень можно просмотреть на странице руководства или в info-узле команды ls.
Попрактикуемся в навигации по файловой системе в следующем упражнении.
Упражнение 4-2. Навигация по файловой системе
В этом упражнении вы попрактикуетесь в использовании команд оболочки для навигации по файловой системе Linux. Упражнение можно выполнить на виртуальной машине, прилагаемой к книге. Для получения правильно настроенной среды запустите снимок состояния 4-1.
Совет
Посмотрите видеозапись упражнения 4-2 с демонстрацией выполнения этого задания.
Выполните следующее:
- Загрузите систему Linux и войдите под учётной записью
studentс паролемstudent. - При необходимости откройте сеанс терминала.
- Определите текущий рабочий каталог, введя в приглашении командной строки
pwd. Какой каталог является текущим? - Перейдите в каталог
/etc, введя в приглашении командной строкиcd /etc. - Получите список текущего каталога, введя
ls. - Получите подробный список текущего каталога, введя
ls -l. - Получите подробный список с постраничным выводом, введя
ls -l | more. Пролистайте список постранично. - Вернитесь в домашний каталог, введя
cd ~. - Введите
ls. - Просмотрите скрытые файлы в домашнем каталоге пользователя, введя
ls -a. Какие файлы отображаетls -a, которые не отображаетls?
Теперь переключимся на обсуждение команд оболочки для управления каталогами в файловой системе Linux. Сначала рассмотрим создание новых каталогов.
Создание новых каталогов (Creating New Directories)¶
Для создания новых каталогов можно использовать команды оболочки. Это делается с помощью команды mkdir. Нужно ввести mkdir в приглашении командной строки с последующим именем создаваемого каталога. В следующем примере из домашнего каталога пользователя rtracy была выполнена команда mkdir MyFiles:
rtracy@openSUSE:~> mkdir MyFiles
rtracy@ openSUSE:~> ls
bin Downloads Pictures Templates Videos
Desktop Music Public test2.txt words
Documents MyFiles public_html test.txt yourfile.txt
Обратите внимание, что в выводе команды ls появился новый каталог MyFiles, созданный в /home/rtracy. Разумеется, при необходимости создать каталог не в текущем каталоге, а в другом месте файловой системы можно использовать абсолютный путь. Например, для создания каталога backup в каталоге /tmp нужно ввести в приглашении командной строки mkdir /tmp/backup.
На многих дистрибутивах в файле конфигурации оболочки определён псевдоним md, запускающий команду mkdir -p. Параметр -p указывает, что при необходимости должен быть создан весь указанный в команде путь к каталогу. Например, команда md ~/temp/backups/daily создаст каталоги temp и backups, если они ещё не существуют, а затем создаст каталог daily.
Копирование, перемещение и удаление каталогов (Copying, Moving, and Deleting Directories)¶
Помимо создания и просмотра каталогов в файловой системе Linux, можно также копировать, перемещать и удалять их с помощью команд оболочки. Для выполнения этих задач используются следующие утилиты:
-
cp— эта утилита используется для копирования структур каталогов целиком из одного места файловой системы в другое.Для копирования структуры каталога целиком необходимо включить параметр
-R, который указывает, что содержимое каталога должно быть скопировано рекурсивно. В следующем примере в домашнем каталоге пользователяrtracyбыла выполнена командаcp -R ~/MyFiles ~/backup. Это привело к копированию каталогаMyFilesвместе со всеми файлами и подкаталогами в каталогbackupдомашнего каталога пользователя. Посколькуcpкопирует каталог, исходный каталог остаётся нетронутым. -
mv— командаmvработает схожим сcpобразом. Однако она копирует указанный каталог в новое место файловой системы, а затем удаляет оригинал. Например, для перемещения каталогаbackupиз домашнего каталога в/tmpнужно ввестиmv ~/backup /tmp. Командуmvтакже можно использовать для переименования каталогов. Для этого достаточно ввестиmvс указанием переименовываемого каталога и нового имени. Например, для переименования каталогаbackupв домашнем каталоге вtempнужно ввестиmv ~/backup ~/temp. -
rmdir— эта утилита используется для удаления существующего каталога. Чтобы ею воспользоваться, достаточно ввестиrmdir имя_каталога, напримерrmdir MyFiles. Следует учитывать, чтоrmdirтребует, чтобы каталог был пустым, прежде чем его удалить. На многих дистрибутивах в файле конфигурации оболочки определён псевдонимrd, запускающий командуrmdir. -
rm— утилитаrmявляется более мощным инструментом удаления, позволяющим удалять непустые каталоги. Для удаления каталога нужно ввестиrm -r имя_каталога.
Итак, именно так управляются каталоги из приглашения командной строки. Теперь необходимо обсудить управление файлами внутри этих каталогов из приглашения командной строки. Рассмотрим это далее.