<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Гайд по самым важным командам Linux&#x2F;Unix для новичков]]></title><description><![CDATA[<p dir="auto">Linux и Unix имеют философию “всё есть файл” и “делай одно, но делай хорошо”. Команды — это ваш инструмент для управления системой через терминал. В этом гайде разберём самые полезные команды, которые встречаются в 90% работы.</p>
<hr />
<h2>1. Навигация по файловой системе</h2>
<h3>pwd (Print Working Directory)</h3>
<p dir="auto"><strong>Что это:</strong> выводит полный путь текущей директории</p>
<p dir="auto"><strong>Зачем нужно:</strong> понять, где вы находитесь в файловой системе</p>
<pre><code class="language-bash">pwd
/home/user/Documents
</code></pre>
<p dir="auto">Вы в папке Documents, которая находится в /home/user.</p>
<hr />
<h3>ls (List)</h3>
<p dir="auto"><strong>Что это:</strong> выводит список файлов и папок в текущей директории</p>
<p dir="auto"><strong>Зачем нужно:</strong> видеть содержимое папки</p>
<p dir="auto"><strong>Базовое использование:</strong></p>
<pre><code class="language-bash">ls
Desktop  Documents  Downloads  Pictures
</code></pre>
<p dir="auto"><strong>Полезные флаги:</strong></p>
<pre><code class="language-bash"># -l показывает подробную информацию (права доступа, размер, дату)
ls -l
drwxr-xr-x  5 user user 4096 Jan  9 10:30 Desktop
-rw-r--r--  1 user user 2048 Jan  8 15:42 document.txt

# -a показывает скрытые файлы (начинаются с точки)
ls -a
.  ..  .config  .ssh  Desktop  document.txt

# -h показывает размеры в понятном формате (MB, GB)
ls -lh
-rw-r--r--  1 user user 2.5M Jan  8 15:42 video.mp4

# Комбинирование флагов
ls -lah
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> ls читает содержимое директории из файловой системы и выводит список. Флаги изменяют формат вывода.</p>
<hr />
<h3>cd (Change Directory)</h3>
<p dir="auto"><strong>Что это:</strong> меняет текущую директорию (переходит в другую папку)</p>
<p dir="auto"><strong>Зачем нужно:</strong> перемещаться по файловой системе</p>
<pre><code class="language-bash"># Переход в конкретную папку
cd /home/user/Documents

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

# Переход на уровень выше
cd ..

# Переход в предыдущую директорию
cd -

# Переход в корневую директорию
cd /
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> shell (интерпретатор команд) изменяет текущее рабочее пространство на указанную директорию. Все последующие команды будут работать относительно этой папки.</p>
<hr />
<h2>2. Работа с файлами и папками</h2>
<h3>mkdir (Make Directory)</h3>
<p dir="auto"><strong>Что это:</strong> создаёт новую папку</p>
<p dir="auto"><strong>Зачем нужно:</strong> организовать файлы по папкам</p>
<pre><code class="language-bash"># Создание одной папки
mkdir myproject

# Создание вложенной структуры (флаг -p)
mkdir -p /home/user/projects/myapp/src/components
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> mkdir вызывает системный вызов для создания директории в файловой системе.</p>
<hr />
<h3>touch</h3>
<p dir="auto"><strong>Что это:</strong> создаёт пустой файл или обновляет время модификации существующего</p>
<p dir="auto"><strong>Зачем нужно:</strong> быстро создать файл или обновить его “дату последнего изменения”</p>
<pre><code class="language-bash"># Создание пустого файла
touch index.html

# Создание нескольких файлов сразу
touch file1.txt file2.txt file3.txt

# Обновление времени модификации (полезно для вспомогательных действий)
touch existing_file.txt
</code></pre>
<hr />
<h3>cp (Copy)</h3>
<p dir="auto"><strong>Что это:</strong> копирует файлы или папки</p>
<p dir="auto"><strong>Зачем нужно:</strong> создать копию файла или резервную копию</p>
<pre><code class="language-bash"># Копирование файла
cp document.txt document_backup.txt

# Копирование файла в другую папку
cp document.txt /home/user/backup/

# Копирование папки со всем содержимым (флаг -r)
cp -r myproject myproject_backup

# Копирование с информацией о прогрессе (флаг -v)
cp -v large_file.iso /backup/
'large_file.iso' -&gt; '/backup/large_file.iso'
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> cp читает содержимое файла-источника и записывает его в новый файл-назначение.</p>
<hr />
<h3>mv (Move)</h3>
<p dir="auto"><strong>Что это:</strong> перемещает или переименовывает файлы и папки</p>
<p dir="auto"><strong>Зачем нужно:</strong> перенести файл в другую папку или переименовать его</p>
<pre><code class="language-bash"># Переименование файла
mv old_name.txt new_name.txt

# Перемещение файла в другую папку
mv document.txt /home/user/Documents/

# Перемещение и переименование одновременно
mv /home/user/Downloads/file.pdf /home/user/Documents/important_file.pdf

# Перемещение папки
mv old_project_folder new_project_folder
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> mv изменяет указатель на файл в файловой системе, поэтому это очень быстро даже для больших файлов.</p>
<hr />
<h3>rm (Remove)</h3>
<p dir="auto"><strong>Что это:</strong> удаляет файлы или папки</p>
<p dir="auto"><strong>Зачем нужно:</strong> удалить ненужные файлы</p>
<pre><code class="language-bash"># Удаление файла
rm temporary_file.txt

# Удаление папки со всем содержимым (флаг -r)
rm -r old_project/

# Удаление с подтверждением перед каждым файлом (флаг -i)
rm -i *.log
remove file1.log? y
remove file2.log? n

# Принудительное удаление без подтверждения (флаг -f)
rm -f file.txt

# Комбинирование флагов
rm -rf /path/to/folder
</code></pre>
<p dir="auto"><strong><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=1bd9ff6b60a" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️ Важно:</strong> Linux не имеет “корзины” — удаленные файлы очень сложно восстановить. Будьте осторожны с <code>rm -rf</code>.</p>
<p dir="auto"><strong>Как это работает:</strong> rm удаляет запись о файле из директории и помечает место на диске как свободное. Данные еще какое-то время остаются на диске, но получить к ним доступ становится очень сложно.</p>
<hr />
<h2>3. Просмотр содержимого файлов</h2>
<h3>cat (Concatenate)</h3>
<p dir="auto"><strong>Что это:</strong> выводит полное содержимое файла</p>
<p dir="auto"><strong>Зачем нужно:</strong> быстро посмотреть содержимое небольших текстовых файлов</p>
<pre><code class="language-bash"># Просмотр содержимого файла
cat config.txt
server=localhost
port=5432
database=mydb

# Просмотр нескольких файлов (выведет один за другим)
cat file1.txt file2.txt

# Нумерация строк (флаг -n)
cat -n script.sh
     1  #!/bin/bash
     2  echo "Hello"
     3  date

# Показание символов конца строк (полезно для отладки)
cat -A file.txt
hello$
world  $
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> cat читает содержимое файла и выводит его в стандартный вывод (stdout).</p>
<hr />
<h3>less и more</h3>
<p dir="auto"><strong>Что это:</strong> просматривает файл по страницам (постраничный просмотр)</p>
<p dir="auto"><strong>Зачем нужно:</strong> смотреть большие файлы без перегрузки экрана</p>
<pre><code class="language-bash"># Постраничный просмотр большого файла
less large_log_file.txt

# После запуска less используйте:
# Space или Page Down - следующая страница
# b или Page Up - предыдущая страница
# g - в начало файла
# G - в конец файла
# /search_term - поиск текста
# q - выход
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> less подгружает файл по частям, позволяя экономно использовать память и быстро навигировать по большим файлам.</p>
<hr />
<h3>head и tail</h3>
<p dir="auto"><strong>Что это:</strong> выводит начало (head) или конец (tail) файла</p>
<p dir="auto"><strong>Зачем нужно:</strong> посмотреть первые/последние строки логов или файлов</p>
<pre><code class="language-bash"># Вывод первых 10 строк (по умолчанию)
head log.txt
2026-01-09 10:15:23 INFO Starting application
2026-01-09 10:15:25 INFO Database connected
...

# Вывод первых 20 строк
head -20 log.txt

# Вывод последних 10 строк
tail log.txt

# Вывод последних 50 строк
tail -50 log.txt

# Отслеживание нового содержимого в реальном времени (очень полезно для логов)
tail -f /var/log/syslog
2026-01-09 10:35:12 kernel: [12345.123456] CPU0: Package temperature/speed normal
2026-01-09 10:35:15 kernel: [12348.456789] systemd[1]: Started session...
# Будет обновляться по мере появления новых строк
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> head читает файл с начала и выводит N строк, tail ищет конец файла и выводит N последних строк. Флаг -f создаёт постоянный поток данных.</p>
<hr />
<h2>4. Поиск и фильтрация</h2>
<h3>find</h3>
<p dir="auto"><strong>Что это:</strong> ищет файлы и папки по различным критериям</p>
<p dir="auto"><strong>Зачем нужно:</strong> быстро найти нужный файл в большой структуре папок</p>
<pre><code class="language-bash"># Поиск файла по имени в текущей директории и подпапках
find . -name "document.txt"
./Documents/document.txt

# Поиск всех файлов с расширением .log
find . -name "*.log"

# Поиск в конкретной директории
find /var/log -name "*.log"

# Поиск файлов больше определённого размера (здесь более 100 MB)
find . -size +100M

# Поиск файлов, изменённых в течение последних 7 дней
find . -mtime -7

# Поиск папок (тип -type d)
find . -type d -name "node_modules"

# Поиск файлов (тип -type f)
find . -type f -name "*.js"

# Комбинирование условий
find /home/user/projects -type f -name "*.js" -size +1M

# Выполнение команды для каждого найденного файла
find . -name "*.txt" -exec rm {} \;
# Здесь {} заменяется на имя файла, ; закрывает команду
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> find рекурсивно проходит по директориям, проверяя каждый файл по заданным условиям.</p>
<hr />
<h3>grep</h3>
<p dir="auto"><strong>Что это:</strong> ищет текст внутри файлов по шаблону</p>
<p dir="auto"><strong>Зачем нужно:</strong> найти строку в файле или отфильтровать вывод других команд</p>
<pre><code class="language-bash"># Поиск в одном файле
grep "error" log.txt
2026-01-09 10:15:23 ERROR Connection failed
2026-01-09 10:16:45 ERROR Timeout

# Поиск во всех файлах папки (флаг -r рекурсивный)
grep -r "TODO" /home/user/project
project/app.js:// TODO: refactor this function
project/utils.js:// TODO: add error handling

# Поиск с игнорированием регистра (флаг -i)
grep -i "ERROR" log.txt
# найдёт error, Error, ERROR и т.д.

# Показание номеров строк (флаг -n)
grep -n "config" config.js
5:const config = require('./config.json');
12:const dbConfig = config.database;

# Инверсия поиска - строки, НЕ содержащие шаблон (флаг -v)
grep -v "^#" config.txt
# выведет все строки, кроме комментариев (начинающихся с #)

# Подсчёт количества совпадений (флаг -c)
grep -c "error" log.txt
47

# Использование регулярных выражений (флаг -E)
grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}" log.txt
# найдёт строки, начинающиеся с даты в формате YYYY-MM-DD

# Комбинирование с другими командами через pipe (|)
cat log.txt | grep "error" | wc -l
# подсчитает количество строк с "error"
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> grep читает файл строку за строкой и проверяет каждую строку по заданному шаблону.</p>
<hr />
<h2>5. Работа с процессами и системой</h2>
<h3>ps (Process Status)</h3>
<p dir="auto"><strong>Что это:</strong> показывает запущенные процессы</p>
<p dir="auto"><strong>Зачем нужно:</strong> увидеть, какие программы работают в системе</p>
<pre><code class="language-bash"># Просмотр процессов текущего пользователя
ps
  PID TTY      STAT   TIME COMMAND
 1234 pts/0    Ss     0:00 bash
 1456 pts/0    R+     0:00 ps

# PID - идентификатор процесса
# TTY - терминал, в котором запущен процесс
# STAT - статус процесса (S = sleeping, R = running)
# COMMAND - команда, запустившая процесс

# Полный список всех процессов в системе
ps aux
# aux означает:
# a - все процессы для всех пользователей
# u - подробный формат
# x - включить процессы без контролирующего терминала

# Примеры вывода:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.4 103008  6720 ?        Ss   10:00   0:02 /sbin/init
user      1234  0.0  1.2 4523456 45320 ?       S    10:15   0:05 node app.js
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> ps читает информацию о процессах из файловой системы Linux (/proc) и выводит её в форматированном виде.</p>
<hr />
<h3>top</h3>
<p dir="auto"><strong>Что это:</strong> интерактивный монитор процессов в реальном времени</p>
<p dir="auto"><strong>Зачем нужно:</strong> видеть, какие процессы потребляют больше всего ресурсов (CPU, памяти)</p>
<pre><code class="language-bash"># Запуск top
top

# Вывод будет выглядеть так:
top - 10:36:45 up 5 days,  2:15,  1 user,  load average: 0.45, 0.52, 0.48
Tasks: 156 total,   2 running, 154 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.3 us,  1.1 sy,  0.0 ni, 96.2 id,  0.1 wa,  0.2 hi,  0.1 si
MiB Mem :  16384.0 total,  12456.3 free,  2048.5 used,  1879.2 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.  13985.6 avail Mem

  PID USER  PR  NI    VIRT    RES  SHR S  %CPU  %MEM     TIME+ COMMAND
 2345 user  20   0 1234567 456789 98765 S   8.3  2.8   2:15.47 firefox
 1890 root  20   0  345678 123456 67890 S   3.1  0.8   1:05.32 systemd-journal
</code></pre>
<p dir="auto">Ключевые навыки использования top:</p>
<ul>
<li><code>q</code> - выход из top</li>
<li><code>k</code> - убить процесс (введите PID)</li>
<li><code>Shift+M</code> - сортировка по памяти</li>
<li><code>Shift+P</code> - сортировка по CPU (по умолчанию)</li>
</ul>
<hr />
<h3>kill</h3>
<p dir="auto"><strong>Что это:</strong> останавливает (завершает) процесс по его PID</p>
<p dir="auto"><strong>Зачем нужно:</strong> закрыть зависший процесс или остановить ненужную программу</p>
<pre><code class="language-bash"># Нормальное завершение процесса (дает процессу время на очистку)
kill 2345

# Принудительное завершение (жёсткий kill)
kill -9 2345
# 9 - это сигнал SIGKILL, он не может быть проигнорирован

# Другие полезные сигналы:
kill -15 2345  # SIGTERM - вежливый запрос на завершение (по умолчанию)
kill -19 2345  # SIGSTOP - приостановка процесса
kill -18 2345  # SIGCONT - продолжение приостановленного процесса

# Поиск PID и kill в одной команде
pkill firefox  # убьёт все процессы с именем firefox
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> kill отправляет сигнал операционной системы процессу. Процесс может обработать этот сигнал по-своему.</p>
<hr />
<h2>6. Работа с правами доступа</h2>
<h3>chmod (Change Mode)</h3>
<p dir="auto"><strong>Что это:</strong> меняет права доступа к файлам и папкам</p>
<p dir="auto"><strong>Зачем нужно:</strong> контролировать, кто может читать, писать и выполнять файлы</p>
<pre><code class="language-bash"># Права доступа в Linux состоят из трёх групп:
# rwx rwx rwx
# |   |   └─ права для остальных (other)
# |   └───── права для группы (group)
# └───────── права для владельца (user/owner)

# r (read) - чтение (4)
# w (write) - запись (2)
# x (execute) - выполнение (1)

# Пример прав: drwxr-xr-x
# d - это директория
# rwx - владелец может читать, писать и выполнять
# r-x - группа может читать и выполнять (но не писать)
# r-x - остальные могут читать и выполнять (но не писать)

# Численный способ (самый простой):
chmod 755 script.sh
# 7 = rwx для владельца (4+2+1)
# 5 = r-x для группы (4+0+1)
# 5 = r-x для остальных (4+0+1)

# Символический способ:
chmod u+x script.sh      # добавить execute для владельца
chmod g+w file.txt       # добавить write для группы
chmod o-r file.txt       # убрать read для остальных
chmod a+r file.txt       # добавить read для всех (a = all)

# Делает скрипт исполняемым
chmod +x script.sh

# Рекурсивное изменение прав для папки и содержимого
chmod -R 755 /path/to/folder
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> каждый файл в Linux содержит информацию о правах доступа. chmod изменяет эту информацию.</p>
<hr />
<h3>chown (Change Owner)</h3>
<p dir="auto"><strong>Что это:</strong> меняет владельца файла или папки</p>
<p dir="auto"><strong>Зачем нужно:</strong> изменить, кто является владельцем файла</p>
<pre><code class="language-bash"># Изменение владельца (требует прав администратора)
sudo chown newuser file.txt

# Изменение владельца и группы одновременно
sudo chown newuser:newgroup file.txt

# Рекурсивное изменение для папки и содержимого
sudo chown -R newuser:newgroup /path/to/folder

# Практический пример: файл создан от имени root, нужна смена на обычного пользователя
sudo chown -R user:user /home/user/project
</code></pre>
<hr />
<h2>7. Управление пакетами и установка программ</h2>
<h3>apt / apt-get (Debian/Ubuntu)</h3>
<p dir="auto"><strong>Что это:</strong> менеджер пакетов для Debian-based систем (Ubuntu, Debian и т.д.)</p>
<p dir="auto"><strong>Зачем нужно:</strong> устанавливать, обновлять и удалять программы</p>
<pre><code class="language-bash"># Обновление списка доступных пакетов
sudo apt update

# Установка пакета
sudo apt install nodejs

# Установка нескольких пакетов одновременно
sudo apt install git curl wget

# Обновление установленных пакетов до последней версии
sudo apt upgrade

# Удаление пакета
sudo apt remove nodejs

# Удаление пакета и его конфигурационных файлов
sudo apt purge nodejs

# Поиск пакета
apt search postgres
postgresql - object-relational SQL database
postgresql-client - front-end programs for PostgreSQL
...

# Показание информации о пакете
apt show nodejs
Package: nodejs
Version: 18.12.1-1nodesource1
Priority: optional
Section: devel
...
</code></pre>
<hr />
<h3>yum / dnf (RedHat/Fedora)</h3>
<p dir="auto"><strong>Что это:</strong> менеджер пакетов для RedHat-based систем (Fedora, RHEL, CentOS)</p>
<p dir="auto"><strong>Зачем нужно:</strong> то же самое, что apt, но для другого семейства Linux</p>
<pre><code class="language-bash"># Обновление списка пакетов (обычно автоматически)
sudo dnf check-update

# Установка пакета
sudo dnf install nodejs

# Обновление пакетов
sudo dnf upgrade

# Удаление пакета
sudo dnf remove nodejs

# Поиск пакета
sudo dnf search postgres
</code></pre>
<hr />
<h2>8. Работа с текстом и обработка данных</h2>
<h3>wc (Word Count)</h3>
<p dir="auto"><strong>Что это:</strong> считает строки, слова и символы в файле</p>
<p dir="auto"><strong>Зачем нужно:</strong> получить статистику по размеру файла</p>
<pre><code class="language-bash"># Подсчёт строк, слов и символов
wc document.txt
  42  156  1024 document.txt
# 42 строки, 156 слов, 1024 символа

# Только количество строк (флаг -l)
wc -l log.txt
1523 log.txt

# Только количество слов (флаг -w)
wc -w document.txt
156 document.txt

# Только количество символов (флаг -c)
wc -c document.txt
1024 document.txt

# Для нескольких файлов и итога
wc -l *.log
   100 file1.log
   250 file2.log
   180 file3.log
   530 total
</code></pre>
<hr />
<h3>sort и uniq</h3>
<p dir="auto"><strong>Что это:</strong> sort сортирует строки, uniq удаляет дубликаты</p>
<p dir="auto"><strong>Зачем нужно:</strong> организовать или очистить данные</p>
<pre><code class="language-bash"># Сортировка содержимого файла
sort data.txt
# выведет строки в алфавитном порядке

# Числовая сортировка (флаг -n)
sort -n numbers.txt
# отсортирует как числа, а не строки
# "2" будет перед "10", а не после

# Сортировка в обратном порядке (флаг -r)
sort -r data.txt

# Удаление дубликатов (при условии, что файл отсортирован)
sort data.txt | uniq

# Показание только дубликатов (флаг -d)
sort data.txt | uniq -d

# Показание количества повторений (флаг -c)
sort data.txt | uniq -c
      3 apple
      1 banana
      2 cherry
</code></pre>
<hr />
<h3>cut</h3>
<p dir="auto"><strong>Что это:</strong> извлекает колонки из текста</p>
<p dir="auto"><strong>Зачем нужно:</strong> получить определённые поля из структурированных данных</p>
<pre><code class="language-bash"># Извлечение 1-го и 3-го полей, разделённых табуляцией
cut -f1,3 data.tsv

# Извлечение первых 10 символов каждой строки (флаг -c)
cut -c1-10 long_text.txt

# Указание другого разделителя (флаг -d)
cut -d',' -f1,2 data.csv
# для CSV файлов, где разделитель - запятая
</code></pre>
<hr />
<h2>9. Перенаправление и pipes</h2>
<p dir="auto">Это очень важно для работы в Linux. Pipes позволяют связывать команды вместе.</p>
<h3>Pipe (|)</h3>
<p dir="auto"><strong>Что это:</strong> передаёт вывод одной команды на вход другой</p>
<p dir="auto"><strong>Зачем нужно:</strong> объединять простые команды в мощные цепочки</p>
<pre><code class="language-bash"># Вывести только строки с ошибками из большого лог-файла
cat huge_log.txt | grep "ERROR"

# Отсортировать ошибки
cat huge_log.txt | grep "ERROR" | sort

# Удалить дубликаты из отсортированного списка
cat huge_log.txt | grep "ERROR" | sort | uniq

# Подсчитать количество ошибок
cat huge_log.txt | grep "ERROR" | wc -l
42

# Более сложный пример: найти 5 самых частых ошибок
cat huge_log.txt | grep "ERROR" | cut -d' ' -f4 | sort | uniq -c | sort -rn | head -5
      15 Connection
       8 Timeout
       7 Authentication
       6 Database
       4 Memory
</code></pre>
<hr />
<h3>Перенаправление ввода-вывода (&gt;, &gt;&gt;, &lt;)</h3>
<p dir="auto"><strong>Что это:</strong> перенаправляет вывод команды в файл или входные данные из файла</p>
<p dir="auto"><strong>Зачем нужно:</strong> сохранять результаты команд в файлы</p>
<pre><code class="language-bash"># Перенаправление вывода в файл (перезапишет файл)
echo "Hello" &gt; output.txt
# содержимое output.txt: Hello

# Добавление вывода в конец файла (не перезапишет)
echo "World" &gt;&gt; output.txt
# содержимое output.txt: Hello\nWorld

# Перенаправление входа из файла
cat &lt; input.txt

# Перенаправление ошибок в файл (2 это stderr)
ls /nonexistent 2&gt; errors.txt
# нормальный вывод в консоль, ошибки в файл

# Перенаправление и нормального вывода и ошибок в один файл
ls /nonexistent &gt; output.txt 2&gt;&amp;1

# Отправка вывода в никуда (полезно для скрытия сообщений)
rm /tmp/* 2&gt;/dev/null
</code></pre>
<p dir="auto"><strong>Как это работает:</strong> операционная система имеет три стандартных потока: stdin (0), stdout (1) и stderr (2). Перенаправление меняет, куда идёт данный поток.</p>
<hr />
<h2>10. Полезные утилиты</h2>
<h3>echo</h3>
<p dir="auto"><strong>Что это:</strong> выводит текст</p>
<p dir="auto"><strong>Зачем нужно:</strong> выводить сообщения, переменные, создавать содержимое файлов</p>
<pre><code class="language-bash"># Простой вывод
echo "Hello, World!"
Hello, World!

# Вывод переменной
echo $HOME
/home/user

# Вывод без переноса строки (флаг -n)
echo -n "Enter name: "

# Вывод с интерпретацией escape-последовательностей (флаг -e)
echo -e "Line 1\nLine 2\tTabbed"
Line 1
Line 2    Tabbed

# Создание файла с содержимым
echo "server=localhost" &gt; config.txt
</code></pre>
<hr />
<h3>man (Manual)</h3>
<p dir="auto"><strong>Что это:</strong> показывает справку (man-страницы) по командам</p>
<p dir="auto"><strong>Зачем нужно:</strong> узнать подробности о команде, её флаги и примеры</p>
<pre><code class="language-bash"># Справка по команде
man ls
# откроется справка, используйте Space для навигации, q для выхода

# Поиск команды по ключевому слову
man -k "copy"
# выведет все команды, связанные со словом "copy"

# Примеры:
man grep
man chmod
man find
</code></pre>
<hr />
<h3>which и whereis</h3>
<p dir="auto"><strong>Что это:</strong> найти, где находится исполняемый файл команды</p>
<p dir="auto"><strong>Зачем нужно:</strong> узнать полный путь к программе</p>
<pre><code class="language-bash"># Полный путь к исполняемому файлу
which python3
/usr/bin/python3

# Более подробная информация (источник, man-страница, и т.д.)
whereis python3
python3: /usr/bin/python3 /usr/share/man/man1/python3.1.gz
</code></pre>
<hr />
<h3>date</h3>
<p dir="auto"><strong>Что это:</strong> выводит текущую дату и время</p>
<p dir="auto"><strong>Зачем нужно:</strong> узнать текущее время или использовать в скриптах</p>
<pre><code class="language-bash"># Текущая дата и время
date
Fri Jan  9 10:36:45 MSK 2026

# Пользовательский формат
date "+%Y-%m-%d %H:%M:%S"
2026-01-09 10:36:45

# Использование в скриптах для создания файлов с датой
backup_file="backup_$(date +%Y%m%d_%H%M%S).tar.gz"
echo $backup_file
backup_2026010910364501_363645.tar.gz
</code></pre>
<hr />
<h3>tar</h3>
<p dir="auto"><strong>Что это:</strong> упаковывает и распаковывает архивы</p>
<p dir="auto"><strong>Зачем нужно:</strong> создавать резервные копии, передавать группы файлов</p>
<pre><code class="language-bash"># Создание архива (флаг c, v - вывод процесса, f - файл)
tar -cvf archive.tar folder/
folder/
folder/file1.txt
folder/file2.txt

# Создание сжатого архива (.tar.gz через флаг z)
tar -cvzf archive.tar.gz folder/

# Распаковка архива
tar -xvf archive.tar

# Распаковка .tar.gz
tar -xvzf archive.tar.gz

# Список содержимого архива (без распаковки)
tar -tvf archive.tar
drwxr-xr-x user/user          0 2026-01-09 10:35 folder/
-rw-r--r-- user/user       1024 2026-01-09 10:35 folder/file1.txt
</code></pre>
<hr />
<h3>du (Disk Usage)</h3>
<p dir="auto"><strong>Что это:</strong> показывает размер файлов и папок</p>
<p dir="auto"><strong>Зачем нужно:</strong> узнать, сколько места занимает папка</p>
<pre><code class="language-bash"># Размер текущей папки
du .

# Размер в понятном формате (MB, GB)
du -h
256K    ./config
1.2M    ./logs
45M     ./data
1.3G    ./cache

# Итоговый размер только
du -sh .
48G     .

# Размер конкретной папки
du -sh /home/user/Downloads
3.5G    /home/user/Downloads

# 10 самых больших папок
du -h . | sort -rh | head -10
</code></pre>
<hr />
<h3>df (Disk Free)</h3>
<p dir="auto"><strong>Что это:</strong> показывает свободное место на диске</p>
<p dir="auto"><strong>Зачем нужно:</strong> проверить, хватает ли места на диске</p>
<pre><code class="language-bash"># Показание свободного места
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       100G   65G   35G  65% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/sda2       500G  420G   80G  84% /home

# По файловой системе (флаг -i показывает inodes)
df -i
</code></pre>
<hr />
<h2>11. Работа с переменными окружения</h2>
<h3>export</h3>
<p dir="auto"><strong>Что это:</strong> устанавливает переменную окружения</p>
<p dir="auto"><strong>Зачем нужно:</strong> передать переменную всем дочерним процессам (программам)</p>
<pre><code class="language-bash"># Установка переменной для текущей сессии
export PATH="/usr/local/bin:$PATH"

# Использование переменной
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

# Частая переменная - HOME (домашняя папка)
echo $HOME
/home/user

# USER - текущий пользователь
echo $USER
user

# Переменная для программ (например, NODE_ENV для Node.js)
export NODE_ENV=production
node app.js  # приложение получит переменную
</code></pre>
<hr />
<h2>12. Комбинирование команд</h2>
<h3>&amp;&amp; (И) и || (ИЛИ)</h3>
<p dir="auto"><strong>Что это:</strong> условное выполнение нескольких команд</p>
<p dir="auto"><strong>Зачем нужно:</strong> выполнить команды в определённом порядке или только при успехе</p>
<pre><code class="language-bash"># Выполнить вторую команду, если первая успешна (&amp;&amp;)
cd project &amp;&amp; npm install
# cd выполнится, и если успешно, то выполнится npm install

# Выполнить вторую команду, если первая не успешна (||)
cd /nonexistent || echo "Directory not found"
# cd не выполнится, но выведет "Directory not found"

# Комбинирование
mkdir backup &amp;&amp; cp -r project backup || echo "Backup failed"
</code></pre>
<hr />
<h2>Практические примеры использования</h2>
<h3>Пример 1: Поиск и удаление больших логов</h3>
<pre><code class="language-bash"># Найти все файлы .log больше 100 MB и удалить
find /var/log -name "*.log" -size +100M -exec rm {} \;

# Или с подтверждением перед удалением
find /var/log -name "*.log" -size +100M -exec rm -i {} \;
</code></pre>
<hr />
<h3>Пример 2: Резервная копия с датой</h3>
<pre><code class="language-bash"># Создать архив с датой в названии
tar -czf "backup_$(date +%Y%m%d_%H%M%S).tar.gz" important_folder/

# Вывод:
# backup_20260109_103645.tar.gz
</code></pre>
<hr />
<h3>Пример 3: Мониторинг нового содержимого в логе</h3>
<pre><code class="language-bash"># Смотреть новые строки в логе в реальном времени
tail -f /var/log/syslog | grep "ERROR"

# Альтернатива с цветным выводом (если система поддерживает)
tail -f /var/log/syslog | grep --color=auto "ERROR"
</code></pre>
<hr />
<h3>Пример 4: Подсчёт количества файлов по типам</h3>
<pre><code class="language-bash"># Сколько JavaScript файлов в проекте
find . -name "*.js" | wc -l

# Какие расширения файлов есть в проекте
find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
      234 js
       89 json
       45 md
       12 html
</code></pre>
<hr />
<h3>Пример 5: Поиск и удаление дублирующихся файлов по имени</h3>
<pre><code class="language-bash"># Найти все файлы, которые встречаются в папке несколько раз
find . -type f -exec basename {} \; | sort | uniq -d

# Найти конкретный дублирующийся файл
find . -name "config.js" -ls
# Покажет ВСЕ файлы с именем config.js и их размер
</code></pre>
<hr />
<h2>Заключение</h2>
<p dir="auto">Эти команды покрывают 80-90% повседневной работы в Linux/Unix. Ключ к мастерству:</p>
<ol>
<li><strong>Понимайте, что делает каждая команда</strong> - не просто копируйте команды, понимайте логику</li>
<li><strong>Используйте man страницы</strong> - <code>man command</code> всегда даст вам полную информацию</li>
<li><strong>Экспериментируйте</strong> - практика - лучший учитель</li>
<li><strong>Комбинируйте команды</strong> - мощь Unix в ability объединять простые инструменты в сложные цепочки (pipes)</li>
<li><strong>Будьте осторожны с rm</strong> - Linux не имеет корзины!</li>
</ol>
<p dir="auto">Удачи в изучении Linux!</p>
]]></description><link>https://forum.exlends.ru/topic/382/gajd-po-samym-vazhnym-komandam-linux-unix-dlya-novichkov</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 09:11:16 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/382.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Jan 2026 19:41:23 GMT</pubDate><ttl>60</ttl></channel></rss>