Пользователи Linux, у которых нет большого опыта работы с подобными системами, сталкиваются с трудностями при управлении операционной системой из командной строки. В этой статье мы попытаемся помочь вам разобраться с основами навигации и управления файлами в дистрибутивах Linux.
К сожалению, одно руководство может охватить все, что вам нужно знать для работы с Linux. Тем не менее, здесь вы найдёте всю необходимую информацию для получения базовых навыков.
Требования
- Чтобы следовать данному руководству, нужно иметь доступ к серверу Linux. Узнать, как впервые подключиться к серверу, можно в статье SSH-подключение к серверу.
- Также нужно иметь базовые навыки работы с терминалом и знать основные команды Linux. Больше информации по этой теме вы найдёте в руководстве Основы работы с терминалом Linux.
- Все действия, описанные в этом руководстве, можно выполнить с помощью обычной учетной записи пользователя (не root). Узнать, как настроить такого пользователя, можно в руководствах по начальной настройке сервера (Ubuntu 14.04, CentOS 7).
Для начала подключитесь к серверу Linux по SSH.
1: Навигация и просмотр системы
Перемещение по файловой системе и просмотр данных – одни из самых базовых навыков, которыми должен обладать пользователь Linux.
Команда pwd: вывод текущего каталога
Как правило, при входе на сервер вы попадаете в домашний каталог текущего пользователя.
Домашний каталог – это каталог, зарезервированный для хранения файлов и создания каталогов пользователя. Это место в файловой системе, где текущий пользователь имеет полные права.
Чтобы узнать, где находится домашний каталог по отношению к остальной файловой системе, используйте команду pwd. Эта команда отображает каталог, в котором вы сейчас находитесь:
pwd
Она вернёт:
/home/demo
Название домашнего каталога совпадает с именем пользователя, которому он принадлежит (например, в данном случае пользователь называется demo). Этот каталог хранится в каталоге /home, который в свою очередь находится в каталоге высшего уровня root (представлен символом слеша /).
Команда ls: просмотр содержимого каталога
Теперь вы знаете, как определить каталог, в котором вы находитесь, вы можете посмотреть содержимое этого каталога.
В настоящее время просматривать домашний каталог не имеет особого смысла (он содержит мало файлов). Для примера перейдите в другой каталог, в котором храниться больше файлов.
Чтобы перейти в другой каталог, введите в терминал (команда pwd подтвердит, что вы перешли в новый каталог):
cd /usr/share
pwd
/usr/share
Примечание: Подробнее перемещение по каталогам рассматривается в следующем разделе.
Теперь попробуйте запросить содержимое каталога:
ls
adduser groff pam-configs
applications grub perl
apport grub-gfxpayload-lists perl5
apps hal pixmaps
apt i18n pkgconfig
aptitude icons polkit-1
apt-xapian-index info popularity-contest
. . .
Как видите, в этом каталоге много различных элементов. В команду можно добавлять дополнительные флаги, чтобы изменить её поведение по умолчанию. Например, чтобы получить расширенный вывод, нужно использовать флаг –l:
ls -l
total 440
drwxr-xr-x 2 root root 4096 Apr 17 2014 adduser
drwxr-xr-x 2 root root 4096 Sep 24 19:11 applications
drwxr-xr-x 6 root root 4096 Oct 9 18:16 apport
drwxr-xr-x 3 root root 4096 Apr 17 2014 apps
drwxr-xr-x 2 root root 4096 Oct 9 18:15 apt
drwxr-xr-x 2 root root 4096 Apr 17 2014 aptitude
drwxr-xr-x 4 root root 4096 Apr 17 2014 apt-xapian-index
drwxr-xr-x 2 root root 4096 Apr 17 2014 awk
. . .
Это выведет множество информации, большая часть которой выглядит непривычно. Первый блок описывает тип файла (d указывает на каталог, символ «-» – на обычный файл) и права на него. Каждый последующий столбец, разделенный пробелами, определяет количество жестких ссылок, владельца файла, группу, размер элемента, время последнего изменения и имя элемента.
Чтобы получить список всех файлов, включая скрытые, добавьте флаг –а. Поскольку в каталоге /usr/share нет скрытых файлов, вернитесь в домашний каталог:
cd
Затем запросите список файлов:
ls -a
. .. .bash_logout .bashrc .profile
Как вы можете видеть, в этом каталоге есть три скрытых файла. Символы . и .. являются специальными индикаторами. В дальнейшем вы заметите, что конфигурационные файлы часто хранятся как скрытые.
Записи с одной и двумя точками – это не каталоги, а встроенные методы обращения к каталогам. Одна точка указывает текущий каталог, а две точки определяют родительский каталог этого каталога.
Команда cd: перемещение по файловой системе
В предыдущем разделе вы уже дважды переходили в другой каталог с помощью команды cd. Теперь мы рассмотрим эту команды подробнее.
Для начала вернитесь в каталог /usr/share.
cd /usr/share
В этом примере для перехода в каталог используется абсолютный путь. В Linux каждый файл и каталог относится к каталогу высшего уровня, который называется корневым каталогом (или root). Ссылаться на него можно с помощью одного слеша «/». Абсолютный путь указывает расположение каталога по отношению к корневому каталогу. Это позволяет однозначно ссылаться на каталоги из любого места файловой системы. Каждый абсолютный путь должен начинаться со слеша.
Альтернативой является относительный путь. Относительные пути определяют место каталога относительно текущего каталога. Если каталог находится близко к текущему каталогу в иерархии, путь будет проще и короче. На любой каталог в текущем каталоге можно ссылаться по имени и без слеша. Например, чтобы перейти в каталог locale в /usr/share из текущего местоположения, можно ввести:
cd locale
Аналогичным образом с помощью относительного пути можно убрать несколько уровней каталогов, предоставляя только ту часть пути, которая идет после пути текущего каталога. К примеру, чтобы перейти в каталог LC_MESSAGES внутри каталога en, можно ввести:
cd en/LC_MESSAGES
Чтобы вернуться к родительскому каталогу текущего каталога, используйте две точки (речь об этом уже шла в предыдущем разделе). Например, чтобы из каталога /usr/share/locale/en/LC_MESSAGES перейти к каталогу предыдущего уровня, можно ввести:
cd ..
Команда переведёт вас в каталог /usr/share/locale/en.
Команда cd без аргументов всегда будет возвращать вас в ваш домашний каталог:
cd
pwd
/home/demo
Читайте также: Использование команд cd, pwd и ls для изучения файловой системы на сервере Linux
2: Просмотр файлов
В предыдущем разделе вы научились перемещаться по файловой системе. При этом вы могли обратить внимание на файлы, которые хранятся в разных каталогах. В этом разделе вы научитесь работать с файлами. В отличие от некоторых других операционных систем, Linux и другие Unix-подобные операционные системы во многом зависят от обычных текстовых файлов.
Основной способ просмотра файлов – это команда less (также она называется программой постраничного вывода). Все предыдущие команды выполнялись сразу и возвращали вас в командную строку, но приложение less будет продолжать работу и занимать экран, пока вы не остановите его.
Откройте /etc/services (этот конфигурационный файл хранит данные о сервисах системы).
less /etc/services
Команда less откроет файл. Вы увидите отрывок документа, который помещается в окно терминала.
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn't support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers and other
# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
# New ports will be added on request if they have been officially assigned
# by IANA and used in the real-world or are needed by a debian package.
# If you need a huge list of used numbers please install the nmap package.
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
. . .
Для прокрутки можно использовать клавиши со стрелками вверх и вниз на клавиатуре. Чтобы вывести на экран следующий отрывок файла, вы можете использовать пробел, кнопку Page Down или сочетание клавиш CTRL-f.
Чтобы вернуться к предыдущему экрану, нажмите Page Up или CTRL-b.
Чтобы найти в документе какой-либо текст, введите слеш, после которого укажите искомое слово. Например, чтобы найти «mail», нужно ввести:
/mail
Команда выполнит поиск по файлу и остановится на первом найденном слове, которое соответствует запросу. Чтобы перейти к следующему слову, введите n в нижнем регистре:
n
Чтобы вернуться к предыдущему результату, нужно ввести N в верхнем регистре:
N
Чтобы закрыть less, введите:
q
Кроме less существует ещё много других способов просмотра файлов. Команда cat отображает содержимое файла и немедленно возвращает вас в командную строку. Команда head по умолчанию показывает первые 10 строк файла. Аналогично, команда tail выводит последние 10 строк. Такой вывод удобно использовать в конвейеризации данных для других команд.
Примечание: Ознакомьтесь с работой вышеперечисленных команд самостоятельно (можно на примере файла /etc/services).
Читайте также: Перенаправление ввода-вывода в Linux
3: Управление файлами и каталогами
Команда touch: создание файла
Многие команды и программы могут создавать файлы. Самый простой метод создания файла – это команда touch. Она создаст пустой файл, используя указанное имя и местоположение.
Для начала убедитесь, что находитесь в домашнем каталоге (здесь у пользователя есть права на сохранение файлов). Затем попробуйте создать файл file1, набрав:
cd
touch file1
Теперь запросите содержимое каталога, и вы увидите новый файл:
ls
file1
Если указать в команде touch уже существующий файл, команда просто обновит данные, хранящиеся в этом файле с момента последнего изменения (на данный момент эта функция не нужна).
Также команда touch может создавать несколько файлов одновременно и использовать абсолютные пути. Например, если пользователь называется demo, можно ввести:
touch /home/demo/file2 /home/demo/file3
ls
file1 file2 file3
Команда mkdir: создание каталогов
Подобно команде touch, команда mkdir позволяет создавать пустые каталоги.
Например, чтобы создать каталог test в домашнем каталоге, нужно ввести:
cd
mkdir test
Чтобы добавить каталог example в каталог test, введите:
mkdir test/example
Чтобы эта команда сработала, каталог верхнего уровня (в данном случае это test) должен уже существовать в системе. Чтобы команда mkdir создала все каталоги, указанные в пути, используйте опцию –р. Она создаёт вложенные каталоги. К примеру, чтобы создать все каталоги в пути some/other/directories, нужно ввести:
mkdir -p some/other/directories
Команда создаст каталоги some, other и directories в порядке их перечисления.
Команда mv: перемещение и переименование файлов и каталогов
Чтобы переместить файл в новое место, используйте mv. К примеру, чтобы переместить файл file1 в каталог test, нужно ввести:
mv file1 test
В команде указываются элементы, которые нужно переместить, а затем точка в системе, в которую их нужно переместить. Чтобы вернуть файл в предыдущее место (в домашний каталог), поставьте после пути к файлу точку. Перейдите в домашний каталог и введите:
cd
mv test/file1 .
Команда mv также используется для переименования файлов и каталогов (хотя интуитивно это понять сложно). По сути, перемещение и переименование – это всего лишь настройка местоположения и имени существующего элемента.
Чтобы переименовать каталог test в testing, введите:
mv test testing
Примечание. Важно понимать, что система Linux не предотвращает некоторые разрушительные по отношению к ней действия. Например, если вы переименовываете файл и выбираете уже существующее имя, предыдущий файл будет перезаписан файлом, который вы в него перемещаете. Восстановить предыдущий файл невозможно.
Команда cp: копирование файлов и каталогов
Команда cp может создать копию существующего элемента.
К примеру, можно скопировать файл file3 в новый файл file4.
cp file3 file4
Теперь у вас есть два файла: file3 и file4.
Примечание: Как и в случае с командой mv, вы можете случайно перезаписать файл, если укажете имя существующего файла в качестве целевого. Например, если file4 уже существует, его содержимое будет полностью заменено содержимым file3 и восстановить его не получится.
Чтобы скопировать каталог, добавьте опцию –r. Она копирует каталог и всё его содержимое. Её нужно использовать даже тогда, когда вы копируете пустой каталог.
Например, скопируйте структуру каталогов some в новую структуру again:
cp -r some again
В отличие от файлов, которые перезаписывают целевой файл, если такой существует, каталоги будут просто скопированы в целевой каталог.
cp file1 again
Эта команда создаст копию файла file1 в каталоге again.
Команды rm и rmdir: удаление файлов и каталогов
Команда rm удаляет файлы.
Примечание: Будьте предельно внимательны при работе с rm. Система не может отменить её действия, потому вы можете навсегда утратить важные данные.
Чтобы удалить обычный файл, просто укажите его имя:
cd
rm file4
Команда rmdir удаляет пустые каталоги. На будет выполнена только тогда, когда указанный в ней каталог пуст. Например, чтобы удалить каталог example, можно ввести:
rmdir testing/example
Чтобы удалить каталог, в котором находятся какие-либо элементы, нужно использовать команду rm с опцией –r, которая удалит все содержимое каталога, а затем и сам каталог.
К примеру, чтобы удалить каталог again, нужно ввести:
rm -r again
4: Редактирование файлов
Теперь вы можете управлять файлами и каталогами сервера. В этом разделе вы научитесь редактировать содержимое файлов.
Команда nano – один из самых простых текстовых редакторов командной строки Linux. Редактор nano использует less и занимает терминал в течение всего времени работы.
Редактор nano может открыть существующие файлы или создать файл. Если вы хотите создать новый файл, вы можете присвоить ему имя при вызове редактора nano или во время сохранения файла.
Чтобы отредактировать file1, введите:
cd
nano file1
Приложение nano откроет файл (который на данный момент пуст). Интерфейс выглядит так:
GNU nano 2.2.6 File: file1
[ Read 0 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
Вверху указывается имя приложения и имя редактируемого файла. В центре находится содержимое файла (в данном случае там нет ничего, поскольку файл пуст). В конце перечислены комбинации клавиш для управления редактором (символ ^ везде означает клавишу CTRL).
Чтобы запросить справку в редакторе, введите:
CTRL-G
Чтобы закрыть справку, введите:
CTRL-X
В редакторе можно вводить или изменять любой текст. Например, можно добавить в файл:
Hello there.
Here is some text.
Чтобы сохранить изменения, нажмите CTRL-O. Программа попросит подтвердить имя файла, который вы хотите сохранить.
File Name to Write: file1
^G Get Help M-D DOS Format M-A Append M-B Backup File
^C Cancel M-M Mac Format M-P Prepend
Как видите, внизу уже указаны другие опции. Редактор выводит их в зависимости от контекста (это означает, что они будут меняться в зависимости от того, что вы пытаетесь сделать). Если вы хотите сохранить изменения в file1, просто нажмите Enter.
Внесите в файл некоторые дополнительные изменения, попробуйте сохранить его и выйти из программы. После этого вы увидите:
Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
Y Yes
N No ^C Cancel
Чтобы сохранить изменения, введите Y. Чтобы не сохранять, нажмите N. Чтобы не закрывать файл, нажмите CTRL-C. Если вы захотите сохранить изменения, программа предложит снова выбрать имя файла для сохранения. Чтобы сохранить в текущий файл и закрыть редактор, нажмите Enter.
Чтобы просмотреть содержимое файла, используйте cat или less.
less file1
Hello there.
Here is some text.
Another line.
В некоторых системах используется редактор vim или vi. Это более продвинутый и производительный редактор, но с ним сложно работать. Вместо vim или vi всегда можно использовать nano.
Читайте также: Установка и использование текстового редактора Vim
Заключение
Теперь у вас есть общее представление о том, как работает и выглядит сервер Linux.
Читайте также: Привилегии в Linux: что это и как с этим работать