Базовая навигация Linux и управление файлами

Вступление

Если у вас нет большого опыта работы с системами Linux, вы можете быть поражены перспективой управления операционной системой из командной строки. В этом руководстве мы попытаемся познакомить вас с основами.

Это руководство не охватывает все, что вам нужно знать для эффективного использования системы Linux. Тем не менее, это должно дать вам хорошую отправную точку для будущих исследований. Это руководство даст вам необходимый минимум, который вам необходимо знать, прежде чем переходить к другим руководствам.

Предпосылки и цели

Чтобы следовать этому руководству, вам потребуется доступ к серверу Linux. Если вам нужна информация о первом подключении к серверу, вы можете подписаться наour guide on connecting to a Linux server using SSH.

Вы также захотите иметь общее представление о том, как работает терминал и как выглядят команды Linux. This guide covers terminal basics, поэтому вам стоит проверить его, если вы новичок в использовании терминалов.

Все материалы в этом руководстве могут быть выполнены с помощью обычной учетной записи пользователя без полномочий root (без прав администратора). Вы можете узнать, как настроить этот тип учетной записи пользователя, следуя руководству по начальной настройке сервера вашего дистрибутива (Ubuntu 14.04,CentOS 7).

Когда вы будете готовы начать, подключитесь к вашему Linux-серверу, используя SSH, и продолжайте ниже.

Навигация и разведка

Самые фундаментальные навыки, которые вам необходимо освоить, - это перемещаться по файловой системе и получать представление о том, что вас окружает. Мы обсудим инструменты, которые позволяют вам сделать это в этом разделе.

Поиск того, где вы находитесь, с помощью команды «pwd»

Когда вы входите на свой сервер, вы обычно попадаете вhome directory своей учетной записи. Домашний каталог - это каталог, выделенный для вашего пользователя для хранения файлов и создания каталогов. Это место в файловой системе, где вы полностью доминируете.

Чтобы узнать, где находится ваш домашний каталог по отношению к остальной файловой системе, вы можете использовать командуpwd. Эта команда отображает каталог, в котором мы сейчас находимся:

pwd

Вы должны получить некоторую информацию, которая выглядит следующим образом:

/home/demo

Домашний каталог назван в честь учетной записи пользователя, поэтому в приведенном выше примере значение будет, если бы вы вошли на сервер с учетной записью с именемdemo. Этот каталог находится в каталоге с именем/home, который сам находится в каталоге верхнего уровня, который называется «root», но представлен одинарной косой чертой «/».

Просмотр содержимого каталогов с «ls»

Теперь, когда вы знаете, как отображать каталог, в котором вы находитесь, мы можем показать вам, как смотреть содержимое каталога.

В настоящее время ваш домашний каталог, который мы видели выше, не имеет особого внимания, поэтому мы перейдем к другому, более заполненному каталогу для изучения. Введите следующую команду в своем терминале, чтобы перейти в этот каталог (подробности перемещения каталогов мы расскажем в следующем разделе). После этого мы будем использоватьpwd, чтобы подтвердить успешное перемещение:

cd /usr/share
pwd
/usr/share

Теперь, когда мы находимся в новом каталоге, давайте посмотрим, что внутри. Для этого мы можем использовать командуls:

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
. . .

Как видите, в этом каталоге естьmany элементов. Мы можем добавить некоторые необязательные флаги в команду, чтобы изменить поведение по умолчанию. Например, чтобы перечислить все содержимое в расширенной форме, мы можем использовать флаг-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», элемент - каталог, если «-», это обычный файл) и разрешения. Каждый последующий столбец, разделенный пробелами, описывает количество жестких ссылок, владельца, владельца группы, размер элемента, время последнего изменения и имя элемента. Мы опишем некоторые из них в другой раз, а пока просто знайте, что вы можете просматривать эту информацию с помощью флага-l дляls.

Чтобы получить список всех файлов, включая файлы и каталогиhidden, вы можете добавить флаг-a. Поскольку в каталоге/usr/share нет настоящих скрытых файлов, давайте вернемся в наш домашний каталог и попробуем эту команду. Вы можете вернуться в домашний каталог, набравcd без аргументов:

cd
ls -a
.  ..  .bash_logout  .bashrc  .profile

Как видите, в этой демонстрации есть три скрытых файла, а также. и.., которые являются специальными индикаторами. Вы обнаружите, что часто файлы конфигурации хранятся как скрытые файлы, как здесь.

Для записей с точками и двойными точками это не просто каталоги, а встроенные методы ссылки на связанные каталоги. Одна точка указывает текущий каталог, а двойная точка указывает родительский каталог этого каталога. Это пригодится в следующем разделе.

Перемещение по файловой системе с помощью «CD»

Мы уже сделали два перемещения каталога, чтобы продемонстрировать некоторые свойстваls в последнем разделе. Давайте лучше посмотрим на команду здесь.

Начните с возврата в каталог/usr/share, набрав следующее:

cd /usr/share

Это пример изменения каталога с помощьюabsolute path. В Linux каждый файл и каталог находятся в самом верхнем каталоге, который называется «корневым» каталогом, но на который указывает одиночная косая черта «/». Абсолютный путь указывает местоположение каталога по отношению к этому каталогу верхнего уровня. Это позволяет нам однозначно обращаться к каталогам из любого места в файловой системе. Каждый абсолютный путьmust начинается с косой черты.

Альтернативой является использованиеrelative paths. Относительные пути относятся к каталогам по отношению к каталогуcurrent. Для каталогов, близких к текущему каталогу в иерархии, это обычно проще и короче. На любой каталог в текущем каталоге можно ссылаться по имени без косой черты. Мы можем перейти в каталог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

Чтобы узнать больше о том, как использовать эти три команды, вы можете проверитьour guide on exploring the Linux filesystem.

Просмотр файлов

В последнем разделе мы немного узнали о том, как перемещаться по файловой системе. Вероятно, вы видели какие-то файлы при использовании командыls в разных каталогах. В этом разделе мы обсудим различные способы, которые вы можете использовать для просмотра файлов. В отличие от некоторых операционных систем, 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, чтобы выйти:

q

Хотя в этом разделе мы сосредоточили внимание на инструментеless, есть много других способов просмотра файла, которые могут пригодиться в определенных обстоятельствах. Командаcat отображает содержимое файла и немедленно возвращает вас к запросу. Командаhead по умолчанию показывает первые 10 строк файла. Аналогично, командаtail по умолчанию показывает последние 10 строк. Эти команды отображают содержимое файла таким образом, который полезен для «передачи» в другие программы. Мы обсудим эту концепцию в будущем руководстве.

Не стесняйтесь видеть, как эти команды по-разному отображают файл/etc/services.

Управление файлами и каталогами

В последнем разделе мы узнали, как просмотреть файл. В этом разделе мы продемонстрируем, как создавать файлы и каталоги и управлять ими.

Создайте файл с помощью «touch»

Многие команды и программы могут создавать файлы. Самый простой способ создания файла - использовать командуtouch. Это создаст пустой файл с использованием указанного имени и местоположения.

Во-первых, мы должны убедиться, что мы находимся в нашем домашнем каталоге, так как это место, где у нас есть разрешение на сохранение файлов. Затем мы можем создать файл с именемfile1, набрав:

cd
touch file1

Теперь, если мы просмотрим файлы в нашем каталоге, мы увидим наш недавно созданный файл:

ls
file1

Если мы используем эту команду в существующем файле, команда просто обновляет данные, которые наша файловая система хранит в момент последнего доступа к файлу и его изменения. Это не будет иметь большого смысла для нас в данный момент.

Мы также можем создавать несколько файлов одновременно. Мы также можем использовать абсолютные пути. Например, если наша учетная запись пользователя называетсяdemo, мы могли бы ввести:

touch /home/demo/file2 /home/demo/file3
ls
file1  file2  file3

Создайте каталог с помощью «mkdir»

Подобно командеtouch, командаmkdir позволяет нам создавать пустые каталоги.

Например, чтобы создать в нашем домашнем каталоге каталог с именемtest, мы могли бы ввести:

cd
mkdir test

Мы можем сделать каталогwithin каталогомtest с именемexample, набрав:

mkdir test/example

Чтобы указанная выше команда работала, каталогtest должен уже существовать. Чтобы сообщитьmkdir, что он должен создать любые каталоги, необходимые для создания заданного пути к каталогу, вы можете использовать параметр-p. Это позволяет создавать вложенные каталоги за один шаг. Мы можем создать структуру каталогов, которая выглядит какsome/other/directories, набрав:

mkdir -p some/other/directories

Команда сначала создаст каталогsome, затем внутри него будет создан каталогother. Наконец, в этих двух каталогах будет создан каталогdirectories.

Перемещение и переименование файлов и каталогов с помощью «mv»

Мы можем переместить файл в новое место с помощью командыmv. Например, мы можем переместитьfile1 в каталогtest, набрав:

mv file1 test

Для этой команды мы даем все элементы, которые мы хотим переместить, с местом для их перемещения в конце. Мы можем переместить этот файлback в наш домашний каталог, используя специальную точечную ссылку для ссылки на наш текущий каталог. Мы должны убедиться, что мы находимся в нашем домашнем каталоге, а затем выполнить команду:

cd
mv test/file1 .

Сначала это может показаться нелогичным, но командаmv также используется для файлов и каталоговrename. По сути, перемещение и переименование - это просто настройка местоположения и имени для существующего элемента.

Итак, чтобы переименовать каталогtest вtesting, мы могли бы ввести:

mv test testing

Note: Важно понимать, что ваша система Linux не будет препятствовать вам от определенных деструктивных действий. Если вы переименовываете файл и выбираете имя, при котором существуетalready, предыдущий файл будетoverwritten в соответствии с перемещаемым файлом. Невозможно восстановить предыдущий файл, если вы случайно его перезаписали.

Копирование файлов и каталогов с помощью «cp»

С помощью командыmv мы могли перемещать или переименовывать файл или каталог, но не могли их дублировать. Командаcp может создать новую копию существующего элемента.

Например, мы можем скопироватьfile3 в новый файл с именемfile4:

cp file3 file4

В отличие от операцииmv, после которойfile3 больше не будет существовать, теперь у нас есть какfile3, так иfile4.

Note: Как и в случае с командойmv, можноoverwrite файл, если вы не будете осторожны с именем файла, которое вы используете в качестве цели операции. Например, еслиfile4 уже существует в приведенном выше примере, его содержимое будет полностью заменено содержимымfile3.

Чтобы скопировать каталоги, вы должны включить в команду параметр-r. Это означает «рекурсивный», поскольку он копирует каталог, а также все содержимое каталога. Эта опция необходима для каталогов, независимо от того, является ли каталог пустым.

Например, чтобы скопировать структуру каталоговsome в новую структуру с именемagain, мы могли бы ввести:

cp -r some again

В отличие от файлов, для которых существующее место назначения приведет к перезаписи, если целью являетсяexisting directory, файл или каталог копируетсяinto целью:

cp file1 again

Это создаст новую копиюfile1 и поместит ее в каталогagain.

Удаление файлов и каталогов с помощью «rm» и «rmdir»

Чтобы удалить файл, вы можете использовать командуrm.

Note: будьте предельно осторожны при использовании любых деструктивных команд, напримерrm. Для этих действий нет команды «отменить», поэтому можно случайно уничтожить важные файлы.

Чтобы удалить обычный файл, просто передайте его командеrm:

cd
rm file4

Аналогичным образом, чтобы удалить каталогиempty, мы можем использовать командуrmdir. Это будет успешно выполнено, только если в указанном каталоге ничего нет. Например, чтобы удалить каталогexample из каталогаtesting, мы можем ввести:

rmdir testing/example

Если вы хотите удалить каталогnon-empty, вам придется снова использовать командуrm. На этот раз вам нужно будет передать параметр-r, который рекурсивно удаляет все содержимое каталога, а также сам каталог.

Например, чтобы удалить каталогagain и все, что в нем, мы можем ввести:

rm -r again

Еще раз, стоит повторить, что это постоянные действия. Будьте полностью уверены, что введенная вами команда - та, которую вы хотите выполнить.

Редактирование файлов

В настоящее время мы знаем, как манипулировать файлами как объектами, но мы не научились на самом деле редактировать их и добавлять к ним контент.

Командаnano - один из простейших текстовых редакторов Linux для командной строки, который является отличной отправной точкой для новичков. Она работает в некоторой степени аналогично программе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».

Если мы сделаем некоторые дополнительные изменения и захотим сохранить файл и выйти из программы, мы увидим аналогичное приглашение. Добавьте новую строку и попробуйте выйти из программы, набрав:

CTRL-X

Если вы не сохранили после внесения изменений, вас спросят, хотите ли вы сохранить сделанные вами изменения:

Save modified buffer (ANSWERING "No" WILL DESTROY CHANGES) ?
 Y Yes
 N No           ^C Cancel

Вы можете нажать «Y», чтобы сохранить изменения, «N», чтобы отменить изменения и выйти, или «CTRL-C», чтобы отменить операцию выхода. Если вы решите сохранить, вам будет выдан тот же файл, который вы получили ранее, подтверждающий, что вы хотите сохранить изменения в том же файле. Нажмите ENTER, чтобы сохранить файл и выйти из редактора.

Вы можете просмотреть содержимое созданного файла с помощью программыcat для отображения содержимого или программыless для открытия файла для просмотра. После просмотра с помощьюless, помните, что вы должны нажатьq, чтобы вернуться к терминалу.

less file1
Hello there.

Here is some text.

Another line.

Другой редактор, на который вы можете ссылаться в некоторых руководствах, - этоvim илиvi. Это более продвинутый редактор, который очень мощный, но имеет очень крутой курс обучения. Если вам когда-либо говорили использоватьvim илиvi, не стесняйтесь использовать вместо этогоnano. Если вы хотите узнать, как использоватьvim, прочтите нашguide to getting started with vim.

Заключение

К настоящему времени у вас должно быть общее представление о том, как обойти ваш сервер Linux и как просмотреть доступные файлы и каталоги. Вы также должны знать некоторые основные команды управления файлами, которые позволят вам просматривать, копировать, перемещать или удалять файлы. Наконец, вы должны освоить базовое редактирование с помощью текстового редактораnano.

Используя эти несколько навыков, вы сможете продолжить работу с другими руководствами и узнать, как максимально эффективно использовать свой сервер. В следующем руководстве мы обсудимhow to view and understand Linux permissions.

Related