Поиск по сайту:

Как использовать cd, pwd и ls для исследования файловой системы на сервере Linux


Введение

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

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

Нам всем нужно с чего-то начинать, поэтому в этой статье мы рассмотрим самые основы: как перемещаться по вашей системе и узнавать, что там есть.

Предпосылки

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

Когда вы создаете новый дроплет DigitalOcean, вам будет отправлен пароль по электронной почте и предоставлен IP-адрес для доступа к вашему новому серверу. Используйте связанную статью, чтобы узнать, как подключиться к вашему VPS.

  1. ssh root@your_IP

Другой вариант — использовать кнопку «Доступ к консоли» в правом верхнем углу панели управления DigitalOcean. Это создаст сеанс виртуального терминала прямо в окне вашего веб-браузера.

Узнайте, где вы находитесь, с pwd

На этом этапе вы должны войти в свою машину с Linux. Скорее всего, вы увидите что-то похожее на это:

root@your_hostname:~# 

Это подсказка. Здесь мы вводим команды.

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

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

Командная строка — это просто текстовое представление той же идеи.

Итак, где именно мы находимся в нашей файловой системе? В самой подсказке есть одна подсказка. Прямо перед символом # или $ в конце приглашения (это будет зависеть от того, под каким пользователем вы вошли в систему), вы увидите символ тильды (~) . Это означает ваш «домашний» каталог.

Ваш домашний каталог — это место, где хранятся файлы вашего пользователя. Символ ~ является сокращением для этого каталога.

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

Введите эти символы в свой терминал и нажмите ENTER:

pwd
/root

Каталог /root — это домашний каталог пользователя root (администратора). Если вы вошли в систему как другой пользователь, вместо этого вы увидите что-то вроде этого:

  1. pwd
/home/your_username

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

Оглядываясь вокруг с ls

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

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

ls

Это должно просто вернуть вас в командную строку и не дать вам никакой информации. Команда не сработала? Нет, это удалось, просто он не нашел никаких файлов или папок в вашем текущем каталоге.

Давайте создадим несколько тестовых файлов, чтобы увидеть, как ведет себя ls, когда в этом каталоге есть файлы. Введите это, чтобы создать несколько файлов:

touch file{1..5}

Это создаст 5 файлов с именами file1, file2, …, 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

Это показывает нам те же пять файлов, но показывает их в «длинном» формате. Это дает нам больше информации о файлах, таких как владелец (первый «корень»), владелец группы (второй «корень») , размер файла ( 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 в других каталогах

По умолчанию 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
. . .

Здесь мы видим, что в этом каталоге много файлов.

Любой путь к каталогу, который начинается с косой черты (/), называется «абсолютным» путем. Это связано с тем, что он ссылается на путь к каталогу именно из самого верхнего каталога, корневого каталога, который указывается символом \/. .

Другой способ сослаться на каталог — использовать «относительный» путь. Он будет искать каталог относительно каталога, в котором вы сейчас находитесь. Эти спецификации каталога не начинаются с косой черты.

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

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

Если мы не начинаем указание пути с косой черты, операционная система ищет путь к каталогу, начинающийся с текущего каталога.

Передвигаться

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

Но как нам изменить наш рабочий каталог? Изменение нашего рабочего каталога позволит нам использовать относительные пути из другого места. Обычно легче работать с файлами из каталога, в котором они находятся.

Мы можем перемещаться по файловой иерархии с помощью команды cd. Эта команда означает изменение каталогов.

В его самом простом использовании мы можем просто ввести:

cd

Это ничего не даст. На самом деле это не так. Что делает cd без дополнительной информации, так это переходит в ваш домашний каталог. Поскольку мы уже находимся в нашем домашнем каталоге, команде нечего делать.

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

  1. cd /path/to/directory

В этом случае вместо /path/to/directory следует указать путь к каталогу, в который вы хотите перейти. Например, чтобы перейти в корневой каталог, указанный одной косой чертой (/), который является вершиной дерева, мы можем ввести:

cd /

Примечание. Корневой каталог (указанный косой чертой \/) отличается от домашнего каталога пользователя 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. Как нам вернуться в корневой каталог? Мы могли бы ввести ту же команду cd /, что и раньше, но давайте попробуем что-нибудь другое.

Попробуем продвинуться вверх по дереву, используя относительные пути. Как мы можем ссылаться на папку, содержащую нашу текущую папку, используя относительные пути?

Мы можем сослаться на каталог, который содержит наш текущий каталог, используя специальный синтаксис. Каталог, содержащий наш текущий каталог, называется его «родительским» каталогом. Мы можем сослаться на родительский каталог, используя две точки (…).

Вернёмся на уровень выше:

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

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

Как мы уже говорили ранее, символ \~ указывает на наш домашний каталог. Давайте используем его как начало пути к другому каталогу, чтобы перейти к нашему \dir1 внутри нашего дома:

cd ~/dir1
pwd
/root/dir1

Теперь мы очень легко переместились в каталог в нашем домашнем каталоге, используя символ \~” для замены первой части нашего пути.

Но что, если мы забыли что-то сделать перед сменой каталогов и хотим вернуться к нашему последнему каталогу? Мы можем вернуться в наш предыдущий каталог, набрав:

cd -
pwd
/

Мы вернулись в наш последний каталог.

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

cd
pwd
/root

Как видите, мы снова вернулись в наш домашний каталог.

Заключение

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