Ориентация в файловой системе LINUX
Использование терминала. Доступ к командной строке. Вход в систему Linux и выполнение простых команд с помощью оболочки.
Linux – это операционная система, как Windows, имеющая ряд собственных особенностей. Правда, разобраться в ней несколько сложнее, потому что большинство операций выполняются в командной строке. Различные дистрибутивы Linux имеют графические оболочки, упрощающие работу с операционной системой, но доступа к графическому интерфейсу устройства может и не быть, поэтому важно уметь работать с командной строкой. Ниже будут описаны основные команды с примерами.
Где я? Как понять, где находишься
Команда pwd: pwd --- мы ввели команду /home/test --- ответ системы, мы находимся в домашней директории пользователя test
Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как Print Working Directory.
Как понять, что находится в папке
Команда ls позволяет просмотреть содержимое каталога:

Хотя лучше использовать команду сразу с флагом «l»:
ls -lТакая команда выведет более читабельный список, где можно будет сразу увидеть дату создания файла, его размер, автора и выданные файлу права.

У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».
Как перейти в другую директорию
С помощью команды cd:
Пример:
cd <путь к директории>Путь может быть абсолютным или относительным.
По абсолютному пути
Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе например используя команду ls.
Вставляем путь в командную строку после «cd»
cd /home/student/logНу вот, мы переместились из домашней директории (обозначается как ~) в /home/student/log.

По относительному пути
Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /home/student, а мне надо в /home/student/log, команда будет такой:
cd folder/logперейдиnt в папку folder/log из той директории, где dы сейчас находитесь

В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки:
cd ~/folder2Эта команда будет работать отовсюду. И переместит нас в /home/pi/folder2.

С автодополнением
Если вы начнете набирать название папки и нажмете Tab, система сама его дополнит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:
– (cd tab) Может, ты имел в виду папку 1?
– (tab) Нет? Может, папку 2?
– (tab) Снова нет? Может, папку 3?
– (tab) Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
– (tab) У меня кончились варианты, поехали сначала. Папка 1?
- cd lon(Tab) → cd long-long-long-long-name-folder – начали вводить название папки, и система сама подставила имя (из тех, что есть в директории, где мы находимся).
- cd (Tab)(Tab)(Tab) — система перебирает все файлы / папки в текущей директории.
Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.
Подняться наверх
Подняться на уровень выше:
cd ..``Если нужно поднять на два уровня выше, то:
cd ../..И так до бесконечности. Можно использовать файл, лежащий на уровне выше или просто сменить директорию. Обратите внимание, что команда для линукса отличается от команды для Windows — слеш обратный. В Windows это «cd ....», а в линуксе именно «cd ../..».
Как создать директорию
Используйте команду mkdir:
mkdir testсоздает папку с названием «test» там, где вы находитесь
Можно и в другом месте создать папку:
mkdir /home/testсоздает папку «test» в директории /home, даже если вы сейчас не там
Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.
Как создать файл
Командой touch:
touch app.logТакая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.
Как отредактировать файл
Чтобы отредактировать файл, следует воспользоваться одним из консольных текстовых редакторов: nano — более простая программа, рассчитана на новичков
Указываете имя команды и путь к файлу:
nano test_env.txt
В нижней части экрана находятся подсказки по комбинациям клавиш, остановимся на них подробнее.
- Ctrl+G или F1 — Показать справку
- Ctrl+X или F2 — Выйти из nano
- Ctrl+O или F3 — Сохранить внесенные изменения
- Ctrl+J или F4 — Выровнять текущий абзац (абзацы отделены пустой строкой)
- Ctrl+R или F5 — Добавить содержимое другого файла в текущий
- Ctrl+W или F6 — Поиск по файлу
- Ctrl+Y или F7 — Страница вперед
- Ctrl+V или F8 — Страница назад
- Ctrl+K или F9 — Вырезать текущую строку и запомнить
- Ctrl+U или F10 — Вставить
- Ctrl+C или F11 — Положение курсора
- Ctrl+T или F12 — Проверить орфографию

В nano можно набирать текст, как в обычном текстовом редакторе.
Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:
- Ctrl+O — чтобы сохранить
- Ctrl+X — для выхода
Как перенести / скопировать файл
Допустим, у нас в директории /opt/app/log находится app.log, который мы хотим сохранить в другом месте. Как перенести лог в нужное место, если нет графического интерфейса, только командная строка?
Скопировать файл
Команда:
cp что_копировать куда_копироватьЕсли мы находимся в директории /opt/app/log:
cp app.log /home/testВ данном примере мы использовали относительный путь для «что копировать» — мы уже находимся рядом с логом, поэтому просто берем его. А для «куда копировать» используем абсолютный путь — копируем в /home/test.
Можно сразу переименовать файл: cp app.log /home/test/app_test_2022_11_28.log
В этом случае мы взяли app.log и поместили его в папку /home/test, переименовав при этом в app_test_2022_11_28.log. Если в папке, в которую мы пытаемся скопировать файл с таким именем уже есть, система не будет ничего спрашивать, просто перезапишет его. Для примера положим в папку log внутри домашней директории файл app.log, который там уже есть.
Скопировать директорию
Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:
cp -r путь_к_папке путь_к_новому_местуНапример:
cp /opt/app/log /home/testТак в директории /home/test появится папка «log».
Переместить файл
Если надо переместить файл, а не скопировать его, то вместо cp (copy) используем mv (move):
cp app.log /home/test
↓
mv app.log /home/testМожно использовать относительные и абсолютные пути:
mv /opt/app/logs/app.log /home/test — абсолютные пути указаны, команда сработает из любого местаМожно сразу переименовать файл:
mv app.log /home/test/app_test_2022_11_28.log — перенесли лог в /home/olga и переименовалиПереместить директорию
Аналогично перемещению файла, команда mv
mv /opt/app/log/ /home/test/bakup/Как удалить файл
С помощью команды rm (remove):
rm test.txt — удалит файл test.txtЕсли нужно удалить все файлы в текущей папке, используйте «*»:
rm * — удалит все файлы в текущей директорииЕсли нужно удалить папку, надо добавить флаг -r (recursive):
rm -r test_folder![]()
Если вы пытаетесь удалить файлы, которые уже используются в программе или доступны только для чтения, система будет переспрашивать:
А теперь представьте, что вы чистите много файлов. На каждый система переспрашивает, и надо постоянно отвечать «да, да, да...» (y – enter, y – enter, y – enter)… Чтобы удалить все без вопросов, используйте флаг -f (force):
rm -rf test_folder --- удалит все не спрашивая![]()
С применением данных флагов следует быть аккуратным, с флагом f пользователя не переспрашивают, стоит ли удалять определенный файл, файл удаляется сразу без возможности восстановления.
Опция -v показывает имена удаляемых файлов:
rm -rfv test_folder --- удалит папку со всем содержимым, но выведет имена удаляемых файлов
Как изменить владельца файла
Если у вас есть root-права, то вы наверняка будете выполнять все действия под ним. И тогда любой созданный файл, любая папка будут принадлежать root-пользователю.
Это плохо, потому что никто другой с ними работать уже не сможет. Но можно создать файл под root-ом, а потом изменить его владельца с помощью команды chown.
Допустим, что я поднимаю сервис testbase. И он должен иметь доступ к директории user и файлу test.txt в другой директории. Так как никому другому эти файлики не нужны, а создал я их под рутом, то просто меняю владельца:
chown testbase:testbase test.txt — сменить владельца файла
chown -R testbase:testbase user — сменить владельца папкиВ итоге был владелец root, а стал testbase.
Как установить приложение
Если вы привыкли к Windows, то для вас установка приложения — это скачать некий setup.exe файл, запустить и несколько раз нажать «далее-далее-далее». В линуксе все немного по-другому. Тут приложения ставятся как пакеты. И для каждой системы есть свой менеджер пакетов:
- yum — red hat, centos
- dpkg, apt — debian
Давайте посмотрим на примере, как это работает. Во время работы на плате NanoPi вам может понадобиться код с GitHub. Для того, чтобы его было проще скачать, вы можете воспользоваться программой git, благодаря которой можно в одну строку скачать весь репозиторий. Но, к сожалению, программа далеко не всегда есть в «чистом» дистрибутиве. Вы хотите вызвать git, но он не установлен, о чем сообщает система:
Вы хотите вызвать git, но он не устновлен, о чем сообщает система:
git
Ничего страшного, установите это приложение через apt:
sudo apt install git
Система установит требуемый пакет.

В случае возникновения подобной ошибки стоит обновить репозитории с помощью команды sudo apt update
Теперь, если напечатать «git» в командной строке, высветится справка по использованию программы: В случае возникновения подобной ошибки стоит обновить репозитории с помощью команды sudo apt update

Как создать архив
Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf:
tar -cvzf archive.tar.gz /home/pi/test
В данном примере мы упаковали директорию /home/pi/test.
Для распаковки меняем флаг «c» на «x» и убираем «z»:
tar -xvf archive.tar.gz
Хотя система пишет, что распаковала «/home/test», на самом деле папка «test» появляется там, где мы сейчас находимся.
Давайте разберемся, что все эти флаги означают:
- c — создать архив в Linux;
- x — извлечь файлы из архива;
- v — показать подробную информацию о процессе работы (без него мы бы не увидели, какие файлики запаковались / распаковались);
- f — файл для записи архива;
- z — сжатие.
Для упаковки используется опция c — Create, а для распаковки x — eXtract.
Для использования архиватора rar необходимо поставить следующие пакеты:
sudo apt install rar
sudo apt install unrarИ применяем:
unrar x test.rarКак посмотреть использованные ранее команды
Иногда возникает ситуация, в которой проще посмотреть команду в истории введенных в консоль команд, чем ввести ее заново. Для того, чтобы посмотреть историю введенных команд, нужно:
↑ (стрелочка «наверх») — показать последнюю команду history — показать последние 1000 команд
Если команда, которую требуется найти была введена недавно, можно найти ее, несколько раз нажав на стрелочку вверх. Линукс хранит историю команд даже при перезапуске устройства, в отличие от Windows.
Как посмотреть свободное место
Сколько места свободно на дисках
df -hСколько весит директория
du -sh
du -sh * --- с разбиениемКак узнать IP компьютера
Чтобы узнать IP машины, используйте команду:
hostname -IТакже можно использовать ifconfig:
ifconfig — выведет много информации, в том числе ваш внешний IP
ip a — аналогКак узнать версию OS
Для установки некоторых пакетов стоит точно знать версию установленной на машине операционной системы. Чтобы ее узнать, используйте команду:
cat /etc/*-release
Если нужна версия ядра:
uname -a
Как узнать, как работает команда
Если вы не знаете, как работает команда, всегда можно открыть справку, используя встроенную команду man:
man git
Закрыть мануал можно с помощью клавиши q.
Если man у программы нет, используйте флаг -h (--help):
git-hКак создать много тестовых папок и файлов
Допустим, у нас есть некая папка test. Создадим в ней 100 директорий и 100 файлов в каждой:
mkdir -p test/dir--{000..100}
touch test/dir--{000..100}/file-{A..Z}
Теперь пояснения:

- mkdir — создать директорию
- touch — создать файл (или изменить существующий, но если файла с таким именем нет, то команда создаст новый, пустой)
А выражения в скобках играют роль функции, которая выполняется в цикле и делает ручную работу за вас:
- {000..100} — пробежится по всем числам от 0 до 100
- {A..Z} — пробежится по всем буквам английского алфавита от A до Z