Библиотека сайта rus-linux.net
Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки
Оригинал: Linux FundamentalsАвтор: Paul Cobbaut
Дата публикации: 16 октября 2014 г.
Перевод: А.Панин
Дата перевода: 11 декабря 2014 г.
Глава 6. Работа с директориями
В данной главе приводится краткий обзор большинства стандартных команд, используемых при работе с директориями: pwd
, cd
, ls
, mkdir
и rmdir
. Эти команды доступны при работе с любой системой Linux (или Unix).
Кроме того, в данной главе обсуждаются понятия абсолютных
и относительных путей
, а также описывается методика использования механизма завершения путей
командной оболочки bash.
Команда pwd
pwd
(расшифровывается как Print Working Directory - вывести информацию о рабочей директории) может быть получена информация о вашем текущем местонахождении в рамках файловой системы. Попробуйте выполнить эту команду: получите доступ к интерфейсу командной строки системы (воспользовавшись одним из приложений со следующими названиями: terminal, console или xterm) и введите команду pwd
. Командная оболочка выведет путь к вашей текущей директории
.
paul@debian8:~$ pwd /home/paul
Команда cd
cd
(расшифровывается как Change Directory - изменить директорию).
paul@debian8$ cd /etc paul@debian8$ pwd /etc paul@debian8$ cd /bin paul@debian8$ pwd /bin paul@debian8$ cd /home/paul/ paul@debian8$ pwd /home/paul
Команда cd ~
cd
также может использоваться для быстрого перехода назад в вашу домашнюю директорию. Простое исполнение команды cd
без задания пути к целевой директории приведет к перемещению в домашнюю директорию. Исполнение команды cd ~
приведет к аналогичному эффекту.
paul@debian8$ cd /etc paul@debian8$ pwd /etc paul@debian8$ cd paul@debian8$ pwd /home/paul paul@debian8$ cd ~ paul@debian8$ pwd /home/paul
Команда cd ..
родительскую директорию
(ту директорию, которая находится над вашей текущей директорией в дереве директорий) следует использовать команду cd ..
.
paul@debian8$ pwd /usr/share/games paul@debian8$ cd .. paul@debian8$ pwd /usr/share
Для того, чтобы остаться в текущей директории, просто введите команду cd .
;-) Позднее мы все же познакомимся с практическим примером использования символа .
, представляющего текущую директорию.
Команда cd -
cd
заключается в выполнении простой команды cd -
для перехода в предыдущую директорию.
paul@debian8$ pwd /home/paul paul@debian8$ cd /etc paul@debian8$ pwd /etc paul@debian8$ cd - /home/paul paul@debian8$ cd - /etc
Абсолютные и относительные пути
Вы должны иметь представление об абсолютных и относительных путях
в рамках дерева директорий файловой системы. Если вы вводите путь, начинающийся с символа слэша (/)
, подразумевается, что путь будет указан относительно корневой директории
файловой системы. Если же вы не начинаете ввод пути с символа слэша, подразумевается, что точкой отсчета будет текущая директория.
/home/paul
. Для перехода из этой директории в директорию /home
вам придется ввести команду cd /home
вместо команды cd home
.
paul@debian8$ pwd /home/paul paul@debian8$ cd home bash: cd: home: Нет такого файла или каталога paul@debian8$ cd /home paul@debian8$ pwd /home
/home
вам придется ввести команду cd paul
вместо команды cd /paul
для перехода в поддиректорию paul
текущей директории /home
.
paul@debian8$ pwd /home paul@debian8$ cd /paul bash: cd: /paul: Нет такого файла или каталога paul@debian8$ cd paul paul@debian8$ pwd /home/paul
корневая директория /
, то и команда cd /home
, и команда cd home
позволят вам переместиться в директорию /home
.
paul@debian8$ pwd / paul@debian8$ cd home paul@debian8$ pwd /home paul@debian8$ cd / paul@debian8$ cd /home paul@debian8$ pwd /home
Этот пример был последним примером, в котором используются команды pwd
. С этого момента информация о текущей директории будет всегда выводиться в рамках приглашения командной оболочки. Далее в данной книге будут даны пояснения относительно того, как следует использовать переменную командной оболочки $PS1
для вывода описанной информации.
Завершение путей
Клавиша TAB
может помочь избежать ошибок при вводе путей. Нажатие клавиши TAB
после ввода части команды cd /et
приведет к завершению команды до вида cd /etc/
. При этом нажатие клавиши TAB
после ввода команды cd /Et
не приведет ни к чему, так как была допущена ошибка при вводе части пути
(использована буква E в верхнем регистре).
Вам придется нажимать меньше клавиш в случае использования клавиши TAB
, к тому же, при использовании этой клавиши вы можете быть уверены в том, что введенный путь
является корректным!
Утилита ls
ls
.
paul@debian8:~$ ls allfiles.txt dmesg.txt services stuff summer.txt paul@debian8:~$
Команда ls -a
-a
, который предназначен для вывода информации обо всех файлах. Под выводом информации обо всех файлах подразумевается вывод информации в том числе и о скрытых файлах
. В том случае, если имя файла в рамках файловой системы Linux начинается с символа точки, он считается скрытым файлом
и не включается в обычные списки содержимого директорий.
paul@debian8:~$ ls allfiles.txt dmesg.txt services stuff summer.txt paul@debian8:~$ ls -a . allfiles.txt .bash_profile dmesg.txt .lesshst stuff .. .bash_history .bashrc services .ssh summer.txt paul@debian8:~$
Команда ls -l
ls
для вывода информации о содержимом директории в различных форматах или для вывода информации о различных файлах из директории. Команда ls
без параметров позволяет получить список файлов, расположенных в директории. Команда ls -l
(в качестве параметра использована строчная буква L, а не число 1) позволяет получить более подробный список файлов.
paul@debian8:~$ ls -l итого 17296 -rw-r--r-- 1 paul paul 17584442 сен 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 96650 сен 17 00:03 dmesg.txt -rw-r--r-- 1 paul paul 19558 сен 17 00:04 services drwxr-xr-x 2 paul paul 4096 сен 17 00:04 stuff -rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt
Команда ls -lh
Другим периодически используемым параметром утилиты ls является параметр -h
. Он позволяет выводить числовые значения (соответствующие размерам файлов) в формате, лучше читаемом человеком. Также в примере ниже показаны варианты передачи параметров утилите ls
. Позднее в данной книге будут даны подробные пояснения относительно выводимых данных.
paul@debian8:~$ ls -l -h итого 17M -rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt -rw-r--r-- 1 paul paul 20K сен 17 00:04 services drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff -rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt paul@debian8:~$ ls -lh итого 17M -rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt -rw-r--r-- 1 paul paul 20K сен 17 00:04 services drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff -rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt paul@debian8:~$ ls -hl итого 17M -rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt -rw-r--r-- 1 paul paul 20K сен 17 00:04 services drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff -rw-r--r-- 1 paul paul 0 сен 17 00:04 summer.txt paul@debian8:~$ ls -h -l итого 17M -rw-r--r-- 1 paul paul 17M сен 17 00:03 allfiles.txt -rw-r--r-- 1 paul paul 95K сен 17 00:03 dmesg.txt -rw-r--r-- 1 paul paul 20K сен 17 00:04 services drwxr-xr-x 2 paul paul 4.0K сен 17 00:04 stuff -rw-r--r-- 1 paul paul 0 Sep 17 00:04 summer.txt paul@debian8:~$
Утилита mkdir
mkdir
. Вам придется передавать как минимум один параметр утилите mkdir
, а именно, имя новой директории, которая должна быть создана. При этом следует серьезно задумываться перед использованием начального символа / в именах директорий.
paul@debian8:~$ mkdir mydir paul@debian8:~$ cd mydir paul@debian8:~/mydir$ ls -al итого 8 drwxr-xr-x 2 paul paul 4096 сен 17 00:07 . drwxr-xr-x 48 paul paul 4096 сен 17 00:07 .. paul@debian8:~/mydir$ mkdir stuff paul@debian8:~/mydir$ mkdir otherstuff paul@debian8:~/mydir$ ls -l итого 8 drwxr-xr-x 2 paul paul 4096 сен 17 00:08 otherstuff drwxr-xr-x 2 paul paul 4096 сен 17 00:08 stuff paul@debian8:~/mydir$
Команда mkdir -p
родительской директории
для директории threedirsdeep
не существует.
paul@debian8:~$ mkdir mydir2/mysubdir2/threedirsdeep mkdir: невозможно создать каталог "mydir2/mysubdir2/threedirsdeep": Нет такого файла или каталога
-p
утилиты mkdir
при необходимости будут создаваться родительские директории.
paul@debian8:~$ mkdir -p mydir2/mysubdir2/threedirsdeep paul@debian8:~$ cd mydir2 paul@debian8:~/mydir2$ ls -l итого 4 drwxr-xr-x 3 paul paul 4096 сен 17 00:11 mysubdir2 paul@debian8:~/mydir2$ cd mysubdir2 paul@debian8:~/mydir2/mysubdir2$ ls -l итого 4 drwxr-xr-x 2 paul paul 4096 сен 17 00:11 threedirsdeep paul@debian8:~/mydir2/mysubdir2$ cd threedirsdeep/ paul@debian8:~/mydir2/mysubdir2/threedirsdeep$ pwd /home/paul/mydir2/mysubdir2/threedirsdeep
Утилита rmdir
rmdir
для удаления этой директории.
paul@debian8:~/mydir$ ls -l итого 8 drwxr-xr-x 2 paul paul 4096 сен 17 00:08 otherstuff drwxr-xr-x 2 paul paul 4096 сен 17 00:08 stuff paul@debian8:~/mydir$ rmdir otherstuff paul@debian8:~/mydir$ cd .. paul@debian8:~$ rmdir mydir rmdir: не удалось удалить "mydir": Каталог не пуст paul@debian8:~$ rmdir mydir/stuff paul@debian8:~$ rmdir mydir paul@debian8:~$
Команда rmdir -p
mkdir -p
, вы также можете использовать утилиту rmdir
для рекурсивного удаления директорий.
paul@debian8:~$ mkdir -p test42/subdir paul@debian8:~$ rmdir -p test42/subdir paul@debian8:~$
Практическое задание: работа с директориями
-
1. Выведите путь к вашей текущей директории.
-
2. Перейдите в директорию /etc.
-
3. А теперь перейдите в вашу домашнюю директорию с помощью ровно трех нажатий клавиш.
-
4. Перейдите в директорию /boot/grub с помощью ровно одиннадцати нажатий клавиш.
-
5. Перейдите в родительскую директорию для текущей директории.
-
6. Перейдите в корневую директорию.
-
7. Выведите список содержимого корневой директории.
-
8. Выведите подробный список содержимого корневой директории.
-
9. Оставаясь в текущей рабочей директории, выведите список содержимого директории /etc.
-
10. Оставаясь в текущей директории, выведите список содержимого директорий /bin и /sbin.
-
11. Оставаясь в текущей директории, выведите список содержимого директории ~.
-
12. Выведите список всех файлов (включая скрытые файлы), находящихся в вашей домашней директории.
-
13. Выведите список файлов, находящихся в директории /boot, с использованием формата величин для облегчения чтения человеком.
-
14. Создайте директорию testdir в вашей домашней директории.
-
15. Перейдите в директорию /etc и, оставаясь в ней, создайте директорию newdir в вашей домашней директории.
-
16. Создайте с помощью одной команды директории ~/dir1/dir1/dir2/dir3 (директория dir3 является поддиректорией директории dir2, а директория dir2 - поддиректорией директории dir1).
-
17. Удалите директорию testdir.
-
18. Если позволяет время (или вы ждете момента, когда остальные студенты закончат выполнение данного практического задания), попытайтесь воспользоваться командами
pushd
иpopd
и понять принцип их работы. Обратитесь к странице руководства man для командной оболочкиbash
с целью поиска информации о данных командах.
Корректная процедура выполнения практического задания: работа с директориями
-
1. Выведите путь к вашей текущей директории.
-
pwd
-
2. Перейдите в директорию /etc.
-
cd /etc
-
3. А теперь перейдите в вашу домашнюю директорию с помощью ровно трех нажатий клавиш.
-
cd (и нажатие клавиши Enter)
-
4. Перейдите в директорию /boot/grub с помощью ровно одиннадцати нажатий клавиш.
-
cd /boot/grub (Используйте клавишу Tab)
-
5. Перейдите в родительскую директорию для текущей директории.
-
cd .. (Между cd и .. должен быть пробел)
-
6. Перейдите в корневую директорию.
-
cd /
-
7. Выведите список содержимого корневой директории.
-
ls
-
8. Выведите подробный список содержимого корневой директории.
-
ls -l
-
9. Оставаясь в текущей рабочей директории, выведите список содержимого директории /etc.
-
ls /etc
-
10. Оставаясь в текущей директории, выведите список содержимого директорий /bin и /sbin.
-
ls /bin /sbin
-
11. Оставаясь в текущей директории, выведите список содержимого директории ~.
-
ls ~
-
12. Выведите список всех файлов (включая скрытые файлы), находящихся в вашей домашней директории.
-
ls -al ~
-
13. Выведите список файлов, находящихся в директории /boot, с использованием формата величин для облегчения чтения человеком.
-
ls -lh /boot
-
14. Создайте директорию testdir в вашей домашней директории.
-
mkdir ~/testdir
-
15. Перейдите в директорию /etc и, оставаясь в ней, создайте директорию newdir в вашей домашней директории.
-
cd /etc ; mkdir ~/newdir
-
16. Создайте с помощью одной команды директории ~/dir1/dir1/dir2/dir3 (директория dir3 является поддиректорией директории dir2, а директория dir2 - поддиректорией директории dir1).
-
mkdir -p ~/dir1/dir2/dir3
-
17. Удалите директорию testdir.
-
rmdir testdir
-
18. Если позволяет время (или вы ждете момента, когда остальные студенты закончат выполнение данного практического задания), попытайтесь воспользоваться командами
pushd
иpopd
и понять принцип их работы. Обратитесь к странице руководства man для командной оболочкиbash
с целью поиска информации о данных командах. -
man bash # открытие страницы руководства /pushd # поиск раздела с описанием команды pushd n # переход к следующему разделу (повторите это действие два/три раза)
Командная оболочка Bash поддерживает две встроенных команды с именами pushd и popd. Обе команды предназначены для работы со стандартным стеком посещенных ранее директорий. Команда pushd позволяет поместить директорию в стек и переместиться в новую текущую директорию, команда popd удаляет директорию из стека и устанавливает предыдущую текущую директорию.paul@debian7:/etc$ cd /bin paul@debian7:/bin$ pushd /lib /lib /bin paul@debian7:/lib$ pushd /proc /proc /lib /bin paul@debian7:/proc$ popd /lib /bin paul@debian7:/lib$ popd /bin
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 5. Страницы руководств man | Глава 7. Работа с файлами |