Знакомство с командной строкой – первый и очень важный шаг на пути к продуктивному использованию мощной серверной платформы Linux. Также это важнейшее условие для выполнения практически всех доступных в данной среде задач, связанных с сервером.
Сегодня для многих инструментов существуют графические альтернативы; но умение использовать командную строку – это дополнительный уровень продуктивности, скорости и гибкости серверной среды, достичь который при помощи большинства графических интерфейсов невозможно.
Данная статья описывает основы перемещения по системе и извлечения всей необходимой информации о ней.
Требования
Поскольку данное руководство учит основам работы с командной строкой, оно не предполагает глубоких предварительных знаний. Тем не менее, для выполнения описанных дествий необходимо иметь доступ к VPS. Текущие параметры во многом зависят от используемой операционной системы.
Необходимые для входа на новый сервер пароль и IP-адрес будут получены по электронной почте.
ssh root@IP_адрес
Войти на сервер можно также через консоль, используя клавишу «Console Access». Это создаст виртуальную терминальную сессию непосредственно в окне веб-браузера.
Для выполнения данного руководства входить в систему как root не обязательно.
Как выяснить свое местонахождение в системе
После подключения к машине Linux на экране появится что-то вроде:
root@имя_хоста:~#
Это и есть командная строка, в которую нужно вводить команды.
Но это еще не все. На данный момент вы также находитесь в определенном месте в файловой системе сервера. Местонахождение пользователя в файловой иерархии сервера влияет на выполнение введенных команд.
Это похоже на запуск браузера файлов на локальном компьютере. Кликая по разным папкам, можно перемещаться в разные места файловой системы. Открывая меню редактирования браузера файлов, можно установить параметры, которые будут применяться к элементам текущей папки.
Командная строка – текстовое представление тех же действий.
Итак, как же узнать свое текущее положение в файловой системе? Подсказку содержит сама командная строка. В конце командной строки, перед символами # или $ (символ зависит от текущей учетной записи, через которую ведется работа), можно увидеть символ тильды (~). Данный символ обозначает домашний каталог.
Домашний каталог – это место, где хранятся файлы данного пользователя. Символ «~» – условное обозначение этого каталога.
Другой способ определить свое местонахождение в файловой системе – использовать команду «pwd».
Введите данную команду в терминал и нажмите Enter:
pwd
/root
Каталог /root – это домашний каталог root-пользователя (администратора). Если вход в систему был выполнен с помощью другого пользователя, результат будет выглядеть примерно так:
pwd
/home/имя_пользователя
Как было сказано выше, для выполнения действий данного руководства входить в систему как root не обязательно.
Просмотр файлов системы
Команда pwd показывает текущий каталог. Но как же узнать, что находится в текущем каталоге?
Чтобы просмотреть файлы и каталоги, находящиеся в текущем каталоге, нужно использовать команду ls:
ls
Иногда эта команда возвращает пользователя в командную строку, не выведя никакого результата. Но это не значит, что она была выполнена неверно – просто текущий каталог пуст, и никаких файлов или каталогов в нем нет.
Чтобы увидеть поведение команды ls в случае обнаружения файлов или каталогов, создайте несколько тестовых файлов. Для создания новых файлов введите:
touch file{1..5}
Это действие создаст в текущем каталоге 5 файлов с названием file1, …, file5.
Снова введите команду ls:
ls
file1 file2 file3 file4 file5
Теперь команда обнаружила файлы, которые находятся в текущем каталоге.
Большинству команд задано поведение по умолчанию – действие, которое запускается на выполнение при вводе команды без аргументов. Но поведение большей части команд можно расширить, задав им дополнительные аргументы (также они называются опциями, флагами или параметрами).
Иногда они активируют дополнительные функции команды, иногда указывают объект, на который нужно выполнить команду.
Опции ls
Встроенную функцию справки имеют далеко не все команды. В большинстве случаев ее можно вызвать, добавив флаги –help или -h в конце команды. Попробуйте вызвать справку при помощи ls:
ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print C-style escapes for nongraphic characters
--block-size=SIZE scale sizes by SIZE before printing them. E.g.,
. . .
Это действие выводит некоторые рекомендации по правильному использованию команды и список опций, доступных для изменения поведения команды по умолчанию. В столбце слева представлены символы для расширения команды, а в столбце справа описан каждый флаг.
Использование флага –help – отличный пример работы аргументов.
Также узнать о параметрах, доступных для определенной команды, можно из руководства. Чтобы открыть руководство, введите команду man, а после нее укажите команду, аргументы которой нужно найти. Например:
man ls
Для прокрутки страницы используйте клавиши со стрелками: чтобы покинуть руководство, введите «q».
Как видите, команда ls имеет немало опций, меняющих и расширяющих ее действия. Например:
ls -l
-rw-r--r-- 1 root root 0 Feb 28 19:45 file1
-rw-r--r-- 1 root root 0 Feb 28 19:45 file2
-rw-r--r-- 1 root root 0 Feb 28 19:45 file3
-rw-r--r-- 1 root root 0 Feb 28 19:45 file4
-rw-r--r-- 1 root root 0 Feb 28 19:45 file5
Данное действие показывает нам те же пять тестовых файлов, но в длинном формате. Так можно получить больше информации о файлах: узнать владельца файла (первый столбец со значением «root»), группу файла (второй столбец со значением «root»), его размер (0), дату его последнего изменения, и т.д.
Теперь используйте другую опцию команды:
ls -a
. .aptitude .bashrc file2 file4 .profile .ssh
.. .bash_history file1 file3 file5 .rnd .viminfo
Данный результат показывает несколько файлов, которые ранее выведены не были. Флаг –a является синонимом флага –all. Он показывает все файлы текущего каталога, в том числе скрытые.
В системе Linux все файлы, имя которых начинается с символа точки, являются скрытыми по умолчанию. Данные файлы не засекречены, и любой может найти их; они скрыты для более удобного управления файлами. С помощью флага –a команда ls выводит эти файлы.
Также можно использовать сразу несколько флагов, указав их последовательно:
ls -l -a
drwx------ 4 root root 4096 Feb 28 19:45 .
drwxr-xr-x 23 root root 4096 May 3 2013 ..
drwx------ 2 root root 4096 Feb 28 17:19 .aptitude
-rw------- 1 root root 2036 Feb 28 18:20 .bash_history
-rw-r--r-- 1 root root 570 Jan 31 2010 .bashrc
-rw-r--r-- 1 root root 0 Feb 28 19:45 file1
. . .
Можно также «свернуть» флаги в один флаг:
ls -la
Это работает точно таким же образом, при этом занимая меньше времени на набор.
Ещё одна полезная опция – флаг –R, который перечисляет файлы рекурсивно. Поскольку все каталоги, находящиеся в текущем каталоге, скрыты, нужно также использовать флаг –a:
ls -Ra
.:
. .aptitude .bashrc file2 file4 .profile .ssh
.. .bash_history file1 file3 file5 .rnd .viminfo
./.aptitude:
. .. cache config
./.ssh:
. .. authorized_keys
Теперь, ознакомившись со способами изменения действий команды ls, попробуйте изменить объект ее действия.
Использование ls на другие каталоги
По умолчанию ls выводит содержимое текущего каталога. Но таким же способом можно просмотреть содержимое любого каталога, указав его имя после команды (подобно флагам).
К примеру, просмотреть содержимое каталога /etc, существующего во всех системах Linux, можно, набрав:
ls /etc
acpi fstab magic rc.local
adduser.conf fstab.d magic.mime rc.local.orig
aliases fuse.conf mailcap rcS.d
aliases.db gai.conf mailcap.order reportbug.conf
alternatives groff mailname resolvconf
anacrontab group mail.rc resolv.conf
apm group- manpath.config rmt
. . .
Как видно, в данном каталоге достаточно много файлов.
Любой путь к каталогу, который начинается с косой черты (/), называется абсолютным (или полным), поскольку он ссылается на путь к каталогу из самого «высокого» в данной иерархии каталога, root, на что указывает слеш.
Еще один способ сослаться на каталог – использовать его относительный путь. Он представляет собой путь по отношению к текущему каталогу и нен ачинается со слеша.
Поскольку в текущем каталоге явных каталогов нет, для выполнения следующего действия нужно создать несколько каталогов и добавить в них файлы. Для этого просто наберите следующие команды как в примере ниже:
mkdir dir{1..3}
touch dir{1..3}/test{A,B,C}
Это создаст несколько каталогов с файлами. Чтобы ппросмотреть их, используйте команду ls без аргументов:
ls
dir1 dir2 dir3 file1 file2 file3 file4 file5
Чтобы просмотреть содержимое каталога dir1, можно использовать абсолютный путь, как было показано выше. Чтобы узнать текущий каталог:
pwd
/root
Затем введите имя каталога в конце строки:
ls /root/dir1
testA testB testC
Но проделывать данную операцию каждый раз необязательно, так как можно просто указать имя текущего каталога, чтобы сослаться на него:
ls dir1
testA testB testC
Если путь не начинается со слеша, операционная система ищет путь к каталогу, начиная с текущего каталога.
Перемещение по файловой системе
Предыдущие главы руководства рассказывают, как выяснить свое местоположение в файловой системе и как получить некоторые сведения о файлах в определенных каталогах.
Но как изменить рабочий каталог? Изменив рабочий каталог, пользователь получает возможность использовать относительные пути из другого места. Как правило, с файлами легче работать из каталога, в котором они содержатся.
Для перемещения по файловой иерархии используется команда cd, которая расшифровывается как «change directories».
Простейший вариант ее использования:
cd
Данная команда без дополнительной информации перейдет в домашний каталог. Если пользователь уже находится в домашнем каталоге, команда не выполнит никаких действий.
Чаще команда используется следующим образом:
cd /путь/к/каталогу
В данном случае фразу /путь/к/каталогу нужно заменить реальным путем к каталогу, в который нужно перейти. К примеру, чтобы перейти в root-каталог, который обозначается слешем (/) и является вершиной иерархии, наберите:
cd /
Примечание: root-каталог (/) не является домашним каталогом root-пользователя (/root). Сначала их можно очень легко спутать.
Обратите внимание, командная строка изменилась.
Символ тильды («~», обозначающий домашний каталог) перед символом # или $ был заменен на root.
Чтобы убедиться, что текущим теперь является root-каталог файловой системы, используйте команду pwd:
pwd
/
Можно также проверить файлы данного каталога:
ls
bin etc lib media proc sbin sys var
boot home lib64 mnt root selinux tmp vmlinuz
dev initrd.img lost+found opt run srv usr
Теперь попробуйте перейти в другой каталог при помощи относительного пути. Найдите в данном каталоге каталог с именем usr и перейдите в него, введя:
cd usr
Обратите внимание, с командой cd также можно использовать относительный путь. Как вернуться в root-каталог? Можно использовать уже знакомую команду «cd /», но есть еще один способ сделать это.
Попробуйте подняться вверх по дереву каталогов, используя относительные пути. Как сослаться на каталог, в котором находится текущий каталог, пи помощи относительных путей?
Для этого используется специальный синтаксис. Каталог, содержащий текущий каталог, называется «родительским». Чтобы сослаться на родительский каталог, используются две точки (..).
То есть, чтобы подняться на уровень выше, нужно использовать:
cd ..
pwd
/
Как видите, root-каталог снова стал текущим. Чтобы просмотреть содержимое текущего каталога, можно использовать символ точки вместо имени:
ls .
bin etc lib media proc sbin sys var
boot home lib64 mnt root selinux tmp vmlinuz
dev initrd.img lost+found opt run srv usr
Это очень полезно в дальнейшей работе с командной строкой, так как позже может возникнуть множество ситуаций, в которых нужно быстро сослаться на текущий каталог.
Как было сказано ранее, символ «~» ссылается на домашний каталог. Используйте его как начало другого пути к каталогу, чтобы перейти к каталогу dir1 домашнего каталога:
cd ~/dir1
pwd
/root/dir1
Итак, используя символ «~» вместо первой части пути, можно без труда перейти в каталог, который находится в текущем каталоге.
Но что, если при переходе произошла ошибка и теперь нужно вернуться в последний каталог? Чтобы перейти назад в предыдущий каталог, введя:
cd -
pwd
/
В завершение вернитесь в домашний каталог. Это делается при помощи символа тильды, который используется как путь к каталогу. Но также можно просто использовать команду cd без аргументов, так как ее поведение по умолчанию – возвращать домашний каталог. Это выглядит так:
cd
pwd
/root
Как видите, теперь домашний каталог стал текущим.
Итоги
Это самые простые инструменты изучения файловой системы, при помощи которых можно быстро перемещаться по системе, отслеживать свое местоположение и просматривать содержимое каталогов.