Как использовать cd, pwd и ls для исследования файловой системы на сервере Linux
Введение
Знакомство с командной строкой — это первый шаг к использованию возможностей серверной платформы Linux. Это также необходимая предпосылка практически для всех действий, связанных с сервером, которые вы можете выполнять в этой среде.
Хотя для многих инструментов существуют графические альтернативы, изучение командной строки — это навык, который позволит вам работать с эффективностью, скоростью и гибкостью, что невозможно при использовании большинства графических пользовательских интерфейсов.
Нам всем нужно с чего-то начинать, поэтому в этой статье мы рассмотрим самые основы: как перемещаться по вашей системе и узнавать, что там есть.
Предпосылки
Эта статья очень базовая, поэтому она не требует больших предварительных знаний. Однако вам нужно будет войти в свой экземпляр VPS, чтобы начать изучение. Варианты, которые у вас есть для этого, во многом зависят от операционной системы, которую вы используете дома.
Когда вы создаете новый дроплет DigitalOcean, вам будет отправлен пароль по электронной почте и предоставлен IP-адрес для доступа к вашему новому серверу. Используйте связанную статью, чтобы узнать, как подключиться к вашему VPS.
- ssh root@your_IP
Другой вариант — использовать кнопку «Доступ к консоли» в правом верхнем углу панели управления DigitalOcean. Это создаст сеанс виртуального терминала прямо в окне вашего веб-браузера.
Узнайте, где вы находитесь, с pwd
На этом этапе вы должны войти в свою машину с Linux. Скорее всего, вы увидите что-то похожее на это:
root@your_hostname:~#
Это подсказка. Здесь мы вводим команды.
Но это еще не все. Вы также находитесь в определенном месте в файловой системе сервера. Вы всегда будете находиться в том или ином месте файловой иерархии вашего сервера, и это влияет на то, как будут работать вводимые вами команды.
Это похоже на то, когда вы открываете файловый браузер на локальном компьютере. Вы можете нажимать на разные папки, чтобы перемещаться в разные места в файловой системе. Если вы перейдете в меню редактирования вашего файлового браузера, у вас могут быть некоторые параметры, которые будут применяться к элементам в конкретной папке, в которой вы находитесь.
Командная строка — это просто текстовое представление той же идеи.
Итак, где именно мы находимся в нашей файловой системе? В самой подсказке есть одна подсказка. Прямо перед символом #
или $
в конце приглашения (это будет зависеть от того, под каким пользователем вы вошли в систему), вы увидите символ тильды (~) . Это означает ваш «домашний» каталог.
Ваш домашний каталог — это место, где хранятся файлы вашего пользователя. Символ ~ является сокращением для этого каталога.
Еще один способ узнать, где вы находитесь в файловой системе, — это использовать команду pwd
. Это будет ваша первая команда!
Введите эти символы в свой терминал и нажмите ENTER:
pwd
/root
Каталог /root
— это домашний каталог пользователя root (администратора). Если вы вошли в систему как другой пользователь, вместо этого вы увидите что-то вроде этого:
- 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
без дополнительной информации, так это переходит в ваш домашний каталог. Поскольку мы уже находимся в нашем домашнем каталоге, команде нечего делать.
Более общее представление о том, как использовать команду, выглядит следующим образом:
- 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
Как видите, мы снова вернулись в наш домашний каталог.
Заключение
Теперь у вас должны быть инструменты, необходимые для изучения файловой системы. Вы еще не знаете, как исследовать файлы, но вы должны иметь возможность легко перемещаться по системе, отслеживать, где вы находитесь, и видеть файлы, которые находятся вокруг вас.