Перейти к содержимому
ID Academia
Linux
Начальный45 мин.Обновлено: Тема 1 из 2

Linux Essentials — основы работы в Linux

Знакомимся с Linux и Bash, работаем с файлами и правами, проверяем службы и сеть, пишем первый сценарий.

Не прочитано

Что вы узнаете

  • Навигация, поиск и редактирование файлов в Bash
  • Права доступа, sudo и пакеты apt
  • Проверка служб и сети, первый сценарий Bash

Linux Essentials — основы работы в Linux: от первого открытия терминала до файлов, прав, пакетов, процессов, служб и сети. Тема основана на приложенной презентации из 28 слайдов; команды и пояснения дополнены для самостоятельной практики.

1. Unix, GNU, Linux и дистрибутивы

Unix — историческая основа; проект GNU предоставляет инструменты и свободное ПО; Linux — ядро, управляющее процессором, памятью, дисками, устройствами и сетью. Дистрибутив собирает ядро, системные инструменты, пакеты и настройки в готовую систему. Ubuntu основана на Debian; Fedora и RHEL относятся к семейству Red Hat. Драйверы связывают ядро с оборудованием.

  • Коммерческое ПО продаётся за деньги, но может иметь открытый код. Freeware бесплатно в использовании, но не обязательно открыто; Shareware — пробная или ограниченная версия.
  • Open Source даёт доступ к исходному коду по условиям лицензии. FSF продвигает свободы пользователя, OSI определяет принципы открытого кода. GPL требует сохранять условия лицензии при распространении охватываемых ею производных работ.
User → Terminal → Shell (Bash) → Programs → Linux kernel → Hardware
Linux distribution
├── Kernel + drivers
├── GNU and other system tools
├── Package manager (apt / dnf)
└── Configuration and applications
text

2. Терминал, оболочка и справка

Терминал — окно для работы; оболочка разбирает команды и запускает программы. Часто используется Bash, также есть zsh и fish. /etc/shells перечисляет зарегистрированные оболочки. В отличие от CMD, Linux использует / в путях и различает регистр: Notes.txt и notes.txt — разные имена. uname -r показывает версию ядра, а /etc/os-release — дистрибутив.

uname -r
cat /etc/os-release
cat /etc/shells
whoami
id
ls --help
man ls
bash

3. Пути, файлы и папки

pwd показывает текущую папку; ls -la — содержимое, включая скрытые файлы, владельцев и права; cd меняет папку. Путь от / — абсолютный, остальные считаются от текущей папки. . — текущая папка, .. — родительская, ~ — домашняя. Имена с пробелами заключайте в кавычки.

mkdir -p ~/linux-practice/project/logs ~/linux-practice/backup
cd ~/linux-practice
pwd
ls -la
mkdir "My notes"
touch project/notes.txt
cp project/notes.txt project/notes-copy.txt
mv project/notes-copy.txt project/renamed.txt
cp -r project backup/
ls backup/project
rm -i project/renamed.txt
bash
  • mkdir -p создаёт промежуточные папки. touch создаёт пустой файл, если его нет, иначе обновляет время. cp копирует; mv перемещает или переименовывает.
  • Если backup уже существует, cp -r project backup/ создаёт backup/project. Повторный запуск может перезаписать файлы — сначала проверьте назначение.
  • /home — домашние папки пользователей; /etc — настройки; /var/log — журналы; /tmp — временные файлы; /root — домашняя папка root. Имя с точкой в начале скрыто в обычном ls.

4. Редактирование, поиск и перенаправление вывода

nano notes.txt открывает редактор, если он установлен: Ctrl+O и Enter сохраняют, Ctrl+X закрывает. cat удобен для короткого файла, less — для чтения по страницам (q — выход). grep ищет текст внутри файлов, find — файлы по признакам. Флаги grep -i, -n, -r означают поиск без учёта регистра, номера строк и поиск по папкам.

cd ~/linux-practice
printf "INFO: started\nERROR: test\n" > project/logs/app.log
printf "INFO: finished\n" >> project/logs/app.log
cat project/logs/app.log
grep -in "error" project/logs/app.log
grep -rin "error" project/logs/
find . -type f -name "*.log"
head -n 5 project/logs/app.log
tail -n 5 project/logs/app.log
cat project/logs/app.log | grep "ERROR"
tail -f project/logs/app.log
bash
  • > заменяет прежнее содержимое; >> дописывает в конец. | передаёт вывод следующей команде. && запускает следующую только при успехе предыдущей.
  • tail -f ждёт новые строки; остановите его через Ctrl+C. grep в примере должен показать 2:ERROR: test. Кавычки вокруг *.log не дают оболочке раскрыть шаблон до запуска find.

5. Пользователи, права и sudo

ls -l показывает тип, права и владельца. Три тройки прав относятся к владельцу, группе и остальным: r=4 — чтение, w=2 — запись, x=1 — запуск. Для папки x позволяет проход внутрь; удаление файла зависит от прав родительской папки. chmod меняет права, chown — владельца и группу.

-rw-r-----  →  640
-   regular file (d = directory)
rw- owner: 4 + 2 = 6
r-- group: 4     = 4
--- others:     = 0

600 → private file
644 → owner reads/writes; others read
700 → private directory
755 → owner has full access; others read/execute
text
cd ~/linux-practice
touch project/private.txt
chmod 600 project/private.txt
ls -l project/private.txt
whoami
id
bash

6. Пакеты и процессы

В Debian/Ubuntu apt update обновляет список пакетов, а не сами программы. apt install устанавливает, apt upgrade обновляет установленные, apt remove удаляет. Перед подтверждением читайте список изменений. ps aux показывает процессы и PID; top — ресурсы в реальном времени (q — выход). kill PID отправляет SIGTERM, запрос штатного завершения; kill -9 с SIGKILL — крайний вариант.

sudo apt update
sudo apt install tree
tree ~/linux-practice
ps aux
top
bash

7. Службы, журналы, сеть и SSH

Служба — программа, работающая в фоне. systemctl status проверяет состояние, start запускает сейчас, enable включает запуск при загрузке, но не обязательно немедленно. journalctl читает журналы systemd. Для примеров нужен установленный SSH-сервер: в Ubuntu/Debian пакет openssh-server и служба ssh; в Fedora/RHEL служба обычно называется sshd.

systemctl status ssh
journalctl -u ssh -n 20 --no-pager
ip a
ip r
ping -c 4 8.8.8.8
getent hosts example.com
bash

ip a показывает адреса и интерфейсы; ip r — маршруты и шлюз. ping по IP проверяет ответ ICMP, отсутствие ответа не доказывает отключение сервера. getent hosts проверяет разрешение имён согласно настройкам системы, включая /etc/hosts и DNS. Для своего разрешённого сервера подставьте имя и адрес в ssh user@server-ip; проверьте службу, порт, пароль или ключ и отпечаток сервера.

  • No such file — проверьте pwd, путь и регистр. command not found — написание, установку программы и PATH.
  • Permission denied — проверьте id и ls -l; для SSH также пользователя и способ входа. Connection refused — проверьте слушающую службу и порт; межсетевой экран тоже может отклонить соединение.

8. Самостоятельная практика — 15 минут

В учебной машине создайте рабочую папку, журнал, резервную копию и личный файл. Выполните один раз; если уже делали примеры выше, сначала проверьте файлы, чтобы не перезаписать важное.

mkdir -p ~/linux-practice
cd ~/linux-practice
mkdir -p project/logs backup
printf "INFO: started\nERROR: test\n" > project/logs/app.log
grep -in "error" project/logs/app.log
cp -r project backup/
find . -type f -name "*.log"
touch project/private.txt
chmod 600 project/private.txt
ls -l project/private.txt
bash
  • grep выводит 2:ERROR: test; find находит журнал и его резервную копию.
  • ls -l показывает -rw------- у private.txt. Владелец — ваш пользователь; размер пустого файла — 0.
  • Объясните: что изменится, если заменить >> на >? Почему cp не то же самое, что mv? Проверяйте на пробном файле.

9. Первый сценарий Bash

В учебной папке откройте nano hello.sh, вставьте следующий текст и сохраните. Первая строка выбирает интерпретатор; printf печатает текст и перевод строки.

#!/bin/bash
printf "Hello, Linux!\n"
bash

После сохранения дайте владельцу право запуска и выполните файл. ./ означает файл в текущей папке; ожидаемый результат — Hello, Linux!.

chmod u+x hello.sh
./hello.sh
bash

Проверь себя

Что делает apt update?

Что означают права 640?

Какой знак дописывает вывод, не заменяя содержимое?

Чем отличаются systemctl start и enable?

Эта страница вам помогла?