Краткий гайд по линуксу для самых маленьких.

Файловая система

Запомни!

В linux нет такой системы с дисками как в Windows

Файловая система вся начинается с /, или же как принято говорить с корня.

В корне лежат следующие папки:

В эти папки мы не лезем:

  • 📂 /bin — основные программы (cd, ls).
  • 📂 /sbin — программы которым необходима работа от имени пользователя root.
  • 🖱️ /dev — устройства флешки, мышки, клавиатуры и тд… Да, в linux все устройства это файлы.
  • ⚙️ /proc — виртуальная файловая система для процессов.
  • 🔒 /var/lock — файлы блокировок процессов.
  • 💻 /var/run — постоянные данные о процессах.
  • 👤 /usr — установленные пользователем программы не попавшие в bin, sbin.
  • 💣 /boot — загрузчик.
  • 📚 /lib32,/libx32,/lib,/lib64 — системные библиотеки.
  • 🛠️ /opt — проприетарный софт
  • 💻 /run — аналог /var/run с хранением до перезагрузки.
  • 🗑️ /tmp — временные файлы (очистка при перезапуске).
  • 🛎️ /srv — серверные исполняемые файлы.
  • 🖥️ /sys — информация о системе.
  • 📦 /snap — если в системе установлен snap, его файлы здесь.
  • 📀 /lost+found — битые файлы, если их слишком много, повод задуматься о том насколько живой диск.

В эти папки лезть можно:

  • ⚙️ /etc — тут лежат настройки большенства программ. Доступ только через sudo.
  • 🏠 /home/имя_пользователя - домашняя папка пользователя.
  • 🏠 /root — тоже самое, но для root.
  • 🕐 /var - тут лежит кэш, тут лежат логи и все файлы содержимое которых автоматически меняется.
  • 📜 /var/log - логи.
  • 🛢 /var/lib - базы данных установленных программ.
  • 📫 /var/mail - почта(системные уведомления, выполнения cron и тд…).
  • 🖨️ /var/spool - очередь печати.
  • 💾 /mnt - сюда мы подключаем внешние носители.
  • 💿 /media - сюда внешние носители монтирует система.

Команды

cd

Перемещение по папкам.

ls

Показать содержимое директории.

ФлагПолное имяЧто делаетПример
-l--format=longДлинный формат. Показывает права доступа, владельца, размер и дату изменения.
-a--allПоказать всё. Отображает скрытые файлы (те, что начинаются с точки, например .bashrc).
-h--human-readableДля людей. Выводит размер файлов в Кб, Мб, Гб вместо байтов (используется вместе с -l).
-R--recursiveРекурсивно. Показывает содержимое не только этой папки, но и всех подпапок внутри.
-t--sort=timeСортировка по времени. Сначала самые новые.
-S--sort=sizeСортировка по размеру. Сначала самые тяжелые файлы.

alias

Бинды. Например:

alias aptu='sudo apt update'

Теперь вместо sudo apt update сможем вводить aptu

cat

Вывод содержимого файла.

ФлагДлинный аналогОписаниеПример
-n--numberНумеровать все строки при выводе в терминал.
-b--number-nonblankНумеровать только непустые строки. (Перекрывает -n).
-s--squeeze-blankСжимать пустые строки. Если идет несколько пустых строк подряд, выведет только одну.
-E--show-endsПоказывает символ $ в конце каждой строки. Помогает увидеть лишние пробелы.
-T--show-tabsПоказывает символы табуляции как ^I.
-v--show-nonprintingОтображает непечатаемые символы (кроме табуляции и перевода строки).
-A--show-allКомбо-флаг. Эквивалентно -vET. Показывает абсолютно всё (табы, концы строк, непечатаемые символы).

chmod

Выдача прав.

Тут есть 2 метода:

Метод 1:

chmod a+rwx

Первая буква - кому: - u - владелец - g - группа - o - пользователи которые не владелец и не в группе которой принадлежит файл - a - все Символ:

  • добавить
    • удалить
  • = заменить текущее разрешение Последние буквы - rwx: r- чтение w - запись x - выполнение

У команды есть также флаги. Самый важный флаг -R - даст эти права на папку и все что в нее входит.

Метод 2.

chmod 777

Тут работает следующая схема:

  • 0 - никаких прав;
  • 1 - только выполнение;
  • 2 - только запись;
  • 3 - выполнение и запись;
  • 4 - только чтение;
  • 5 - чтение и выполнение;
  • 6 - чтение и запись;
  • 7 - чтение запись и выполнение.

Первая цифра - права владельца Вторая права группы пользователей Третья права всех.

Для вебсерверов чаще всего нужны права 775. Для ssh ключей и ssl сертификатов: 600.

chown

chown пользователь:группа файл - меняет владельца файла.

Флаг -R работает как в команде chmod. Можно применять команду без пользователя или группы.

curl

curl ссылка -o имя Скачивает файл в текущую директорию с указанным именем. Можно вместо имени указать путь, например /home/dev/имя и скачает туда. Так же с помощью curl можно в целом отправлять любые запросы, но если мы будем разбирать команду полностью, получится еще одна статья в статье.

echo

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

echo '' > файл # Заменит все содержимое файла на пустую строку.
echo 123 >> файл # Допишет в конец файла текст: '123'.

find

find [папка] [параметры] критерий шаблон [действие] Поисков файлов, имеет тону флагов.

Основные флаги:

  • 🔗 -P — никогда не открывать символические ссылки.
  • 🖇️ -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • 📂 -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • 📁 -depth — искать сначала в текущем каталоге, а потом в подкаталогах.
  • 🤵 -print — выводить полные имена файлов.
  • 🗄️ -type f — искать только файлы.
  • 📁 -type d — поиск папки в Linux.

Критерии поиска:

  • 👤 -name — по имени.
  • 🚦 -perm — по правам.
  • 👨 -user — по владельцу.
  • 🧑‍🤝‍🧑 -group — по группе.
  • -mtime — по времени изменения файла.
  • 🕰️ -atime — по дате последнего чтения.
  • 🚫 -nogroup — файлы не принадлежащие ни одной группе.
  • 🙅 -nouser — файлы без владельца.
  • 🆕 -newer — найти файлы новее чем указанный.
  • ⚖️ -size — по размеру.

grep

grep [опции] шаблон [/путь/к/файлу/или/папке...] Чаще всего используется совместно с find при помощи оператора |

find ... | grep ...

Поиск строк соответствующих шаблону, как и у find тона флагов.

Флаг (короткий / длинный)ОписаниеПример (логика вывода)
-E, --extended-regexpРежим расширенных регулярок (ERE).
-F, --fixed-stringsШаблон как обычный текст (быстрее).
-G, --basic-regexpБазовые регулярки (BRE) — по умолчанию.
-P, --perl-regexpРегулярки из языка Perl (PCRE).
-e, --regexpНесколько шаблонов (логическое ИЛИ).
-f, --fileЧитать список шаблонов из файла.
-i, --ignore-caseИгнорировать регистр (A=a).
-v, --invert-matchИнверсия: показать всё, КРОМЕ этого.
-w, --word-regexpИскать только целое слово.
-x, --line-regexpСовпадение всей строки целиком.
-c, --countВывести только число найденных строк.
--color [auto, always, never]Раскрасить найденное.
-L, --files-without-matchВывести имена файлов без совпадений.
-l, --files-with-matchТолько имена файлов, где есть текст.
-m, --max-countСтоп после N найденных строк.
-o, --only-matchingВырезать и показать только совпадение.
-h, --no-filenameСкрыть имена файлов в выводе.
-q, --quiet”Тихий” режим для скриптов (ничего не выводит). Возвращает 0 если найдено и 1 если не найдено.
-s, --no-messagesСкрыть ошибки (например, “Permission denied”).
-A, --after-contextПоказать N строк после найденного.
-B, --before-contextПоказать N строк до найденного.
-C, --contextПоказать N строк вокруг (до и после).
-a, --textИскать в бинарных файлах как в тексте.
-IПросто пропускать бинарные файлы.

kill

kill <PID> PID - id процесса - убивает процесс. Если процесс не умер, напишите: kill -9 <PID>

nano/micro

Текстовый редактор. В nano выход на ctrl+x, в micro ctrl+q.

man

man <команда> Запускает руководство по использованию команды.

mkdir

mkdir <имя папки> Создать папку

touch

touch<имя файла> Создать пустой файл

mv

mv <что> <куда> Перемещение/ переименование.

passwd

passwd <пользователь> Задать пароль

ps

Список процессов.

1. Выбор процессов (какие процессы показать)

ФлагОписание
-A / -eПоказать вообще все процессы в системе.
-C [name]Поиск по имени исполняемого файла.
-G [group]Показать процессы, принадлежащие определенной группе.
-aПоказать процессы всех пользователей.
2. Формат вывода (как отображать данные)
ФлагОписание
-fПолноформатный вывод (Full listing): добавляет колонки PPID, C, STIME.
-FЭкстра-полноформатный вывод (Extra Full).
-lДлинный формат (Long): показывает подробности о приоритетах (NI, PRI).
-o [format]Пользовательский формат. Позволяет самому выбрать нужные колонки (например: pid,user,command).
-yНе показывать флаги процессов (используется вместе с -l).
-xДобавляет процессы, не связанные с терминалом. Это фоновые службы (демоны) и системные процессы, которые запускаются при старте ОС.
Выводит информацию в пользовательском формате (user-oriented). Добавляет колонки: %CPU, %MEM, USER, RSS (физическая память) и время запуска.
3. Дополнительные опции и дерево процессов
ФлагОписание
-H / fПоказать иерархию процессов (дерево) с отступами.
--forestВизуальное отображение дерева процессов с помощью символов ASCII.
-LПоказать потоки (threads), часто вместе с LWP и NLWP.
-mВывести потоки сразу после основного процесса.
-w / wШирокий вывод (Wide). Не обрезает длинные строки команд.
--sort [key]Сортировка по колонке (например, --sort=-%mem для сортировки по памяти).
Я обычно использую в сочетании с grep для поиска процесса запущенного скриптом, чтобы его убить.
ps -aux | grep <процесс который ищу>

На скриншоте первая строка выдачи, это наш скрипт с api для qualbot, вторая строка это сам процесс grep

htop

Консольный аналог диспетчера задач.

pwd

Вывести путь к текущей папке.

tar/gzip/zip/unzip

Работа с архивами, флаги нужно искать под каждую отдельно. Поэтому здесь они не приведены(данных хватит на отдельную статью).

neofetch/fastfetch

Красивый вывод информации о системе

rm -rf

Удалить что-либо (есть другие флаги, но эти универсальные)

Фишки терминала:

'cd -'

Вернуться в последнюю рабочую директорию

'cd ~'

вернуться в домашнюю директорию пользователя

Несколько команд в одной строке.

  1. Если нам нужно выполнить несколько команд, разделяем их с помощью ;
  2. Если нам нужно выполнить несколько команд с условием, что прошла не выдала ошибку разделяем их с помощью &&
  3. Если нам нужно выполнить несколько команд с условием, что прошлая выдала ошибку - разделяем с помощью ||

Подставить прошлую команду.

Допустим вы забыли написать sudo, чтобы не набирать всю команду заново напишите sudo !!

sudo pacman -Suy написалось само

Горячие клавиши

  • ctrl+c - закрыть
  • ctrl+z - приостановить процесс(пауза)
  • ctrl+\ - принудительный выход
  • ctrl+d - Послать символ конца файла (EOF). Закрывает терминал или текущую оболочку (exit).

>

Все что команда выводит на экран будет направленно в указанный файл(с перезаписью)

>>

аналог прошлого, но оно не перезапишет файл, а допишет в конец.

Группировка команд

Команды можно группировать используя {} или (). Фигурные скобки {} - в текущей оболочке выполнятся, обычные () в дочерней.

|

Направляет вывод одной команды в другую. Пример:

find данные для поиска файла | grep данные для поиска строки файла.`

Результат: в каком файле конкретно содержится искомая строка

Шаблоны

sudo apt install php7.4-{curl,memcached,...}

Установит все перечисленные пакеты следующим образом: установит php7.4-curl, php3.4-memcached и так далее. То есть фигурными скобками мы можем дописать список.

Другой пример: