Навигация по файлам и директориям
В прошлый раз мы хаотично вводили текст в командную строку Linux и получали сообщения об ошибках. Все это время мы находились внутри домашнего каталога. Сегодня мы попытаемся разобраться как перемещаться по папкам при помощи команд и просматривать их содержимое.
Но для начало необходимо понять устройство файловой структуры Linux. Она представляет собой иерархическую структуру. То есть файловая система организована на подобии директорий (они же папки и каталоги), в которых расположены иные директории и файлы. Верхняя директория файловой системы называется корневой директорией. Внутри корневой директории расположены файлы и директории, которые содержат файлы и директории.
В графическом интерфейсе структура директорий выглядит следующим образом.
В отличии от файловой организации Windows, где корневыми директориями являются диски, в Linux есть единственное дерево и только одна корневая директория, которая не ассоциируется с каким либо физическим дисковым устройством. Различные диски могут быть подключены как поддеревья (директории) внутри этого дерева.
Разморозим нашу виртуальную машину и сделаем первые шаги в освоении организации файловой структуры Linux 🙂
Рабочая директория и её содержание
Так как интерфейс командной строки не может графически показать файловую структуру, существует иной способ ее представления. Представим, что дерево файлов является лабиринтом, в котором мы находимся. В каждый момент мы находимся в одной из директорий данного лабиринта. Внутри нее мы видим путь к родительской директории, файлы и пути во вложенные директории.
Директория в которой мы находимся называется рабочей директорией. Чтобы узнать имя рабочей директории, воспользуемся командой pwd (print working directory — вывести рабочую директорию).
Введем команду pwd в окно терминала.
Базовые команды в Linux для начинающих
Обновл. 28 Апр 2021 |
Для пользователей из мира Windows взаимодействие с командной строкой в Linux поначалу может показаться несколько пугающей и запутанной затеей. Однако использовать её не так уж и сложно. В этой статье мы рассмотрим наиболее распространенные команды в Linux.
Навигация по файловой системе
При навигации по файловой системе в Linux можно использовать как абсолютный, так и относительный пути к ресурсу.
Команда pwd
Команда pwd (от англ. «present working directory») позволяет узнать, в каком каталоге вы находитесь в данный момент:
Результатом будет путь к текущему рабочему каталогу:
Команда cd
Команда cd (от англ. «change directory») используется для смены текущего рабочего каталога. При использовании без каких-либо параметров, команда cd перенесет вас в ваш домашний каталог:
Чтобы перейти в другой каталог, вы можете использовать абсолютный или относительный путь. Например, перейти в папку Downloads, расположенную в текущем каталоге, можно как через относительный путь:
Так и через абсолютный путь:
Чтобы подняться на два уровня вверх:
Чтобы вернуться к предыдущему рабочему каталогу, используйте символ тире – в качестве опции:
Если каталог, который вы хотите изменить, имеет пробелы в своем имени, то вы должны либо взять путь в кавычки, либо использовать символ обратной косой черты \ :
$ cd имя\ каталога\ с\ пробелами
Работа с файлами и каталогами
Команда ls
Команда ls (от англ. «list») выводит информацию о файлах и каталогах внутри заданного каталога. При использовании без параметров, данная команда отобразит в алфавитном порядке список имен всех файлов в текущем рабочем каталоге:
Чтобы вывести содержимое конкретного каталога, достаточно указать путь к этому каталогу в качестве параметра:
Выходные данные будут содержать информацию о типе файла, разрешениях, количестве ссылок на него, владельце, группе, размере, дату и имя файла:
-rw-r—r— 1 root root 337 Oct 4 11:31 /etc/hosts
Команда file
Файлы в Linux не обязаны всегда иметь расширения для того, чтобы с ними можно было работать. Поэтому пользователю иногда трудно определить, что за файл перед ним. Команда file помогает решить данную проблему, отображая информацию о типе файла на основе его содержания:
/etc/fstab: ASCII text
Команда file может работать и с директориями, например:
/tmp/: sticky, directory
Команда touch
Команда touch используется для создания новых пустых файлов, а также для обновления временных меток в уже существующих файлов и каталогов.
Чтобы создать новый файл, используйте команду touch с именем (создаваемого) файла в качестве параметра:
Если файл уже существует, команда touch изменит отметку о времени последнего доступа (или изменения) к нему.
Команда mkdir
Команда mkdir (от англ. «make directory») позволяет создавать новые каталоги. Для этого укажите имя каталога в качестве параметра:
В качестве параметров команда mkdir может принимать одно или несколько имен каталогов. Если параметром является имя каталога без полного пути, то новый каталог создастся в текущем рабочем каталоге.
Вышеприведенная команда создаст полную структуру каталогов.
Команда rmdir
Команда rmdir (от англ. «remove directory») используется для удаления (только) пустых каталогов:
Команда ln
Если в качестве параметра указан только файл, команда ln создаст в текущем рабочем каталоге ссылку на этот файл с тем же именем, что у файла.
Команда rm
Команда rm (от англ. «remove») используется для удаления файлов и каталогов. При указании без параметров данная команда удаляет только файлы. Стоит отметить, что при этом команда не запрашивает у пользователя подтверждения на продолжение удаления файлов.
Чтобы удалить файл или символьную ссылку, используйте команду rm и имя файла в качестве параметра:
Также в качестве параметров допускается указывать одно или несколько имен файлов или каталогов.
rm: удалить пустой обычный файл ‘file.txt’?
Команда cp
Команда cp (от англ. «copy») позволяет копировать файлы и каталоги. Чтобы скопировать файл в текущий рабочий каталог, используйте исходный файл в качестве первого параметра, а новый файл — в качестве второго:
$ cp file file_backup
Чтобы скопировать файл в другой каталог, укажите абсолютный или относительный путь к целевому каталогу. Если в качестве места назначения указано только имя каталога, то скопированный файл будет иметь то же имя, что и исходный файл.
По умолчанию, если файл назначения существует, он будет перезаписан.
Команда mv
Команда mv (от англ. «move») используется для перемещения файлов и каталогов из одного места в другое, а также для переименования файлов. Например, чтобы переместить файл file.txt в каталог /tmp, вы должны выполнить:
Чтобы переименовать файл, необходимо указать имя целевого файла, а затем его новое имя:
$ mv file.txt file1.txt
Синтаксис перемещения каталогов такой же, как и при перемещении файлов. Чтобы одновременно переместить несколько файлов и каталогов, укажите конечный каталог в качестве последнего параметра:
$ mv file.tx1 file1.txt /tmp
Команда tar
Команды zip и unzip
Чтобы создать архив из нескольких файлов, просто укажите имя создаваемого архива и перечислите список помещаемых в него файлов:
$ zip newarchive.zip file1 file2 file3
$ zip –r newarchive.zip /home/diego/mydocs/
Также, цифрами от 0 (без сжатия, быстро) до 9 (максимальное сжатие, медленно) вы можете указывать степень сжатия будущего архива. По умолчанию, используется 6-й уровень сжатия:
Для извлечения содержимого архива в текущий каталог используется команда unzip :
$ unzip myarchive.zip –d /tmp/
Команда find
Команда find выполняет поиск файлов и каталогов в заданном каталоге. Например, следующая команда будет искать файл с именем notes.txt в каталоге /home и его подкаталогах:
Команда df
Команда du
Владение файлами и права доступа
Команда chmod
Команда chmod (от англ. «change mode») позволяет изменить права доступа к файлам. Она работает в двух режимах: символьном и числовом.
При использовании числового режима вы можете установить разрешения для владельца, группы и всех остальных при помощи заданного набора чисел. Разрешения на запись, чтение и выполнение имеют следующие числовые значения:
Совокупность разрешений для определенного класса пользователей описывается суммой соответствующих значений разрешений. Например, чтобы дать владельцу файла права на чтение и запись, а также только права на чтение членам группы и всем другим пользователям, необходимо выполнить:
$ chmod 644 имя_файла
Только пользователь root, владелец файла или пользователь с правами sudo могут изменять права доступа к файлу.
Команда chown
Команда chown (от англ. «change owner») позволяет изменить владельца и группу заданного файла, каталога или символьной ссылки.
Чтобы изменить владельца файла, достаточно выполнить:
$ chown имя_пользователя имя_файла
Чтобы изменить как владельца, так и группу файла, вызовите:
$ chown имя_пользователя:имя_группы имя_файла
Команда sudo
Управление пользователями и группами
Команда uname
Linux debian 5.10.0-6-amd64 #1 SMP Debian 5.10.28-1 (2021-04-09) x86_64 GNU/Linux
Команды useradd и passwd
Команда useradd позволяет создавать новых пользователей. Чтобы создать новую учетную запись пользователя, вызовите команду useradd вместе с именем нового пользователя:
После создания пользователя установите ему пароль, выполнив команду passwd:
Команда userdel
Команда userdel используется для удаления учетной записи пользователя:
Команды groupadd и groupdel
Команда groupadd используется для создания новой группы. Просто укажите название группы в качестве параметра:
Чтобы удалить группу, используйте команду groupdel с именем группы в качестве параметра:
Команда usermod
Управление процессами
Команда top
Команда top отображает в режиме реального времени список запущенных процессов, их числовые идентификаторы (сокр. «PID» от англ. «Process IDentificator») и насколько сильно каждый из них нагружает CPU:
Команда kill
Если у вас есть зависшая программа, то вы можете вручную завершить её работу, послав с помощью команды kill соответствующий сигнал.
Всего существует 64 различных сигнала, но самыми популярными являются два:
SIGTERM (15) — сигнал завершения работы программы, при котором ей дается некоторое время, чтобы сохранить свой прогресс и данные.
SIGKILL (9) — сигнал, требующий от программы немедленного завершения. Все несохраненные данные при этом будут потеряны.
Например, зная PID нужного вам процесса, послать ему сигнал можно следующим образом:
Работа с сетью
Команда ping
Команда ping применяется в тех случаях, когда необходимо проверить состояние подключения к серверу. Например:
Данная команда проверит, сможете ли вы подключиться к сайту Ravesli, а также измерит и отобразит время отклика.
Команда wget
Команда wget пригодится вам, если вы собираетесь загрузить из Интернета какие-либо файлы (или страницы сайтов). Она поддерживает протоколы HTTP, HTTPS, FTP, а также работу через прокси-серверы. Для загрузки нужного вам файла просто передайте его адрес в качестве параметра команде wget :
Команда hostname
Работа с текстом
Команда head
Команда tail
Команда tail отображает последние десять строк текстового файла:
Команда diff
Команда diff (от англ. «difference») производит построчное сравнение содержимого двух файлов. После анализа файлов, выводится список несовпадающих строк. Программисты часто используют данную команду, когда им нужно внести некоторые изменения в исходный код программы:
$ diff file1.txt file2.txt
Команда grep
Команда grep (от англ. «search globally for lines matching the regular expression, and print them») позволяет искать указанный текст в указанном файле, например:
$ grep blue notepad.txt
Вышеприведенная команда будет искать слово blue в файле notepad.txt и выведет все строки, в которых содержится искомое слово.
Команда echo
Команда echo используется для вывода в терминал строки, указанной ей в качестве параметра. Часто команда echo применяется для перемещения некоторых данных в файл. Например, если вы хотите добавить строку «Hello, world!» в файл с именем name.txt, выполните:
$ echo «Hello, world!» >> name.txt
Команда cat
Команда cat (от англ. «concatenate») отображает содержимое одного или нескольких файлов. Чтобы отобразить содержимое файла, необходимо указать его имя в качестве параметра команды cat :
Установка и удаление пакетов
Менеджер пакетов — это инструмент, который позволяет устанавливать, обновлять, удалять и иным образом управлять пакетами программного обеспечения, специфичными для дистрибутива Linux. Различные дистрибутивы Linux имеют различные менеджеры и форматы пакетов.
Только root или пользователь с привилегиями sudo может устанавливать и удалять пакеты.
apt (Ubuntu и Debian)
apt (от англ. «Advanced Package Tool») — это система управления пакетами, используемая дистрибутивами на базе Debian. В дистрибутивах на базе Debian существует несколько инструментов управления пакетами с помощью командной строки, причем наиболее часто используются apt и apt-get.
Перед установкой нового пакета сначала необходимо обновить информацию о пакетах:
Индекс apt — это база данных, содержащая записи доступных в репозиториях пакетов, подключенных в вашей системе.
Чтобы обновить установленные пакеты до последних версий, выполните:
Установка пакетов так же проста:
$ apt install имя_пакета
Чтобы удалить установленный пакет, введите:
$ apt remove имя_пакета
dnf (CentOS и Fedora)
rpm (сокр. от англ. «Red Hat Package Manager») — это мощная система управления пакетами, используемая в дистрибутивах от Red Hat и производных дистрибутивах, таких как: CentOS и Fedora. С rpm также связаны команда rpm и .rpm-формат пакетов.
Чтобы установить новый пакет в дистрибутивах от Red Hat, вы можете использовать команду yum или dnf:
$ dnf install имя_пакета
Чтобы обновить установленные пакеты до последних версий, введите:
Удаление пакетов так же просто, как:
$ dnf remove имя_пакета
Справка
Параметр help
Команда man
Почти все команды в Linux распространяются вместе с man-страницами (от англ. «manual») — документацией, которая объясняет, что делает команда, приводит примеры того, как следует применять команду и какие параметры и опции она поддерживает.
Команда man применяется для отображения страницы руководства по заданной команде:
Для навигации по справочным страницам используйте клавиши со стрелочками вверх и вниз. Также вы можете нажать:
клавишу Enter для перемещения на одну строку за раз;
клавишу (Пробел) для перехода к следующему экрану;
клавишу b для возврата на один экран назад;
клавишу q для выхода из справочной страницы.
Команда history
Если вы используете Linux в течение определенного периода времени, вы быстро заметите, что можете выполнять десятки (если не сотни) команд каждый день. Таким образом, запуск команды history особенно полезен, если вы хотите просмотреть ранее введенные команды:
Команда whereis
Команда whereis отображает полный путь к исполняемому файлу программы (или к исходным файлам, если они присутствуют в системе). Например:
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/gcc
Дополнительно
Команда clear используется для очистки терминала, если он загроможден слишком большим количеством данных от прошлых команд
Сочетания клавиш:
Ctrl+C — останавливает и завершает команду;
Ctrl+Z — ставит выполнение команды на паузу;
Ctrl+S — временно приостанавливает вывод информации в терминал;
Ctrl+Q — продолжает вывод информации в терминал;
Ctrl+A — перемещает вас в начало строки;
Ctrl+E — перемещает вас в конец строки.
$ Command1; Command2; Command3
Поделиться в социальных сетях:
Установка Linux совместно с Windows 10 через WSL
Добавить комментарий Отменить ответ
Как в Bash узнать абсолютный путь до файла
Что такое абсолютный и относительный пути
Абсолютный путь содержит полный перечень папок, в которых находится файл, начиная от корня файловой системы.
Пример абсолютного пути: /home/mial/bin/myfile.txt
Преимущество абсолютного пути в том, что используя его можно обратиться к файлу из любой папки системы.
Относительный путь указывает на расположение файла относительно текущей папки. Примеры относительных путей:
Преимущество относительного пути в том, что обычно он обозначается более короткой записью как например myfile.txt — означает одноимённый файл в текущей папке. Очевидно, что при смене рабочей директории относительный путь до файла станет другим.
В этой заметке будут рассмотрены несколько примеров того, как определить абсолютный путь до файла в текущей рабочей директории или любой другой, когда путь до файла указан как относительный путь.
realpath
Первый вариант — использовать команду realpath:
Привет вывода абсолютного пути:

Эта программа является частью coreutils.
По умолчанию эта программа преобразует символические ссылки (опция -P) и показывает расположение файла даже если он не существует (опция -m) — то есть эти опции указывать необязательно.
Фактически, по умолчанию работа программы сводится к тому, что к указанному аргументу она добавляет текущую рабочую папку, то есть можно узнать абсолютный путь даже до файла, который не существует:
Если вас это не устраивает, то используйте опцию -e — тогда если указанный файл не существует, то вместо вывода абсолютного пути будет показано сообщение об ошибке.
readlink
Аналогичную функцию выполняет и команда readlink.
Если вы хотите показать абсолютный путь только для существующих файлов, то используйте опцию -e:
Если вас не волнует, существует ли файл, то используйте опцию -f (не требует существование последнего компонента) или опцию -m (не требует существование какого-либо компонента пути):
realpath и readlink не найдены
UNIX системы — это не только многочисленные дистрибутивы Linux. В некоторых из них команды realpath и readlink могут отсутствовать. Если они отсутствуют и вы не хотите или не можете устанавливать дополнительные бинарные файлы, то выход всё равно есть.
Создайте файл, например, realpath.sh и скопируйте в него:
Этот же вариант в виде функции:
Вот эта же функция в продвинутом варианте — дополнительно обрабатывает ситуацию, когда директория не существует, а также если во вводе присутствуют ‘..’ или ‘.’
Ещё один вариант в виде функции оболочки, который:
И ещё одна функция, записанная в одну строку и работающая в bash и zsh (другие не проверялись):
Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки
Глава 6. Работа с директориями
Команда pwd
Команда cd
приведет к аналогичному эффекту.
Абсолютные и относительные пути
Завершение путей
Утилита ls
Утилита mkdir
Утилита rmdir
Практическое задание: работа с директориями
1. Выведите путь к вашей текущей директории.
2. Перейдите в директорию /etc.
3. А теперь перейдите в вашу домашнюю директорию с помощью ровно трех нажатий клавиш.
4. Перейдите в директорию /boot/grub с помощью ровно одиннадцати нажатий клавиш.
5. Перейдите в родительскую директорию для текущей директории.
6. Перейдите в корневую директорию.
7. Выведите список содержимого корневой директории.
8. Выведите подробный список содержимого корневой директории.
9. Оставаясь в текущей рабочей директории, выведите список содержимого директории /etc.
10. Оставаясь в текущей директории, выведите список содержимого директорий /bin и /sbin.
11. Оставаясь в текущей директории, выведите список содержимого директории
12. Выведите список всех файлов (включая скрытые файлы), находящихся в вашей домашней директории.
13. Выведите список файлов, находящихся в директории /boot, с использованием формата величин для облегчения чтения человеком.
14. Создайте директорию testdir в вашей домашней директории.
15. Перейдите в директорию /etc и, оставаясь в ней, создайте директорию newdir в вашей домашней директории.
16. Создайте с помощью одной команды директории
17. Удалите директорию testdir.
18. Если позволяет время (или вы ждете момента, когда остальные студенты закончат выполнение данного практического задания), попытайтесь воспользоваться командами pushd и popd и понять принцип их работы. Обратитесь к странице руководства man для командной оболочки bash с целью поиска информации о данных командах.
Корректная процедура выполнения практического задания: работа с директориями
1. Выведите путь к вашей текущей директории.
2. Перейдите в директорию /etc.
3. А теперь перейдите в вашу домашнюю директорию с помощью ровно трех нажатий клавиш.
4. Перейдите в директорию /boot/grub с помощью ровно одиннадцати нажатий клавиш.
5. Перейдите в родительскую директорию для текущей директории.
6. Перейдите в корневую директорию.
7. Выведите список содержимого корневой директории.
8. Выведите подробный список содержимого корневой директории.
9. Оставаясь в текущей рабочей директории, выведите список содержимого директории /etc.
10. Оставаясь в текущей директории, выведите список содержимого директорий /bin и /sbin.
11. Оставаясь в текущей директории, выведите список содержимого директории
12. Выведите список всех файлов (включая скрытые файлы), находящихся в вашей домашней директории.
13. Выведите список файлов, находящихся в директории /boot, с использованием формата величин для облегчения чтения человеком.
14. Создайте директорию testdir в вашей домашней директории.
15. Перейдите в директорию /etc и, оставаясь в ней, создайте директорию newdir в вашей домашней директории.
16. Создайте с помощью одной команды директории
17. Удалите директорию testdir.
18. Если позволяет время (или вы ждете момента, когда остальные студенты закончат выполнение данного практического задания), попытайтесь воспользоваться командами pushd и popd и понять принцип их работы. Обратитесь к странице руководства man для командной оболочки bash с целью поиска информации о данных командах.

