<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Инструменты терминала Linux</title>
    <description>Серия статей с объяснениями и примерами.</description>
    <link>https://tproger.ru/tag/linux-terminal-tools</link>
    <atom:link href="https://tproger.ru/tag/linux-terminal-tools/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Tue, 06 Oct 2026 05:32:17 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Инструменты терминала Linux</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Терминал в Windows 11 — это больше не стыдно. 15 полезных и популярных команд, которые мы оценили</title>
      <link>https://tproger.ru/articles/terminal-v-windows-11---eto-bolwe-ne-stydno--15-poleznyh-i-populyarnyh-komand--kotorye-my-ocenili</link>
      <comments>https://tproger.ru/articles/terminal-v-windows-11---eto-bolwe-ne-stydno--15-poleznyh-i-populyarnyh-komand--kotorye-my-ocenili?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Владислав Устинов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/terminal-v-windows-11---eto-bolwe-ne-stydno--15-poleznyh-i-populyarnyh-komand--kotorye-my-ocenili</guid>
      <description><![CDATA[<p>null</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/terminal-v-windows-11---eto-bolwe-ne-stydno--15-poleznyh-i-populyarnyh-komand--kotorye-my-ocenili">Терминал в Windows 11 — это больше не стыдно. 15 полезных и популярных команд, которые мы оценили</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Windows 11]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 15 Dec 2025 11:50:02 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Зачем вообще нужен терминал?</h2><p>Конечно, у нас есть прекрасная IDE, там много кнопок, интуитивно понятный интерфейс, не надо заучивать команды, но в некоторых случаях это не самое удобное решение.</p><p>Во-первых, не все инструменты разработки поддерживают графический интерфейс. Сделать копию проекта через git или установить библиотеку для python через pip без терминала будет проблематично.</p><p>Во-вторых, через терминал проще закрывать регулярно повторяющиеся задачи. Допустим, в конце дня вы всегда делаете одно и то же: собираете проект, очищаете временные файлы и складываете результат в общую папку для тестировщиков. Вам нужно открыть IDE, собрать проект, открыть проводник, найти папку build, удалить старые файлы, создать новый ZIP-архив, переименовать его и перетащить в \\share\releases.</p><p>В терминале эти шаги можно оформить в простой скрипт, например Build-And-Archive.ps1, где по порядку будут автоматизированы все шаги: очистка старой сборки, новая сборка, упаковка в ZIP и копирование в нужную папку. Дальше вся процедура сводится к одной команде:.\Build-And-Archive.ps1.</p><p>Скрипт каждый раз делает одно и то же, не забывает шаги и не меняет порядок действий, а вы освобождаете себе время и голову от механической работы.</p><h2>Терминал Windows 11, консоль и PowerShell, чем они отличаются</h2><p>Прежде чем перейти к командам для терминала, стоит разобраться, что это такое, чем он отличается от консоли и PowerShell.</p><p>Консоль — это старая командная строка (cmd.exe) из прошлых версий Windows. В ней работают классические команды вроде dir и copy. То самое чёрное окно, которое многие помнят по Windows 7 и 10.</p><p>Windows Terminal — это новое окно с вкладками и настройками. Сам по себе терминал команд не выполняет. Он просто открывает внутри себя нужную оболочку: PowerShell, cmd или WSL и показывает их вывод.</p><p>PowerShell — современная командная оболочка и язык скриптов от Microsoft. Именно PowerShell запускается по умолчанию в терминале.</p><h2>Как изменился терминал c выходом Windows 11</h2><p>С момента выхода Windows 11 у системы поменялся терминал. Раньше это было обычное чёрное окно conhost.exe, которое запускало оболочку cmd.exe. В 11-й версии ОС добавили Windows Terminal в качестве утилиты по умолчанию. Раньше его надо было скачивать отдельно. Терминал стал дефолтным хостом для всех консольных приложений. По умолчанию в нём теперь запускается PowerShell. Там же можно настроить запуск WSL.</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/cb28543e-9fd6-4045-b2ff-2a659448569a.jpg" alt="" /><figcaption>Как выглядит терминал Windows 11</figcaption></figure><p>Интерфейс в сравнении со старым дефолтным терминалом тоже изменился, теперь здесь есть вкладки, между ними можно переключаться как в браузере, есть функция разделения вкладок.</p><p>Ещё Microsoft добавила больше возможностей для кастомизации, например, поддержку цветовых тем, возможность установки фоновых изображений, настройки с графическим интерфейсом.</p><p>В итоге за последние годы терминал Windows сильно изменился и приблизился в плане удобства к аналогам на Mac OS и Linux.</p><h2>Какие команды для PowerShell упростят разработку</h2><p>Когда мы говорим о запуске команд в терминале Windows 11, важно понимать, что большинство рассмотренных ниже команд — это алиасы.</p><p>Изначально в PowerShell было много длинных команд, писать которые неудобно, например: Test-NetConnection. Поэтому Microsoft ввела алиасы — сокращения. К примеру, чтобы вызвать команду Test-NetConnection, мы можем просто ввести в терминале алиас tnc. Такой подход экономит время и упрощает работу.</p><h2>Работа с папками, файлами и текстом</h2><p><b>cd (Set-Location)</b> — отвечает за перемещение между папками. Например, cd C:\Projects переведёт вас в папку с проектами. При помощи команды cd .. можно подняться на уровень выше, а если написать часть имени папки/файла и нажать Tab, то команда допишет это имя.</p><p>cd это удобно, когда мы регулярно используем один и тот же путь или глубокие пути. Например:</p><p>C:\Users\Vladislav\Documents\Projects\Tproger\powershell-article\examples\logs</p><p>Это длинный путь, нам придётся проделать много кликов в проводнике, чтобы пройти по нему. Но при помощи cd и Tab терминал сам допишет название путей по первым знакам.</p><p>Ещё это удобно, когда вы уже работаете в терминале и не хотите открывать проводник, либо если нужно получить доступ к служебной папке, например, AppData, которая в проводнике Windows по умолчанию не отображается.</p><p><b>ls (Get-ChildItem)</b> — команда для просмотра содержимого папки. Она показывает папки и файлы, расположенные по указанному пути.</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/6908d17b-c706-4164-9fdd-b061b97eab46.jpg" alt="" /><figcaption>Пример использования команды ls</figcaption></figure><p>С её помощью можно фильтровать содержимое по маске при помощи синтаксиса: *.ИМЯ ФОРМАТА. Например:</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/cee38ef7-82cb-41bb-89fb-32abb20457bb.jpg" alt="" /><figcaption>Пример использования команды ls</figcaption></figure><p>Здесь при помощи ls *.json мы отфильтровали содержимое папки и оставили только файлы формата json.</p><p>Ещё ls умеет показывать скрытое содержимое при помощи параметра -Force:</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/86168212-38d7-43c6-b278-2b1d3e0b693e.jpg" alt="" /><figcaption>Пример использования команды ls</figcaption></figure><p>Напротив скрытых параметров выводится атрибут h.</p><p>Команда ls удобна, когда надо быстро проверить, создался ли лог после запуска скрипта, появилась ли новая сборка или если надо увидеть скрытые файлы, не тратя время на манипуляции мышью.</p><p><b>mkdir (New-Item)</b> — создаёт новые папки.</p><p>Простой пример: mkdir logs сделает папку logs в текущей директории, а mkdir src\components — подпапку внутри src (если src уже есть).</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/504cab93-11c1-4331-851f-109f576911e2.jpg" alt="" /><figcaption>Пример использования команды mkdir</figcaption></figure><p>Это быстрее, чем кликать правой кнопкой в проводнике и выбирать «Создать папку». Вы можете сразу накидать структуру проекта одной командой:</p><p>Результат:</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/56b81b30-1c6d-4b5c-9dd8-36730e218a92.jpg" alt="" /><figcaption>Пример использования команды mkdir</figcaption></figure><p>Здесь мы перешли в папку FlutterReader, создали внутри неё папки: src, tests, doc и внутри src создали папку component при помощи одной команды.</p><p><b>sls (Select-String)</b> ищет текст внутри файлов и вывода команд. Например, sls “ERROR” .\logs\app.log покажет строки, где в логе есть ERROR. Так вы быстрее найдёте нужную ошибку, не пролистывая весь файл в редакторе.</p><p>Можно искать сразу по нескольким файлам:</p><p>sls “TODO” -Path .\src*.cs </p><p>В этом примере мы ищем строку TODO в папке src во всех C# файлах.</p><p><b>gc -Wait (Get-Content)</b> — показывает содержимое файла и вылавливает новые строки в реальном времени.</p><p>Без параметра -Wait команда просто выводит файл и завершается. С -Wait она остаётся запущенной и допечатывает всё, что дописывается в файл.</p><p>Например, gc -Wait log.txt покажет записи файла log.txt:</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/21e88ab5-07a0-4b65-ac98-0845dc3743d2.jpg" alt="" /><figcaption>Пример использования команды gc</figcaption></figure><p>Эту команду удобно использовать во время разработки: запустили сервер, открыли лог в терминале и сразу видите новые ошибки и запросы, не обновляя окно и не открывая файл в редакторе каждый раз.</p><p><b>ii (Invoke-Item)</b> — команда, которая имитирует двойной клик мышью и запускает действие по умолчанию. Если мы выберем папку, то откроем её в проводнике, если выберем exe файл, то запустим приложение и так далее.</p><p>Например, ii .\app.log — запустит файл лога в приложении по умолчанию (обычно блокнот или редактор кода).</p><p>Это удобно, когда вы уже что-то делали в терминале: запустили сборку, посмотрели содержимое папки, а потом хотите быстро открыть результат или лог в графическом приложении. Вместо того чтобы заново искать путь в проводнике, вы вызываете ii прямо из той же директории и продолжаете работать.</p><h2>Сеть и диагностика</h2><p><b>tnc (Test-NetConnection)</b>. Если вы уже пользовались PowerShell для диагностики сети, то, возможно, знаете команду ping, которая проверяет связь соединения. Она отправляет ICMP-пакеты на хост и получает его IP адрес, скорость передачи пакетов, процент их потери.</p><p>tnc  работает похожим образом, но даёт чуть больше данных. Команда показывает информацию о пакетах, IP, интерфейсе.</p><p>При помощи параметра -Port вы можете проверить работу конкретного порта, например:</p><p>tnc ya.ru -Port 443</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/12cdc43f-c901-42df-bcc4-a5602040b25e.jpg" alt="" /><figcaption>Пример использования команды tnc</figcaption></figure><p>Это удобно, когда ничего не работает: сайт не открывается, dev-сервер не отвечает — вы быстро понимаете, проблема в сети, DNS, порте или уже где-то в приложении.</p><p><b>gip (Get-NetIPConfiguration)</b> — аналог команды ipconfig. gip покажет ваши сетевые адаптеры, их IP-адреса, шлюзы и DNS-серверы.</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/d77d6c96-8497-4479-87be-0888e29193fa.jpg" alt="" /><figcaption>Пример использования команды gip</figcaption></figure><p>Это полезно, когда пропал интернет и нужно понять, в чём дело. Например, есть ли вообще IP от роутера, не получил ли адаптер странный адрес, какой сейчас используется DNS. Вместо того чтобы кликать по настройкам сети, вы один раз запускаете gip в терминале и сразу видите картину целиком.</p><p><b>irm (Invoke-RestMethod)</b> ходит по HTTP-адресу и возвращает ответ как объект PowerShell.</p><p>Например, irm https://api.github.com вернёт JSON уже разобранным на поля, а не просто сырой текст.</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/616e3e09-5e76-48ba-bddc-9c4b990f3e0a.jpg" alt="" /><figcaption>Пример использования команды irm</figcaption></figure><p>Это удобно, когда нужно быстро проверить работу API без Postman и браузера: отправили запрос, посмотрели нужные свойства через Select-Object или Where-Object и при желании тут же передали результат дальше.</p><h2>Процессы и сервисы</h2><p><b>gps (Get-Process)</b> показывает запущенные процессы в системе. Простой gps выведет список всего, что сейчас работает:</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/318f16b1-4641-4b0e-a033-38f3a45e64d0.jpg" alt="" /><figcaption>Пример использования команды gps</figcaption></figure><p>Если написать gps и имя процесса, то команда выведет все процессы, связанные с этим именем. Например, если вы хотите увидеть все процессы Chrome, то можно написать такую команду: gps chrome</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/f2d3e9ed-4713-4497-b767-9ecc3bbc63f6.jpg" alt="" /><figcaption>Пример использования команды gps</figcaption></figure><p>Она покажет все процессы Chrome. Завершить их можно командой spps -Name chrome (или имя процесса любого другого приложения).</p><p>Вам не надо открывать диспетчер задач: вы остаётесь в терминале и быстро находите и останавливаете нужный процесс по имени.</p><p><b>gsv (Get-Service)</b> показывает службы Windows и их состояние. Простой gsv выведет список всех служб, а gsv с именем службы — только те, что связаны с этим именем:</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/73c84555-c91b-4267-8b34-4004c30dc2f4.jpg" alt="" /><figcaption>Пример использования команды gsv</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/ee7862f1-f353-47d6-b2d7-d48d72d09d36.jpg" alt="" /><figcaption>Пример использования команды gsv</figcaption></figure><p>gsv часто используют в связке с командой Restart-Service. Она позволяет перезапустить зависший сервис из терминала. Например: Restart-Service com.docker.service.</p><h2>Настройка окружения</h2><p><b>winget </b>— менеджер пакетов для Windows. С его помощью можно ставить и обновлять программы прямо из терминала. Например:</p><p>Так вы быстрее поднимаете окружение на новом ПК: один раз запускаете набор команд или скрипт и получаете git, редактор, браузер, архиватор и всё остальное без походов по сайтам и мастерам установки.</p><p><b>wsl (Windows Subsystem for Linux)</b> позволяет запускать Linux внутри Windows. Команда wsl –install ставит подсистему и дистрибутив (обычно Ubuntu), после чего у вас появляется полноценный Linux-терминал рядом с PowerShell. Это удобно, если вы разрабатываете под Linux, запускаете bash-скрипты, используете привычные утилиты вроде grep и make, но при этом остаётесь на Windows.</p><h2>Другие полезные команды</h2><p><b>Get-Help</b> — встроенная справка по командам PowerShell. Например, Get-Help sls покажет, что делает команда, какие у неё есть параметры и как ей пользоваться.</p><p>Если при выводе информация не полная и есть надпись: «не удалось найти файлы справки», можно воспользоваться командой Update-Help. Она скачает справки для всех команд, и вывод будет полным:</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/30c8687e-80f0-4999-a5ec-97c26c9e7407.jpg" alt="" /><figcaption>Пример использования команды Get-Help</figcaption></figure><p>Важный нюанс, <b>Update-Help</b> стоит запускать только из терминала с правами администратора.</p><p><b>h (Get-History)</b> показывает историю команд в текущей сессии. Просто введите h, и вы увидите список последних команд. Это удобно, когда нужно повторить длинную команду, но не хочется снова её набирать.</p><figure><img src="https://media.tproger.ru/user-uploads/105039/2025-12-10/98fe61a7-1346-4a75-98ca-071768d0278d.jpg" alt="" /><figcaption>Пример использования команды h</figcaption></figure><p>Можно комбинировать h с поиском:</p><p>Так, вы быстро найдёте, как именно ставили пакет или запускали скрипт.</p><p><b>iex (Invoke-Expression)</b> берёт строку и выполняет её как PowerShell-код. Например:</p><p>Вместо вывода строки Get-Process chrome терминал воспринимает её как команду и выполняет.</p><p>Важно: iex опасен, если вы подаёте в него текст из интернета. Конструкции вроде: irm https://пример-сайта/script.ps1 | iex могут выполнить что угодно, в том числе вредоносный код. В обычной работе разработчика iex почти не нужен: безопаснее либо запускать скрипты из файлов, либо писать команду явно.</p><h2>Как комбинировать команды</h2><p>В PowerShell команды полезны не поодиночке, а в связке. Их можно «склеивать» через символ | (пайп). Первая команда отдаёт результат, вторая его принимает и что-то с ним делает.</p><p>Например, вы смотрите лог и хотите сразу вылавливать ошибки:</p><p>gc следит за файлом, sls пропускает только строки с ERROR. Лог не надо листать вручную — новые ошибки сами прилетают в терминал.</p><p>Другой пример:</p><p>gps находит процессы Node.js, Stop-Process аккуратно их завершает. То же самое можно сделать с любым другим именем процесса.</p><p>Эту последовательность команд можно превратить в скрипт. Для этого подойдёт любой текстовый редактор, который может сохранить текст без умного форматирования, например блокнот.</p><p>В файл записываем нашу команду, например: Get-Content -Wait .\logs\app.log | Select-String “ERROR”. Далее сохраняем файл, выбираем тип «формат файлы» и следим, чтобы имя оканчивалось на .ps1, например: Watch-Errors.ps1.</p><p>Чтобы выполнить скрипт, переходим в терминале в папку, где он лежит и запускаем командой:</p><p>Так, вы собираете цепочки под свои задачи и постепенно превращаете набор команд в удобный рабочий инструмент.</p>]]></content:encoded>
    </item>
    <item>
      <title>В Ubuntu 25.10 сломались автообновления — виноват баг в Rust-утилите date</title>
      <link>https://tproger.ru/news/v-ubuntu-25-10-slomalis-avtoobnovleniya---vinovat-bag-v-rust-utilite-date</link>
      <comments>https://tproger.ru/news/v-ubuntu-25-10-slomalis-avtoobnovleniya---vinovat-bag-v-rust-utilite-date?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/v-ubuntu-25-10-slomalis-avtoobnovleniya---vinovat-bag-v-rust-utilite-date</guid>
      <description><![CDATA[<p>В Ubuntu 25.10 перестали работать автообновления из-за бага в Rust-утилите date из rust-coreutils. Canonical уже выпустила фикс</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/v-ubuntu-25-10-slomalis-avtoobnovleniya---vinovat-bag-v-rust-utilite-date">В Ubuntu 25.10 сломались автообновления — виноват баг в Rust-утилите date</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 24 Oct 2025 04:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Пользователи <b>Ubuntu 25.10 </b><a href="https://lwn.net/Articles/1043103/">столкнулись</a> с проблемой: система перестала автоматически проверять наличие обновлений.</p><p>Как сообщили разработчики, причиной стал <b>баг в Rust-версии утилиты</b> date, входящей в состав пакета <b>rust-coreutils</b>.</p><p>Ошибка затронула <b>все варианты дистрибутива</b> — от облачных инстансов и контейнерных образов до настольных и серверных установок.</p><h2>Подробности инцидента</h2><p>В Ubuntu 25.10 разработчики Canonical начали эксперимент по «оксидированию» системы — постепенному замещению классических инструментов GNU Coreutils на <b>переписанные на Rust версии</b> из проекта <b>uutils</b>.</p><p>Среди них оказалась и утилита date, которая используется в механизме проверки обновлений.</p><p>В релизе rust-coreutils <b>0.2.2-0ubuntu2</b> в date закралась ошибка, нарушающая корректную обработку времени при выполнении системных скриптов, отвечающих за автообновления. В результате <b>службы обновления не могли определить дату последней проверки</b> и прекращали работу.</p><p>Баг не влияет на <b>ручные обновления через</b> apt или другие менеджеры пакетов — только на автоматические проверки.</p><h2>Как исправить</h2><p>Canonical уже выпустила исправление в пакете <b>rust-coreutils 0.2.2-0ubuntu2.1</b>. Проверить, затронута ли система, можно командой:</p><p>Если версия ≤ 0.2.2-0ubuntu2, нужно вручную обновить пакет:</p><p>Системы, обновлявшиеся вручную или через apt upgrade, скорее всего, <b>не пострадали</b>.</p><h2>Контекст</h2><p>Переход Ubuntu на Rust-инструменты — часть более масштабного проекта Canonical по <b>повышению безопасности и надежности базовых утилит</b>. Помимо coreutils, компания тестирует и sudo-rs — переписанную на Rust версию sudo.</p><p>Однако текущий инцидент показывает, что полная замена проверенных C-реализаций на новые Rust-проекты пока сопряжена с рисками.</p><p>Canonical заявляет, что перед выходом LTS-версии в апреле 2026 года проведет <b>дополнительное тестирование Rust-утилит</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Обучение кибербезопасности и этичному хакерству: устанавливаем Kali Linux</title>
      <link>https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--ustanavlivaem-kali-linux</link>
      <comments>https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--ustanavlivaem-kali-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Иван Глинкин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--ustanavlivaem-kali-linux</guid>
      <description><![CDATA[<p>как установить на компьютер систему виртуализации и первую виртуальную машину, которая позволит пользоваться Linux. Статья выходит в рамках моего обучающего цикла для «белых хакеров», предыдущие части вы можете найти в моём профиле.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--ustanavlivaem-kali-linux">Обучение кибербезопасности и этичному хакерству: устанавливаем Kali Linux</a>»</p>]]></description>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Хакеры]]></category>
      <category><![CDATA[Информационная безопасность]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Кибербезопасность]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 21 Sep 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сегодня я, Иван Глинкин, руководитель группы аппаратных исследований в Бастионе и автор канала <a href="https://t.me/EASM_HydrAttack">HydrAttack</a>, расскажу, как установить на компьютер систему виртуализации и первую виртуальную машину, которая позволит пользоваться Linux. Статья выходит в рамках моего обучающего цикла для «белых хакеров», предыдущие части вы можете найти в моём профиле.</p><p>Начнём с установки открытого ПО для виртуализации от Oracle — <a href="https://www.virtualbox.org/">VirtualBox</a>. Он создаёт виртуальные машины (VM), которые эмулируют различные аппаратные конфигурации — это позволяет устанавливать и одновременно использовать сразу несколько операционных систем без необходимости в дополнительном оборудовании. Затем научимся устанавливать Kali Linux разными способами.</p><p><b>Чем хорош VirtualBox? У него есть несколько весомых преимуществ:</b></p><p>●      обладает кроссплатформенностью — работает на Windows, macOS, Linux и Solaris, поддерживая запуск различных операционных систем как гостевых;</p><p>●      позволяет делать снимки системы — сохранять состояние виртуальной машины и возвращаться к нему в любое время, что упрощает тестирование ПО;</p><p>●      портативный — виртуальные машины могут переноситься с одного физического компьютера на другой;</p><p>●      широкая поддержка оборудования — он эмулирует различные аппаратные компоненты, такие как процессоры, сетевые адаптеры и устройства хранения.</p><p>Давайте установим его на ваш компьютер.</p><h2>УстанавливаемVirtualBox</h2><p>Зайдите на сайт программы и перейдите на вкладку <b>Downloads</b> (скачать).</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/e32acdc5-f827-4170-a579-522f32b273e6.png" alt="" /></figure><p>Выберите вашу хостовую систему. С учётом того, что подавляющее большинство пользователей в России используют Windows, мы будем показывать процесс установки именно на этой ОС. Кликаем на <b>Windows hosts</b> и качаем установщик. Прямая ссылка на скачивание находится <a href="https://download.virtualbox.org/virtualbox/7.1.0/VirtualBox-7.1.0-164728-Win.exe">здесь</a>.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/a578b0e1-08df-4e45-b561-00b0507c6fa4.png" alt="" /></figure><p>После скачивания кликаем дважды на файл и запускаем установщик.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/6dd7d61b-4ca2-438c-b902-17f63bab1107.png" alt="" /></figure><p>Большая часть установки и выбора функционала у нас будет стандартной, поэтому можно использовать правило «Next-&gt;Next-&gt;Next». В первый раз давайте пройдемся по вопросам. Что от нас хотят?</p><p>Во-первых, у нас спрашивают, какие компоненты мы желаем установить и куда это все ставить. Выбираем все компоненты, а вот по поводу расположения — выбор за вами. По умолчанию это будет C:\Program Files.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/0e10f8ea-cc48-4fc0-b9a2-580587b88d1c.png" alt="" /></figure><p>Далее нас предупреждают, что во время установки будут перезагружены наши сетевые интерфейсы и возможна кратковременная потеря доступа к сети и Интернету. Ничего страшного, продолжаем.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/cb0a7abc-028b-416e-b432-405050990641.png" alt="" /></figure><p>Следующее предупреждение будет о том, что у нас отсутствуют зависимости Python и нужно бы их сначала поставить — хорошо, мы не против.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/633416cd-6524-4a4f-b4bd-06c82b8849ce.png" alt="" /></figure><p>Следующий шаг — выбор создания ярлыков запуска. По умолчанию выбраны все, но я предпочитаю не засорять свой Launch Bar, поэтому не дал соответствующее разрешение.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/b4db4497-9919-4fc1-8559-b170ecc9b1de.png" alt="" /></figure><p>После выбора функционала установки приступаем непосредственно к установке VirtualBox на компьютер <b>-&gt; Install</b>.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/87e5fcc5-ab88-4631-9313-b0fa1061ef13.png" alt="" /></figure><p>В процессе программа может задавать дополнительные вопросы об установке дополнительного программного обеспечения, необходимого для правильной работы системы — соглашаемся.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/823d545d-7981-4423-8863-d3fced063491.png" alt="" /></figure><p>Установщик уведомит нас о завершении процесса и предложит запустить программу — снова даем свое согласие.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/70bd91f3-6309-4783-aaab-cd0d8562165c.png" alt="" /></figure><p>Однако в нашем случае что-то пошло не так. При запуске приложения выдается ошибка и система виртуализации не запускается.</p><p>Это нормальная практика: вы, как хакер, будете постоянно сталкиваться с проблемами совместимости, старыми и новыми версиями и т.д. Например, после перехода с Python2 на Python3 и прекращения поддержки старых версий множество питоновских скриптов перестало работать, а новые библиотеки взамен старых не выпускаются. Другой яркий пример — процессор Apple Silicon серии М. Ряд приложений до сих пор не поддерживают эту архитектуру и откажутся запускаться. Тот же VirtualBox не работает на macOS нового поколения.</p><p>Чем вызвана наша текущая проблема, мы можем только догадываться. Могу предложить, что с учетом не совсем свежего «железа» ноутбука и Windows 7, новая версия VirtualBox не хочет совмещаться.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/0821e78d-dcd1-422a-909f-8cad48667803.png" alt="" /></figure><p>Давайте проверим это предположение и скачаем <a href="https://www.virtualbox.org/wiki/Download_Old_Builds">предыдущую</a> версию VirtualBox. Предлагаю перейти по ссылке, скачать версию 6.1 и попробовать установить по ранее описанному сценарию, который является аналогичным.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/156630c5-675b-4e7c-84f7-3ff9cd501fe2.png" alt="" /></figure><p>Как мы можем видеть, старая версия не только успешно установилась, но и запустилась. Отлично, теперь мы можем устанавливать Kali Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/5eded1aa-fa33-4f6f-be63-47e1eb8b5cd3.png" alt="" /></figure><h2>УстанавливаемKali Linux стандартным методом</h2><p>Перейдем на <a href="https://www.kali.org/get-kali/#kali-installer-images">сайт</a> разработчика и выберем разрядность системы (64-bit, 32-bit или Apple Silicon ARM64). Если вы не знаете разрядность своей системы — это не беда. Если у вас не macOS и компьютер/ноутбук куплен в течение последних 5 лет, то смело можете выбирать 64-битную и качать именно ее.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/9c003490-8fd2-4e5b-9028-72ad906c7a32.png" alt="" /></figure><p>Пока качается образ, нам нужно подготовить VirtualBox для установки виртуальной машины. Переходим в программу и кликаем на кнопку <b>«</b><b>Создать</b><b>»</b>. В появившемся окне назначаем имя системы, выбираем папку хранения файлов, а также тип и версию системы.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/7966fe0c-9401-426b-b0f5-6d1fa5f9b0d9.png" alt="" /></figure><p>Указываем объем виртуальной памяти – чем больше, тем лучше.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/7fc1888a-f2e9-4bd8-afcb-1c1151e80515.png" alt="" /></figure><p>Создаем новый виртуальный жесткий диск.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/5666c927-7ef3-41e2-9789-e8aee6cbe825.png" alt="" /></figure><p>Указываем тип виртуального жесткого диска.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/1e868a22-4fed-483d-bb95-52049a16c9f1.png" alt="" /></figure><p>Формат я предлагаю так же оставить <b>«</b><b>По умолчанию»</b>. Если вдруг по каким-то причинам ваша системапамять вашей системы забьется, динамический виртуальный жесткий диск автоматически увеличится в объемах.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/80b497fa-9f00-43ac-a524-d564326873d0.png" alt="" /></figure><p>Выбираем минимальный размер файла.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/c177feb5-1bbb-4c41-acc5-fabfc3cc7210.png" alt="" /></figure><p>Все – наша машина готова к установке.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/659ae50a-34d0-43e1-9ea4-58b1d0c908ca.png" alt="" /></figure><p>Выбираем нашу Kali и кликаем по кнопке <b>«</b><b>Запустить</b><b>»</b>. Система предложит выбрать загрузочный диск. Выбираем только что скачанный образ kali-linux-2024.3-installer-amd64.iso и кликаем <b>«</b><b>Продолжить</b><b>»</b>.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/9feaa6cb-2d20-45c6-aff1-c4a36378f161.png" alt="" /></figure><p>Так как это ваш первый опыт установки, выбираем графическую установку.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/d31f244e-4d0d-4394-976e-6e3abfc16ffc.png" alt="" /></figure><p>При выборе языка системы предлагаю оставить английский — так удобнее.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/344247f9-c986-4a30-9620-ee9823f11b91.png" alt="" /></figure><p>После этого Kali начнет предустановку и загрузку дополнительных файлов.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/1f5a2e11-e789-4dc8-b0cc-e52b1594b0ab.png" alt="" /></figure><p>Следующим шагом нам будет предложено выбрать имя нашего виртуального компьютера. Я предлагаю не изобретать велосипед и остановится на <b>kali</b>.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/29fc1b60-010e-4e98-80f3-a2578fef5ee2.png" alt="" /></figure><p>Далее имя пользователя и пароль. Пользователь, конечно, <b>hacker</b>, но пароль остается за вами.</p><p>Следующим шагом будет логическая разбивка диска на части. Что это такое?</p><p>Вы наверняка помните, когда ранее устанавливали Windows и у вас был только один физический диск, вы делили его на диск C, куда устанавливали систему и важные программы, и диск D, где будет находиться все остальное.</p><p>В Linux устроено так же, но намного более гибко относительно выбора разделов. В настоящее время с учетом того, что мы устанавливаем виртуальную машину и нет необходимости делении на части, мы оставим все как есть. Выбираем первую опцию – <b>«</b><b>И</b><b>спользовать весь диск</b><b>»</b>.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/7a514535-5ae3-40ae-8731-20693a6338b0.png" alt="" /></figure><p>Нам предлагают записать все файлы в один раздел – давайте согласимся с разработчиками.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/d0400394-8377-4e3c-aa79-3713cbb2f84b.png" alt="" /></figure><p>Важный шаг: когда нас спрашивают о том, согласны ли мы с выбором, то по умолчанию указано <b>«</b><b>Н</b><b>ет</b><b>»</b>. Давайте перенесем выбор на <b>«</b><b>Да</b><b>»</b> и продолжим установку.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/86fcf417-4dd4-46c6-babe-91d4e0cc8480.png" alt="" /></figure><p>Далее нас просят выбрать графическое окружение, то есть то, как красиво будет выглядеть наш Linux. Оставляем по умолчанию <b>xfce</b>, так как он самый легковесный.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/35f10b16-fd3d-44bb-9fe0-aac678b93396.png" alt="" /></figure><p>Следующий выбор: <b>GRUB-загрузчик</b>. Обязательно устанавливаем.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/9de230b2-57ac-4411-9b46-79df41d0e040.png" alt="" /></figure><p>Вот здесь предельно внимательно. По умолчанию выбрано <b>«</b><b>Выберите устройство вручную</b><b>»</b>. Но так как у нас уже указан <b>/dev/sda</b>, выбираем его, иначе Kali не запустится.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/7bb31c08-74d3-4479-a079-0ce201f55f0a.png" alt="" /></figure><p>После окончания установки и перезагрузки нас приветствует экран загрузки.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/d3342765-cc00-4047-aa24-dbadb8c33abe.png" alt="" /></figure><p>Отлично, мы установили нашу Kali Linux!</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/8e610ccd-ab5d-4495-9912-fa9474335114.png" alt="" /></figure><h2>УстанавливаемKali быстрым методом</h2><p>После того, как мы прошли весь путь установки Kali с нуля, можно немного расслабиться и перейти к более быстрому и простому способу — установке с помощью предустановленной системы. Для этого давайте снова перейдем на страницу вендора для скачивания дистрибутива Кали, но в этот раз перейдем на вкладку <a href="https://www.kali.org/get-kali/#kali-virtual-machines">Pre-built VMs</a>.</p><p>На странице будут представлены сборки для разного виртуального окружения. Однако с учетом того, что мы используем VirtualBox, выбираем именно этот пункт и качаем образ.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/32611b08-0b8c-4f4f-b43f-445883502c28.png" alt="" /></figure><p>После скачивания и разархивирования архива у нас появятся два файла. Дважды кликаем на первый — синий с типом данных <b>VirtualBox Machine Definition</b>.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/924659a8-062d-4fb9-94ff-99db090879b1.png" alt="" /></figure><p>В нашем окне VirtualBox моментально появится еще одна предустановленная система.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/6ec0c892-fc12-419a-9a41-75f094fb67e7.png" alt="" /></figure><p>Выбираем ее и запускаем. Kali сразу начинает запускаться.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/7c2eef09-a04f-4b64-a084-6b7a357f0fca.png" alt="" /></figure><p>После ввода стандартных логина (kali) и пароля (kali) система нас запускает.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-15/17f3bca9-a8e8-441b-b05e-f046c60e1f41.png" alt="" /></figure><p>Как так быстро получилось? Разработчик за нас уже установил систему со стандартными настройками и сохранил этот образ. После этого мы его скачали и просто подгрузили в нашу систему. Обязательно смените пароль, установленный по умолчанию, если не хотите быть взломанным.</p><p>Сегодня мы установили <a href="https://www.virtualbox.org/">VirtualBox</a> — ПО для создания виртуальных машин, которые эмулируют процессоры, сетевые адаптеры и устройства хранения, что позволяет устанавливать и использовать одновременно несколько ОС. Это нам нужно для того, чтобы установить Linux на Windows, а возможно это только через ВМ. Затем мы научились устанавливать Kali Linux двумя способами: стандартным и ускоренным.</p><p>Не пропустите следующую статью цикла и пишите ваши впечатления и вопросы в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>20 команд Linux, которые не стоит запускать, либо запускать с особой осторожностью</title>
      <link>https://tproger.ru/articles/20-komand-linux--kotorye-ne-stoit-zapuskat--libo-zapuskat-s-osoboj-ostorozhnostyu</link>
      <comments>https://tproger.ru/articles/20-komand-linux--kotorye-ne-stoit-zapuskat--libo-zapuskat-s-osoboj-ostorozhnostyu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Александр про DevOps]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/20-komand-linux--kotorye-ne-stoit-zapuskat--libo-zapuskat-s-osoboj-ostorozhnostyu</guid>
      <description><![CDATA[<p>Узнайте о 20 командах Linux, которые могут уничтожить вашу систему, данные и ресурсы, если использовать их без осторожности. Этот список поможет вам избежать ошибок и защитить вашу работу.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/20-komand-linux--kotorye-ne-stoit-zapuskat--libo-zapuskat-s-osoboj-ostorozhnostyu">20 команд Linux, которые не стоит запускать, либо запускать с особой осторожностью</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 14 Sep 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Linux — мощная и гибкая система, которой доверяют миллионы серверов и инженеров по всему миру. Но чем больше возможностей, тем выше риски. Некоторые команды в Linux могут не просто навредить — а уничтожить вашу систему.</p><p>Если вы разработчик, системный администратор или DevOps — знать об этих командах критически важно.</p><p>Вот 20 команд, к которым стоит относиться с особой осторожностью: понимать, что вы делаете, зачем и почему именно таким путём.</p><h2>sudo rm -rf /*</h2><p>Удаляет всё — от системных файлов до пользовательских данных. Без предупреждений. Без отката. Результат — полное уничтожение системы.</p><h2>:(){ :|:&amp; };: (Форк-бомба)</h2><p>Бесконечное самовоспроизводящееся выражение, которое забивает процессор. Система становится неотзывчивой. Только перезагрузка спасает.</p><p>Рекомендация: используйте ulimit для ограничения количества процессов.</p><h2>dd if=/dev/zero of=/dev/sda</h2><p>Перезаписывает весь диск /dev/sda нулями, блок за блоком, уничтожая все содержимое</p><p>Когда можно использовать: только при установке ОС — и точно зная, что вы делаете.</p><h2>mkfs.ext4 /dev/sda</h2><p>Форматирует диск в файловую систему ext4. В продакшене происходит мгновенная потеря всех данных.</p><h2>shutdown now</h2><p>Немедленно выключает сервер без подтверждения. Грозит прерыванием процессов, потерей данных.</p><h2>reboot</h2><p>Незапланированная перезагрузка = простои, сбои в БД, потеря транзакций.</p><h2>kill -9 -1</h2><p>Если выполнит администратор — потеря сетевого соединения, крах служб, зависание или падение всей системы. Если запустит пользователь сервиса — завершатся все процессы пользователя (включая оболочку и терминал), сессия будет немедленно закрыта, пользователь вылетит из системы.</p><figure><img src="https://media.tproger.ru/user-uploads/117640/2025-09-08/d14db08f-3e9d-4d67-b66d-7800fa290747.jpg" alt="" /></figure><h2>chmod -R 777 /</h2><p>Даёт полные права всем на всё. Система становится уязвимой для любого пользователя и атакующего.</p><h2>chown -R root:root /</h2><p>Нарушение прав доступа. Многие процессы перестанут работать корректно.</p><h2>iptables -F</h2><p>Что делает: очищает все правила брандмауэра. Сервер остаётся без защиты.</p><h2>sync; echo 3 &gt; /proc/sys/vm/drop_caches</h2><p>Очистка кэша без причины может резко снизить производительность.</p><h2>find / -name "*" -delete</h2><p>Удаляет всё, что можно найти. Даже то, что не стоит трогать.</p><h2>rsync --delete</h2><p>При неправильной настройке можно уничтожить данные на удалённой машине.</p><h2>iptables -P INPUT DROP</h2><p>Что произойдёт: вы полностью отрежете себя от сервера.</p><h2>dd if=/dev/random of=/dev/sda bs=512 count=1</h2><p>Уничтожение диска случайными данными. Без шанса на восстановление. Если диск /dev/sda — загрузочный, в первых 512 байтах хранятся важные данные: MBR — загрузочный сектор, таблица разделов (при MBR) или начало GPT (при GPT-разметке). Команда удалит эти данные.</p><p>Даже если остальной диск не затронут, без MBR или GPT он станет нечитаемым. Операционная система не загрузится. Разделы не будут определяться.</p><h2>mv /home/user/* /dev/null</h2><p>Перемещает домашнюю директорию пользователя со всеми файлами в «чёрную дыру» /dev/null. Всё, что туда сбрасывается — попадает в виртуальное «нигде», то есть бесследно исчезает.</p><figure><img src="https://media.tproger.ru/user-uploads/117640/2025-09-08/d5e79123-ff23-4b5a-a912-d78d0393b65e.jpg" alt="" /></figure><h2>Заключение</h2><p>Команды Linux — это мощный инструмент. Но без понимания последствий они превращаются в оружие массового уничтожения.</p><p>Всегда проверяйте, что вы запускаете. Делайте бэкапы. И соблюдайте принцип наименьших привилегий.</p>]]></content:encoded>
    </item>
    <item>
      <title>На смартфонах Google Pixel появился встроенный Linux Terminal с обновлением Android 15</title>
      <link>https://tproger.ru/news/--na-smartfonah-google-pixel-poyavilsya-vstroennyj-linux-terminal-s-obnovleniem-android-15</link>
      <comments>https://tproger.ru/news/--na-smartfonah-google-pixel-poyavilsya-vstroennyj-linux-terminal-s-obnovleniem-android-15?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--na-smartfonah-google-pixel-poyavilsya-vstroennyj-linux-terminal-s-obnovleniem-android-15</guid>
      <description><![CDATA[<p>Google Pixel получил встроенный Linux-терминал с Android 15. Пользователи могут запускать Debian в изолированной среде прямо на смартфоне</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--na-smartfonah-google-pixel-poyavilsya-vstroennyj-linux-terminal-s-obnovleniem-android-15">На смартфонах Google Pixel появился встроенный Linux Terminal с обновлением Android 15</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 10 Mar 2025 04:07:51 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google <a href="https://www.androidpolice.com/android-15-linux-terminal-app/">добавила</a> <b>встроенный Linux-терминал</b> в Android 15, позволяющий запускать <b>Debian в виртуальной машине</b>.</p><p>Функция ориентирована на <b>разработчиков</b>, <b>специалистов по безопасности</b> и <b>пользователей</b>, которым нужны Linux-эксклюзивные приложения.</p><p>Терминал работает в <b>изолированной среде</b>, не вмешиваясь в работу основного Android.</p><h2>Как включить Linux-терминал на Pixel</h2><p>Функция появилась в <b>обновлении Pixel Feature Drop (март 2025)</b>. Для её активации необходимо:</p><ol><li>Перейти в <b>Настройки → О телефоне</b> и <b>7 раз нажать на номер сборки</b> для включения <b>режима разработчика</b>.</li><li>Далее открыть <b>Настройки → Система → Параметры разработчика → Linux development environment</b> и активировать опцию.</li><li>После этого <b>в меню приложений появится значок Terminal</b>.</li></ol><p>При первом запуске <b>скачивается образ Debian</b> (около<b> 500 МБ</b>), после чего можно работать в терминале.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-03-10/c0561622-4f75-4f96-8311-5090cff2bc2d.jpeg" alt="" /></figure><h2>Возможности и настройки</h2><p>Текущая версия терминала позволяет:</p><ul><li><b>Настроить размер дискового пространства</b> для Linux-среды (<b>Disk Resize</b>).</li><li><b>Контролировать сетевые подключения</b> к виртуальному окружению.</li><li><b>Использовать функцию восстановления</b> для сброса раздела хранения VM.</li></ul><p>Google продолжает развивать проект: в будущих обновлениях обещают <b>ускорение работы за счёт аппаратного ускорения и полноценную графическую оболочку</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Google начал рекламировать поддельный Homebrew — популярный менеджер пакетов для macOS и Linux</title>
      <link>https://tproger.ru/news/google-nachal-reklamirovat-poddelnyj-homebrew---populyarnyj-menedzher-paketov-dlya-macos-i-linux</link>
      <comments>https://tproger.ru/news/google-nachal-reklamirovat-poddelnyj-homebrew---populyarnyj-menedzher-paketov-dlya-macos-i-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-nachal-reklamirovat-poddelnyj-homebrew---populyarnyj-menedzher-paketov-dlya-macos-i-linux</guid>
      <description><![CDATA[<p>Google Ads использовали для продвижения поддельного Homebrew с вирусом AmosStealer. Проверьте URL, избегайте рекламы и переходите по закладкам</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-nachal-reklamirovat-poddelnyj-homebrew---populyarnyj-menedzher-paketov-dlya-macos-i-linux">Google начал рекламировать поддельный Homebrew — популярный менеджер пакетов для macOS и Linux</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[Хакеры]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 22 Jan 2025 01:59:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>Хакеры снова используют Google Ads для распространения вредоносного ПО.</p><p>На этот раз они создали поддельный сайт Homebrew — популярного менеджера пакетов для macOS и Linux, чтобы заразить устройства вирусом AmosStealer.</p><p>Этот вирус крадёт учетные данные, данные браузера и криптовалютные кошельки.</p><p>Злоумышленники <a href="https://x.com/ryanchenkie/status/1880730173634699393">запустили</a> рекламную кампанию, в которой отображался правильный URL Homebrew — brew.sh. Однако при нажатии на рекламу пользователь перенаправлялся на поддельный сайт с адресом brewe.sh.</p><h2>Что происходит после перехода на сайт</h2><p>На поддельном сайте пользователям предлагалось установить Homebrew, введя команду в терминале macOS или Linux.</p><p>Визуально команда выглядела идентично той, что отображается на официальном сайте. Однако вместо установки настоящего Homebrew выполнялся скрипт, скачивающий и запускающий вирус.</p><p>AmosStealer, также известный как Atomic, способен красть данные из более чем 50 криптовалютных расширений, кошельков и браузеров. Вредоносное ПО продается киберпреступникам за $1000 в месяц.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-01-22/f9c190c5-3f1f-4429-9103-b60704307a41.jpeg" alt="" /></figure><h2>Реакция разработчиков и Google</h2><p>Лидер проекта Homebrew, Майк Маккуэйд, подтвердил обнаружение проблемы. На данный момент реклама, вроде как, удалена. Однако он выразил критику в адрес Google за недостаточный контроль над размещением объявлений.</p><p>К сожалению, несмотря на удаление вредоносной рекламы, злоумышленники могут повторить кампанию, используя другие домены для перенаправления.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-01-22/19ad1597-17c4-40bc-882c-de2bf81682df.jpeg" alt="" /></figure><h2>Как защититься</h2><p>Чтобы минимизировать риск заражения, рекомендуется:</p><ul><li>Проверять, что URL сайта совпадает с официальным адресом.</li><li>Использовать закладки для перехода на часто посещаемые сайты вместо поиска в интернете.</li><li>Избегать кликов по рекламным ссылкам, особенно в поиске Google.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>«PowerPoint — боль»: разработчик создал утилиту для создания презентаций в Терминале</title>
      <link>https://tproger.ru/news/-powerpoint---bol---razrabotchik-sozdal-utilitu-dlya-sozdaniya-prezentacij-v-terminale</link>
      <comments>https://tproger.ru/news/-powerpoint---bol---razrabotchik-sozdal-utilitu-dlya-sozdaniya-prezentacij-v-terminale?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/-powerpoint---bol---razrabotchik-sozdal-utilitu-dlya-sozdaniya-prezentacij-v-terminale</guid>
      <description><![CDATA[<p>Tuitorial — утилита для создания презентаций в Терминале с подсветкой синтаксиса, интерактивностью и поддержкой Markdown, идеальна для разработчиков</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/-powerpoint---bol---razrabotchik-sozdal-utilitu-dlya-sozdaniya-prezentacij-v-terminale">«PowerPoint — боль»: разработчик создал утилиту для создания презентаций в Терминале</a>»</p>]]></description>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Markdown]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 07 Jan 2025 06:40:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчик Bas Nijholt представил <b>Tuitorial</b> — утилиту для создания презентаций и обучающих материалов прямо в Терминале.</p><p>Этот инструмент является альтернативой традиционным программам вроде PowerPoint, предлагая лёгкость, интерактивность и поддержку кодовой подсветки.</p><h2>Основные возможности</h2><ul><li><b>Синтаксическая подсветка:</b> Поддержка множества языков программирования с настройкой стилей.</li><li><b>Выделение ключевых элементов:</b> Выделение текста с помощью регулярных выражений, номеров строк и других параметров.</li><li><b>Интерактивность:</b> Возможность пошагового представления материала с помощью клавиатуры.</li><li><b>Markdown и изображения:</b> Встраивание текстовых и графических элементов для обогащения контента.</li><li><b>Настраиваемость:</b> Конфигурация с использованием Python или YAML.</li><li><b>Живое обновление:</b> Автоматическое применение изменений при редактировании файлов.</li></ul><h2>Как установить и начать использовать?</h2><p>Tuitorial доступен для установки через <b>pip</b>:</p><p>После установки можно создавать презентации, используя простые конфигурационные файлы. Пример настройки доступен в официальной<a href="https://github.com/basnijholt/tuitorial"> документации</a>.</p><h2>Зачем это нужно?</h2><p>Tuitorial идеально подходит для:</p><ul><li><b>Разработчиков:</b> Демонстрация кода и технологий прямо в терминале.</li><li><b>Преподавателей:</b> Создание интерактивных обучающих материалов.</li></ul><p>Минималистов: Альтернатива громоздким графическим приложениям.</p>]]></content:encoded>
    </item>
    <item>
      <title>После двух лет закрытого теста вышел «убийца» iTerm 2 — эмулятор терминала Ghostty 1.0</title>
      <link>https://tproger.ru/news/posle-dvuh-let-zakrytogo-testa-vywel--ubijca--iterm-2---emulyator-terminala-ghostty-1-0</link>
      <comments>https://tproger.ru/news/posle-dvuh-let-zakrytogo-testa-vywel--ubijca--iterm-2---emulyator-terminala-ghostty-1-0?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/posle-dvuh-let-zakrytogo-testa-vywel--ubijca--iterm-2---emulyator-terminala-ghostty-1-0</guid>
      <description><![CDATA[<p>Ghostty 1.0 — новый эмулятор терминала для macOS и Linux, «убийца» iTerm 2. Быстрый, функциональный, с нативным интерфейсом. Есть поддержка xterm и Kitty</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/posle-dvuh-let-zakrytogo-testa-vywel--ubijca--iterm-2---emulyator-terminala-ghostty-1-0">После двух лет закрытого теста вышел «убийца» iTerm 2 — эмулятор терминала Ghostty 1.0</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[MIT]]></category>
      <category><![CDATA[WebAssembly]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Бета]]></category>
      <category><![CDATA[GTK]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 27 Dec 2024 02:43:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>Состоялся долгожданный релиз амбициозного эмулятора терминала — <a href="https://ghostty.org/">Ghostty 1.0</a>.</p><p>После почти двух лет разработки и закрытого бета-тестирования проект, созданный с целью превзойти существующие решения, такие как iTerm 2, будет выпущен под лицензией MIT.</p><p>Разработчик поделился подробностями о целях проекта, особенностях версии 1.0 и планах на будущее.</p><h2>Цель – лучший эмулятор терминала</h2><p>Основная идея Ghostty – предоставить пользователям macOS и Linux быструю, функциональную и имеющую нативный интерфейс альтернативу существующим эмуляторам.</p><p>Разработчик стремился создать продукт, который не заставлял бы пользователей выбирать между скоростью, функциональностью и нативным внешним видом.</p><p>Ghostty 1.0 не ставит целью революционизировать концепцию терминала, а скорее предлагает лучший опыт использования уже существующих возможностей.</p><figure><img src="https://media.tproger.ru/user-uploads/98945/2024-12-27/b1d2ea6a-c15a-4b0f-b050-4bae9ace64de.jpeg" alt="" /></figure><h2>Быстрый, функциональный и нативный</h2><p>Ключевыми характеристиками Ghostty являются скорость, богатая функциональность и нативный интерфейс.</p><p>Скорости работы было уделено особое внимание, о чем свидетельствует доклад разработчика на Systems Distributed 2024.</p><p>В плане функциональности Ghostty поддерживает больше escape-последовательностей xterm, чем любой другой эмулятор (кроме самого xterm), а также современные стандарты, такие как стилизованные подчеркивания, протокол клавиатуры Kitty и графический протокол.</p><p>Интерфейс реализуется за счет использования соответствующих системе GUI-инструментариев: на macOS – нативные инструменты, на Linux – GTK (с libadwaita, если доступно). Благодаря этому Ghostty выглядит и ощущается как родное приложение на обеих платформах.</p><h2>Версия 1.0 и причины длительного бета-тестирования</h2><p>Первый публичный релиз Ghostty сразу получит номер версии 1.0, минуя стадию ZeroVer.</p><p>Длительное закрытое бета-тестирование, в котором участвовало около 2000 человек, было обусловлено личными обстоятельствами разработчика (рождение ребенка), а также желанием выпустить стабильный и качественный продукт.</p><p>Разработчик признает, что такой подход мог создать впечатление эксклюзивности и вызвать критику, но благодарит всех тестеров за их вклад в стабильность Ghostty.</p><p>Скачать версию 1.0 можно по <a href="https://ghostty.org/">ссылке</a>.</p><h2>Планы на будущее: libghostty и расширение функциональности</h2><p>В будущем разработчик планирует развивать два основных направления: libghostty и функциональность терминальных приложений.</p><p>libghostty – это кроссплатформенная библиотека, лежащая в основе Ghostty, доступная через API на Zig и C. Цель – создать экосистему терминальных приложений, от отдельных программ до встроенных терминалов в редакторах и веб-интерфейсах.</p><p>После релиза 1.0 планируется сделать libghostty доступной как отдельную библиотеку и расширить поддержку платформ, включая WebAssembly.</p>]]></content:encoded>
    </item>
    <item>
      <title>В iTerm2 добавили ИИ для «очеловечивания» команд</title>
      <link>https://tproger.ru/news/v-iterm2-dobavili-ii-dlya--ochelovechivaniya--komand</link>
      <comments>https://tproger.ru/news/v-iterm2-dobavili-ii-dlya--ochelovechivaniya--komand?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/v-iterm2-dobavili-ii-dlya--ochelovechivaniya--komand</guid>
      <description><![CDATA[<p>В эмуляторе терминала iTerm2 появился ИИ, который переводит обычный текстовый запрос в команды, делая использование приложением легче для новичков</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/v-iterm2-dobavili-ii-dlya--ochelovechivaniya--komand">В iTerm2 добавили ИИ для «очеловечивания» команд</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 22 May 2024 07:57:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>iTerm2, самый популярный эмулятор терминала для macOS, недавно получил обновление с интеграцией ИИ. Как ни странно, оно вызвало неоднозначную реакцию пользователей.</p><h2>Новые функции ИИ</h2><p>С недавних пор iTerm2 позволяет пользователям вводить описание команды на естественном языке, после чего ИИ сгенерирует соответствующую команду.</p><p>Для этого необходимо предоставить API-ключ OpenAI, так как использование GPT требует финансовых затрат. Поддерживаются несколько моделей ИИ, включая gpt-3.5-turbo, gpt-4-turbo и gpt-4.</p><p>Еще одна новая функция — «Codecierge» — помогает пользователям шаг за шагом достигать поставленных целей, наблюдая за содержимым терминала. Эта функция также требует API-ключ OpenAI.</p><h2>Реакция пользователей</h2><p>Внедрение ИИ вызвало бурные обсуждения среди пользователей. Некоторые считают функцию полезной, особенно при работе с командами, которые сложно запомнить, такими как команды ffmpeg.</p><p>Однако часть пользователей выразили недовольство, отмечая, что интеграция ИИ может привести к утечке данных, учитывая привилегированный доступ терминала к системным секретам.</p><h2>Усталость от ИИ</h2><p>Многие пользователи жалуются на перенасыщенность рынка технологиями ИИ. Некоторые из них даже планируют перейти на другие эмуляторы терминала, не содержащие подобных интеграций.</p><p>Они ссылаются на усталость от постоянного присутствия ИИ в повседневной жизни и нарастающее ощущение утраты контроля над технологией.</p><p>Но нельзя не признать, что интеграция искусственного интеллекта в iTerm2 стала своеобразной вехой в развитии эмулятора терминала. Вопросы безопасности и прозрачности работы ИИ остаются актуальными, и время покажет, сможет ли приложение найти баланс между инновациями и удовлетворением потребностей пользователей.</p>]]></content:encoded>
    </item>
    <item>
      <title>Топ крутых команд Linux — спасителей времени</title>
      <link>https://tproger.ru/articles/top-krutyh-komand-linux-kotorye-uberegut-ot-perezatrat-vremeni</link>
      <comments>https://tproger.ru/articles/top-krutyh-komand-linux-kotorye-uberegut-ot-perezatrat-vremeni?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Лена Капаца]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/top-krutyh-komand-linux-kotorye-uberegut-ot-perezatrat-vremeni</guid>
      <description><![CDATA[<p>Подобрали семь нестандартных и забавных директив, чтобы разработка проходила быстрее и комфортнее</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/top-krutyh-komand-linux-kotorye-uberegut-ot-perezatrat-vremeni">Топ крутых команд Linux — спасителей времени</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 10 Dec 2023 15:53:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Linux — прекрасное семейство операционных систем, поскольку за долгие годы была создана огромная база тредов под любой, самый тонкий запрос. В пучине плавающих багов, ада зависимостей и прочих проблем разработчика она воспринимается как островок стабильности и спокойствия, ведь по два дня на отладку бага тратить, скорее всего, не придется. Если вы работаете с этой системой регулярно, уже запомнили основные команды Linux и ищете способ совершенствоваться в обращении с терминалом, далее я расскажу о нетиповых, но очень полезных директивах.</p><p>Начинающим же советую статью с базовыми операторами.</p><h2>nl: нумерация строк</h2><p>Порой приходится вычитывать и редактировать код прямо в CLI, ведь некоторые файлы не дублируются силами git на ноутбук намеренно. Такое встречается, например, при разработке вебхук-ботов. Если в большинстве IDE строки пронумерованы по умолчанию, то почему бы не сохранить комфорт и при работе с терминалом? Здесь поможет команда nl:</p><h2>&amp;&amp;: комбинация независимых команд</h2><p>Большинство линуксоидов знакомятся с конвейерами (pipe) на курсах и знают, как передать результат первой команды второй:</p><p>Но что писать bash, если понадобилось запустить несвязанные команды? Pipe в таком случае выпадает в ошибку. Здесь на помощь придет оператор «двойной амперсанд»:</p><p>Вывода у второй директивы нет, но файл появился:</p><h2>pv: удивляем родителей</h2><p>Это развлекательный инструмент, позволяющий имитировать скорый набор текста, как у хакеров в кино. Прежде чем баловаться этой красотой, установим pv:</p><p>Теперь запустим набор текста командами echo и pv:</p><p>Если быстро нажимать клавиши, можно ненароком стать сыном маминой подруги</p><h2>at: отложенный запуск</h2><p>Подходит для и̶м̶и̶т̶а̶ц̶и̶и̶ ̶р̶а̶б̶о̶т̶ы запуска команд в определенное время, под капотом используется утилита cron.</p><p>Если регулярных директив по расписанию собирается целая коллекция, лучше перейти на Apache Airflow. Гайд по установке ПО можно изучить здесь.</p><h2>&gt;: отправка логов в файл</h2><p>Если на вашем сервере сидит проект из нескольких десятков взаимосвязанных модулей (например, сайт на Django), то мониторить в консоли все ошибки, с которыми сталкиваются посетители портала, просто бессмысленно. Лучше наладить вывод из главного файла проекта, впоследствии почитывать трейсбеки и исправлять возникающие проблемы:</p><h2>cmatrix: raining code, как в «Матрице»</h2><p>Прекрасный скринсейвер силами сторонней утилиты. Для запуска «дождя из кода» достаточно одноименной команды:</p><h2>fold: подгонка под длину «не более 80 символов»</h2><p>Еще одна сторонняя утилита от «жертв» Vim, судя по всему, ибо горизонтальная прокрутка там неудобная:</p><p>Посмотрим, как утилита разрубила код на куски не более 80 символов:</p><p>Не нравится мне это в случае с кодом (разорвал аргумент функции), жди ошибок. Но для текстовых файлов очень удобно:</p><p>Может, вы знаете утилиту для автоматических переносов строк в коде для Linux? Поделитесь в комментариях.</p><h2>Заключение</h2><p>Команды терминала представляют собой неотъемлемую часть эффективного управления операционной системой. Знание их и корректное применение способствуют повышению производительности и обеспечивают более глубокий контроль над проектом.</p>]]></content:encoded>
    </item>
    <item>
      <title>100 команд Linux для ежедневной работы</title>
      <link>https://tproger.ru/articles/100-komand-linux-dlya-ezhednevnoj-raboty</link>
      <comments>https://tproger.ru/articles/100-komand-linux-dlya-ezhednevnoj-raboty?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/100-komand-linux-dlya-ezhednevnoj-raboty</guid>
      <description><![CDATA[<p>Рассмотрели 100 команд для терминала Linux, которые помогут вам максимально использовать возможности операционной системы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/100-komand-linux-dlya-ezhednevnoj-raboty">100 команд Linux для ежедневной работы</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 05 Oct 2023 09:37:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Одним из ключевых элементов работы на Linux является использование терминала. Он позволяет взаимодействовать с системой через текстовый интерфейс, выполнять задачи и управлять всеми аспектами вашей системы.</p><p>В этой статье мы рассмотрим команды для терминала Linux, которые помогут вам максимально использовать возможности ОС.</p><p>Начали со 100 наиболее популярных команд общего назначения, включая команды для работы с файлами и директориями, управления процессами и мониторинга системы.</p><ol><li><a href="https://tproger.ru/#one">Команды Linux для управления файлами</a></li><li><a href="https://tproger.ru/#two">Команды Linux для управления пользователями</a></li><li><a href="https://tproger.ru/#three">Команды Linux для управления приложениями</a></li><li><a href="https://tproger.ru/#four">Команды Linux для управления системой</a></li><li><a href="https://tproger.ru/#five">Команды Linux для управления процессами</a></li><li><a href="https://tproger.ru/#six">Команды Linux для управления памятью</a></li></ol><h2>Команды Linux для управления файлами</h2><ol><li>ls – отображает список файлов и каталогов в текущей директории.</li><li>cd – изменяет текущую директорию.</li><li>pwd – выводит полный путь текущей директории.</li><li>mkdir – создает новый каталог.</li><li>rm – удаляет файлы или каталоги.</li><li>cp – копирует файлы и каталоги.</li><li>mv – перемещает или переименовывает файлы и каталоги.</li><li>touch – создает новый файл или обновляет время доступа и модификации существующего файла.</li><li>cat – выводит содержимое файла.</li><li>less – позволяет просматривать содержимое файла постранично.</li><li>head – выводит первые строки файла.</li><li>tail – выводит последние строки файла.</li><li>grep – ищет заданный текст в файлах или выводе команд.</li><li>find – находит файлы и каталоги на основе различных критериев.</li><li>chmod – изменяет права доступа к файлам и каталогам.</li><li>chown – изменяет владельца файлов и каталогов.</li><li>chgrp – изменяет группу файлов и каталогов.</li><li>tar – создает или распаковывает архивы.</li><li>zip – создает ZIP-архивы.</li><li>unzip – извлекает файлы из ZIP-архивов.</li></ol><h2>Команды Linux для управления пользователями</h2><ol><li>adduser – создает нового пользователя.</li><li>usermod – изменяет параметры существующего пользователя.</li><li>deluser – удаляет пользователя.</li><li>passwd – изменяет пароль пользователя.</li><li>su – переключается на другого пользователя или становится суперпользователем.</li><li>sudo – выполняет команду с привилегиями суперпользователя.</li><li>finger – отображает информацию о пользователе.</li><li>who – отображает информацию о вошедших пользователях.</li><li>id – отображает информацию о текущем пользователе или указанном пользователе.</li><li>groups – отображает группы, к которым принадлежит пользователь.</li><li>useradd – создает нового пользователя (альтернатива для adduser).</li><li>userdel – удаляет пользователя (альтернатива для deluser).</li><li>usermod – изменяет параметры существующего пользователя (альтернатива для usermod).</li><li>passwd – изменяет пароль пользователя (альтернатива для passwd).</li><li>last – отображает историю входа пользователей.</li><li>w – отображает текущих пользователей и их активность.</li><li>logout – выходит из текущей сессии пользователя.</li></ol><h2>Команды Linux для управления приложениями</h2><ol><li>apt-get install – устанавливает новое приложение или пакет.</li><li>apt-get remove – удаляет установленное приложение или пакет.</li><li>apt-get update – обновляет список доступных обновлений пакетов.</li><li>apt-get upgrade – обновляет установленные пакеты до последних версий.</li><li>apt-cache search – ищет пакеты по ключевому слову.</li><li>dpkg -i – устанавливает .deb пакет.</li><li>dpkg -r – удаляет .deb пакет.</li><li>dpkg -l – отображает список установленных пакетов.</li><li>snap install – устанавливает приложение из snap-пакета.</li><li>snap remove – удаляет установленное snap-приложение.</li><li>snap list – отображает список установленных snap-приложений.</li><li>systemctl start – запускает системную службу.</li><li>systemctl stop – останавливает системную службу.</li><li>systemctl restart – перезапускает системную службу.</li><li>systemctl enable – включает автозапуск системной службы при загрузке системы.</li><li>systemctl disable – отключает автозапуск системной службы при загрузке системы.</li><li>service &lt;service&gt; start – запускает службу.</li><li>service &lt;service&gt; stop – останавливает службу.</li><li>service &lt;service&gt; restart – перезапускает службу.</li><li>service &lt;service&gt; status – отображает статус службы.</li></ol><h2>Команды Linux для управления системой</h2><ol><li>shutdown – позволяет выключить или перезагрузить систему. Например, shutdown -h now выключает систему немедленно.</li><li>reboot – перезагружает систему. Просто запустите reboot в терминале.</li><li>halt – выключает систему. Просто запустите halt в терминале.</li><li>poweroff – выключает систему. Просто запустите poweroff в терминале.</li><li>systemctl – команда для управления системными сервисами. Например, systemctl start apache2 запускает службу Apache.</li><li>service – альтернативный способ управления системными службами. Например, service nginx restart перезапускает службу Nginx.</li><li>ifconfig – отображает и настраивает сетевые интерфейсы системы, включая IP-адреса, маски и шлюзы.</li><li>ip – альтернативный способ управления сетевыми интерфейсами и конфигурацией сети.</li><li>netstat – отображает сетевые соединения, открытые порты и другую связанную информацию.</li><li>ping – отправляет ICMP-пакеты на указанный IP-адрес для проверки доступности хоста в сети.</li><li>traceroute – отображает путь, по которому проходят пакеты до указанного IP-адреса в сети.</li><li>ssh – устанавливает безопасное соединение с удаленным сервером по протоколу SSH.</li><li>scp – копирует файлы между удаленным и локальным серверами по протоколу SSH.</li><li>rsync – выполняет синхронизацию и копирование файлов между удаленными и локальными серверами.</li><li>crontab – позволяет управлять cron-задачами, которые выполняются автоматически по заданному расписанию.</li><li>at – позволяет запускать команды или скрипты в определенное время в будущем.</li><li>shutdown – планирует выключение или перезагрузку системы по расписанию.</li><li>nohup – запускает команду с игнорированием сигналов завершения процесса. Это полезно для выполнения задач в фоновом режиме.</li><li>history – отображает историю команд, введенных пользователем в терминале.</li></ol><h2>Команды Linux для управления процессами</h2><ol><li>top – отображает список процессов и их характеристики, такие как использование CPU и памяти.</li><li>ps – выводит список текущих запущенных процессов с их идентификаторами (PID).</li><li>kill – отправляет сигнал процессу для его завершения. Например, kill PID завершит процесс с указанным идентификатором.</li><li>pkill – отправляет сигнал процессам по их имени или другим атрибутам. Например, pkill firefox завершит все процессы Firefox.</li><li>htop – интерактивное утилита мониторинга процессов, которая позволяет видеть дополнительную информацию и управлять процессами.</li><li>free – отображает общую, использованную и свободную память системы, включая физическую и подкачку.</li><li>vmstat – предоставляет информацию о использовании памяти, процессоре, вводе-выводе, планировании и других системных ресурсах.</li><li>killall – завершает все процессы с указанным именем. Например, killall firefox завершит все процессы Firefox.</li><li>renice – изменяет приоритет процесса в реальном времени. Например, renice -n -5 -p PID увеличит приоритет процесса с указанным идентификатором.</li><li>nice – запускает процесс с более низким приоритетом. Например, nice -n 10 command запустит команду с очень низким приоритетом.</li><li>pgrep – выводит идентификаторы процессов, соответствующие указанной строке. Например, pgrep firefox выведет идентификаторы процессов Firefox.</li><li>strace – отслеживает системные вызовы и сигналы, связываемые с процессом. Можно использовать для отладки или анализа процессов.</li><li>lsof – выводит открытые файлы и сетевые соединения для всех процессов на системе.</li><li>sar – собирает информацию о использовании ресурсов системы, таких как процессор, память, сеть и диски, и сохраняет ее для последующего анализа.</li><li>uptime – выводит информацию о времени работы системы, средней загрузке и количестве активных пользователей.</li><li>time – запускает команду и отображает время, затраченное на ее выполнение, включая CPU-время и время ввода-вывода.</li></ol><h2>Команды Linux для управления памятью</h2><ol><li>smem – отображает детальную информацию об использовании памяти процессами, группами процессов и системой в целом.</li><li>sync – записывает все буферы операционной системы на диск, чтобы обеспечить сохранность данных перед завершением работы.</li><li>swapoff – отключает файл подкачки, что позволяет освободить диск, но может увеличить использование оперативной памяти.</li><li>swapon – включает файл подкачки, добавляя дополнительную виртуальную память для использования системой.</li><li>sysctl – позволяет просматривать и изменять настройки ядра, включая параметры, связанные с памятью.</li><li>ulimit – устанавливает ограничения на использование ресурсов, включая память, для отдельного пользователя или процесса.</li><li>pmap – выводит карту памяти процесса, позволяя увидеть как процесс использует физическую и виртуальную память.</li><li>slabtop – отображает информацию о кэшах ядра, которые используют физическую память системы.</li><li>ulimit – устанавливает ограничения на использование ресурсов, включая память, для отдельного пользователя или процесса.</li><li>numactl – управляет доступом процессов к памяти и процессорам, особенно в многоядерных системах.</li><li>sysrq – позволяет отправлять системным вызовом определенные команды ядру Linux, в том числе сброс памяти (Memory Management).</li><li>mdb – интерактивный отладчик для системы Solaris, который может использоваться для анализа памяти.</li></ol><h2>Заключение</h2><p>Команды для терминала Linux являются неотъемлемой частью эффективного управления ОС. Они предоставляют пользователю широкие возможности по работе с файлами, управлению пользователями, сетью, процессами и ресурсами системы.</p><p>Знание этих команд и их правильное использование позволяют улучшить производительность и обеспечить более глубокий контроль над Linux системой.</p>]]></content:encoded>
    </item>
    <item>
      <title>Helix: новый консольный редактор с мультивыделением и «умной» подсветкой кода</title>
      <link>https://tproger.ru/news/helix-novyj-konsolnyj-redaktor-s-multivydeleniem-i-umnoj-podsvetkoj-koda</link>
      <comments>https://tproger.ru/news/helix-novyj-konsolnyj-redaktor-s-multivydeleniem-i-umnoj-podsvetkoj-koda?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/helix-novyj-konsolnyj-redaktor-s-multivydeleniem-i-umnoj-podsvetkoj-koda</guid>
      <description><![CDATA[<p>Редактор работает прямо в консоли, использует привычную навигацию клавишами h, j, k и l и написан на чистом Rust без Electron и VimScript.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/helix-novyj-konsolnyj-redaktor-s-multivydeleniem-i-umnoj-podsvetkoj-koda">Helix: новый консольный редактор с мультивыделением и «умной» подсветкой кода</a>»</p>]]></description>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Pet-проекты]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 02 Jun 2021 07:42:41 GMT</pubDate>
      <content:encoded><![CDATA[<p>Неизвестный разработчик создал новый vim-образный текстовый редактор — Helix. Сам девелопер называет своё творение постмодернистским (post-modern). Объясняет он это тем, что если Neovim — это современный (modern) Vim, то его редактор — post-modern.</p><figure><img src="https://media.tproger.ru/uploads/2021/06/101.jpg" alt="" /></figure><p>Helix работает прямо в консоли, при этом основное управление позаимствовано у более ранних аналогов. Так, например, для перемещения по документу используются каноничные h, j, k и l:</p><figure><img src="https://media.tproger.ru/uploads/2021/06/102.jpg" alt="" /></figure><p>Сам проект написан на языке Rust. Без Electron, VimScript или JavaScript. Это, по словам разработчика, должно положительно сказаться на времени работы ноутбуков от аккумулятора при использовании Helix.</p><h3>Главные особенности редактора</h3><ul><li>схожая с Vim модель редактирования;</li><li>мультивыделение;</li><li>встроенная поддержка Language Server;</li><li>интеллектуальная инкрементальная подсветка синтаксиса и редактирование кода через tree-sitter.</li></ul><h3>Установка Helix</h3><p>Выполните в Терминале команды:</p><p>git clone --recurse-submodules --shallow-submodules -j8 https://github.com/helix-editor/helix</p><p>cd helix</p><p>cargo install --path helix-term</p><p>После этого скопируйте каталог /runtime куда угодно. Helix по умолчанию будет искать среду выполнения в той же папке, что и исполняемый файл, но это можно изменить с помощью переменной среды HELIX_RUNTIME.</p><p>Подробнее о проекте можно узнать в его <a href="https://github.com/helix-editor/helix">GitHub-репозитории</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Linux Shell научили понимать естественный язык с помощью OpenAI</title>
      <link>https://tproger.ru/news/linux-shell-nauchili-ponimat-estestvennyj-jazyk-s-pomoshhju-openai</link>
      <comments>https://tproger.ru/news/linux-shell-nauchili-ponimat-estestvennyj-jazyk-s-pomoshhju-openai?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linux-shell-nauchili-ponimat-estestvennyj-jazyk-s-pomoshhju-openai</guid>
      <description><![CDATA[<p>Python-оболочка переводит фразы человека в bash-команды: запрос про поиск файлов с расширением .log превращается в готовую команду find.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linux-shell-nauchili-ponimat-estestvennyj-jazyk-s-pomoshhju-openai">Linux Shell научили понимать естественный язык с помощью OpenAI</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[OpenAI]]></category>
      <category><![CDATA[YouTube]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 19 Apr 2021 10:57:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>На YouTube-канале River’s Educational Channel появилось очень интересное видео. В нём разработчик показал свой новый проект — надстройку для Linux Shell. Она способна понимать естественный язык и переводить целые фразы в команды, распознаваемые компьютером.</p><figure><img src="https://media.tproger.ru/uploads/2021/04/2-autoconverted-1.jpeg" alt="" /></figure><p>По словам девелопера, его разработка является обычная Python-оболочка. Её суть заключается в получении фраз от пользователя и, с помощью технологий OpenAI, перевода их в bash-команды.</p><h3>Как это работает на стороне пользователя?</h3><p>Например, если написать find all files ending in .log in /var/log, то надстройка переделает эту фразу в команду find /var/log -name “*.log” и выдаст соответствующие результаты:</p><figure><img src="https://media.tproger.ru/uploads/2021/04/1-autoconverted-4.jpeg" alt="" /></figure><p>Или же если попросить показать все файлы весом более 1 ГБ, находящиеся в текущей директории (find all files in current directory bigger than 1GB), то и с этим инструмент на базе OpenAI справится.</p><h3>А что «под капотом»?</h3><p>Оболочка использует в своей работе формат question-and-answer («ответы и вопросы). Она предоставляет модели OpenAI «примерный контекст» и примеры ввода и вывода.</p><p>Разработчик задавал достаточно простые контекстные примеры, такие как «команды Linux Bash для выполнения задачи». В общей сложности их было 5 штук, что заметно больше рекомендованных 2-3 примеров.</p><p>С полным списком того, что работает, а что нет, можно ознакомиться на <a href="https://riveducha.onfabrica.com/openai-powered-linux-shell">странице проекта</a>. А то, как работает оболочка, можно посмотреть в видео ниже:</p><p>Источник: <a href="https://youtu.be/j0UnS3jHhAA">River’s Educational Channel</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Разработчик собрал более 5 трюков, повышающих продуктивность в командной строке</title>
      <link>https://tproger.ru/news/razrabotchik-sobral-bolee-5-trjukov-povyshajushhih-produktivnost-v-komandnoj-stroke</link>
      <comments>https://tproger.ru/news/razrabotchik-sobral-bolee-5-trjukov-povyshajushhih-produktivnost-v-komandnoj-stroke?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/razrabotchik-sobral-bolee-5-trjukov-povyshajushhih-produktivnost-v-komandnoj-stroke</guid>
      <description><![CDATA[<p>Айко Клостерман собрал приёмы работы в терминале: возврат в предыдущую директорию через cd с минусом, повтор команды по !! и обращение к её индексам.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/razrabotchik-sobral-bolee-5-trjukov-povyshajushhih-produktivnost-v-komandnoj-stroke">Разработчик собрал более 5 трюков, повышающих продуктивность в командной строке</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 05 Apr 2021 15:46:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сложно переоценить то, насколько полезным может быть знание командной строки. Но, как ни странно, многие из нас так и не заходят дальше пары-тройки самых часто используемых команд.</p><figure><img src="https://media.tproger.ru/uploads/2021/04/1-4.png" alt="" /></figure><p>Разработчик и спикер-консультант Айко Клостерман опубликовал свой список трюков, которые могут быть очень полезны в ваших программистских буднях.</p><h3>cd –</h3><p>Так или иначе, большинство из нас в курсе, как работает команда cd. Но многие ли из вас знали, что cd с минусом вернёт вас в предыдущую директорию? Пример:</p><h3>!!</h3><p>Можно легко «использовать» предыдущую команду, добавив в её начало новую. Пример:</p><h3>!:[index]</h3><p>Также Клостерман рассказал об удобном способе выбрать лишь часть предыдущей команды. Для этого подойдёт обращение к индексу определённой фразы. Пример:</p><h3>!:[index]-[index]</h3><p>Подобным образом можно выбрать и несколько команд. Пример:</p><h3>Переход в начало и конец строки</h3><p>Для того, чтобы попасть в самое начало строки, достаточно прожать сочетание Ctrl + A. В свою очередь в её конец можно попасть, нажав Ctrl + E.</p><p>Стоит отметить, что сам Клостерман использует Z Shell в iTerm2 для macOS. Ознакомиться с полным списком таких вот трюков можно на его сайте по <a href="https://aiko.dev/shell-commands/">ссылке</a>.</p><p>Источник: <a href="https://aiko.dev/shell-commands/">Aiko.dev</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Вышла Homebrew 3.0.0 для macOS и Linux с поддержкой Apple Silicon</title>
      <link>https://tproger.ru/news/vyshla-homebrew-3-0-0-dlja-macos-i-linux-s-podderzhkoj-apple-silicon</link>
      <comments>https://tproger.ru/news/vyshla-homebrew-3-0-0-dlja-macos-i-linux-s-podderzhkoj-apple-silicon?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vyshla-homebrew-3-0-0-dlja-macos-i-linux-s-podderzhkoj-apple-silicon</guid>
      <description><![CDATA[<p>Поддержка ARM-чипов Apple в третьей версии утилиты пока остаётся неполной, а разработчики открыты к помощи со стороны сообщества.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vyshla-homebrew-3-0-0-dlja-macos-i-linux-s-podderzhkoj-apple-silicon">Вышла Homebrew 3.0.0 для macOS и Linux с поддержкой Apple Silicon</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 Feb 2021 15:17:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>На официальном сайте Homebrew появилась <a href="https://brew.sh/2021/02/05/homebrew-3.0.0/">свежая запись</a> главы проекта Майка Маккуйэда. В ней он рассказал о выходе третьей номерной версии утилиты и перечислил нововведения, которые принесло обновление.</p><h3>Главные изменения и отличия от версии 2.7.0</h3><ul><li>Официальная поддержка ARM-чипов Apple Silicon для установок в <i>/opt/homebrew</i>. Пока что пакетный менеджер поддерживает бутылки не для всех пакетов, но команда над этим работает.</li><li>Блоки brew bottle и bottle do используют новый формат синтаксиса. Команда brew style --fix форматирует формулы под новый стандарт.</li><li>Новая переменная среды HOMEBREW_BOOTSNAP позволяет использовать Ruby-библиотеку <i>Bootsnap</i> для ускорения повторных вызовов brew.</li><li>Различные методы были устарели, были отключены или вовсе удалены.</li><li><i></i>Bash, <i>fish</i> и <i>zsh</i> completion генерируются автоматически из <i>CLI::Parser DSL</i>. Это должно обеспечить сохранение их актуальности.</li><li>brew update лучше обрабатывает переименования <i>upstream branch</i> (например с master на main).</li><li>Появилась новая команда brew completions.</li></ul><p>На данный момент поддержка Apple Silicon всё ещё остаётся не полной. Но разработчики открыты к помощи сообщества.</p><p>С полным списком изменений с ссылкой на обсуждения тех или иных нововведений на GitHub-странице проекта можно ознакомиться в оригинальном <a href="https://brew.sh/2021/02/05/homebrew-3.0.0/">посте</a>.</p><p>Источник: <a href="https://brew.sh/2021/02/05/homebrew-3.0.0/">Homebrew</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Сборка программ и утилиты терминала Linux. Часть третья</title>
      <link>https://tproger.ru/translations/instrumenty-terminala-linux-tretja-chast</link>
      <comments>https://tproger.ru/translations/instrumenty-terminala-linux-tretja-chast?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/instrumenty-terminala-linux-tretja-chast</guid>
      <description><![CDATA[<p>Рассмотрим утилиты терминала Linux и главные инструменты для сборки программ, которые сэкономят время и повысят эффективность работы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/instrumenty-terminala-linux-tretja-chast">Сборка программ и утилиты терминала Linux. Часть третья</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 24 Dec 2020 13:48:01 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы уже рассказали об <a href="https://tproger.ru/translations/instrumenty-terminala-linux-pervaja-chast/">основных командах терминала Linux</a>, а также <a href="https://tproger.ru/translations/instrumenty-terminala-linux-vtoraja-chast/">инструментах для начинающих</a> вроде tmux, GnuPG и Bash. В этой части рассмотрим сборку программ и утилиты терминала Linux.</p><h2>Инструменты для сборки программ</h2><p>Речь пойдёт про интерпретируемые программные платформы, доступные в большинстве систем — Python, Perl, awk, Bash. Кроме того, вам понадобится система сборки кода Make.</p><p>Код, который пишет программист, часто разделяется на файлы заголовков .h и файлы исходного кода .c.</p><p>При этом компилятор gcc делает следующее:</p><ul><li>При компиляции -S исходный код преобразуется с .c в код сборки .s.</li><li>При компиляции -c код сборки трансформируется в объектный код .o.</li><li>Ссылка -l — это ссылка на стандартные библиотеки для создания исполняемого файла.</li></ul><p>По умолчанию gcc объединяет вышеуказанные этапы, создавая исполняемый файл.</p><p>gcc hello.c — создает a.out, а не .o или .s-файлы.</p><h3>Система сборки Make</h3><p>Данная система автоматизирует компиляцию нескольких исходных файлов в сложном проекте, упорядочивает зависимые действия и выполняет их по порядку. После чего ею считывается конфигурация из файла «сборки», обычно именуемого Makefile. В итоге Makefile действует как программный компонент процесса сборки проекта.</p><figure><img src="https://media.tproger.ru/uploads/2020/12/lt-3-1.png" alt="" /></figure><h3>Процесс работы make-команды</h3><p>make будет считывать данные из Makefile и запускать команды, чтобы построить конечную цель. Например, в Makefile, показанном выше, make будет запускать команды для правил 2–4, за которыми последует правило 1:</p><p>gcc -c dep1.c # создать dep1.o<br />gcc -c dep2.c # создать dep2.o<br />gcc -c main.c # создать main.o</p><p>gcc -o an_exe main.o dep1.o dep2.o -lm</p><h2>Утилиты терминала Linux</h2><p>Чтобы запустить команду в определённое время, используйте at:</p><p>at 17:00<br />at&gt; log_days_activities.sh # иногда можно сократить: at&gt; prompt [Ctrl+D]</p><p>at предлагает использование ключевых слов, таких как now, noon, today, tomorrow (сейчас, полдень, сегодня, завтра), а также различные опции, например, часы и дни, которые можно указывать с символом +.</p><p>at noon<br />at now + 1 year<br />at 3:08pm + 1 day<br />at 15:01 December 19, 2018</p><p>Используйте cron, если вы хотите задать периодичность запуска команд.</p><p>Утилита терминала Linux cron позволяет настроить периодический запуск посредством файла crontab, который управляет процессом и определяет, что и когда требуется выполнить. Запись может быть создана в любом файле и добавлена в систему с помощью команды crontab следующим образом:</p><p>echo '15 18 30 6 * find /home -mtime +30 -print' &gt; f00<br />crontab f00 # добавить предыдущую команду в систему crontab</p><p>crontab -l # список записей crontab<br />crontab -r # удалить записи crontab</p><p>Вывод команды cron будет осуществляться через почту (в качестве альтернативы она может быть перенаправлена в файл с помощью &gt;).</p><p>Анатомия записи в crontab:</p><figure><img src="https://media.tproger.ru/uploads/2020/12/lt-3-2.png" alt="" /></figure><p>В данном случае получаем следующее: выполнение команды find ежегодно 30 июня в 18:15.</p><h2>Применение математики</h2><ul><li>Генерация случайных чисел с помощью shuf (может потребоваться установка):<br />shuf -i 1-100 -n 1</li><li>Форматирование чисел с помощью numfmt:<br />numfmt --to=si 1000<br />1.0K<br />numfmt --from=iec 1K<br />1024</li><li>Использование bc в качестве универсального калькулятора:<br />bc &lt;&lt;&lt; 48+36 # без пробелов по обе стороны от +<br />echo 'obase = 16; ibase = 10; 56 '| bc # десятичное в шестнадцатеричное<br />echo 'scale=8; 60/7.02' |bc # произвольная точность</li></ul><h2>Python-утилиты</h2><ul><li>Если вам нужно установить простой веб-сервер менее чем за минуту, то просто используйте:<br />python3 -m http.server 35000</li><li>Если требуется распечатать файл json:<br />python3 -m json.tool afile.json</li><li>Если требуется запустить небольшие программы на Python:<br />python -c "import math; print (str (math.pi) [: 7])"</li><li>Если требуется применить математику:<br />python -c "print(6*6+20)"<br />python -c "fctrl=lambda x:0**x or x*fctrl(x-1);<br />print(fctrl(6))" # вычислить факториал</li></ul><h2>Различные полезности</h2><p>Далее будут приведены всевозможные команды, которые во многом облегчат жизнь рядовому пользователю и сэкономят его время.</p><ul><li>Чтобы выполнить команду в течение указанного времени с использованием тайм-аута:<br />timeout 2 ping google.com</li><li>Отобразить изменяющуюся переменную:<br />watch -n 5 free -m</li><li>Используйте yes для автоматического подтверждения операций:<br />yes | pip install pkg --upgrade<br />yes "this is a test" | head -50 &gt; testfile.txt # позволяет создать файл с произвольным количеством строк</li><li>Создание PDF-файла из текста с помощью vim:<br />vim states.txt -c "hardcopy&gt; states.ps | q" &amp;&amp;<br />ps2pdf states.ps # позволяет преобразовать .ps в .pdf</li><li>Запуск команды от имени другой группы Linux:<br />sg grpgit -c 'git push'</li><li>Отображение CSV-файла в формате столбца или таблицы:<br />column -t -s , filename.csv</li><li>В случае, если возникли трудности с отправкой двоичных исполняемых файлов по электронной почте:<br />xxd f.exe f.hex # hexdump exe, необходимо просто отправить его по e-mail<br />xxd -r f.hex f.exe # конвертируем приёмник обратно в exe</li><li>Если требуется сгенерировать пароль:<br />head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8<br />openssl rand 8 -base64 | cut -c1-8 # -base64 8 для конкретной версии</li><li>Pandoc для конвертации файлов (md, tex, txt, html, docx, pdf, odt):<br />pandoc manual.md -o manual.pdf<br />pandoc example.txt -o example.html<br />pandoc -s example.txt -o example.docx</li><li>Также можно анализировать и читать файлы XML с помощью xmllint.</li><li>Чтобы разделить большой файл на небольшие части (например, для отправки в виде вложения по почте):<br />split -b 20M large.tgz parts_ # блоки по 20 МБ<br /># отправить части__* по почте<br />cat parts_a *&gt; large.tgz # на принимающей стороне</li></ul><p>Если вы пользуетесь не только Linux, но и Windows, посмотрите наше <a href="https://tproger.ru/translations/powershell-tutorial/">руководство по Windows PowerShell для начинающих</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Инструменты терминала Linux для начинающих. Часть вторая</title>
      <link>https://tproger.ru/translations/instrumenty-terminala-linux-vtoraja-chast</link>
      <comments>https://tproger.ru/translations/instrumenty-terminala-linux-vtoraja-chast?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/instrumenty-terminala-linux-vtoraja-chast</guid>
      <description><![CDATA[<p>Обзор инструментов терминала Linux: мультиплексор tmux, командная оболочка Bash и шифровальщик GnuPG с примерами рабочих команд.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/instrumenty-terminala-linux-vtoraja-chast">Инструменты терминала Linux для начинающих. Часть вторая</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 22 Dec 2020 15:21:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы уже разобрали <a href="https://tproger.ru/translations/instrumenty-terminala-linux-pervaja-chast/">команды терминала Linux</a>, а в этой статье рассмотрим инструменты, среди которых tmux, Bash, шифровальщик GnuPG и многое другое.</p><h2>Управление сеансами: tmux</h2><h3>Управление рабочим пространством с помощью tmux</h3><p>tmux — это один из инструментов терминала Linux, а точнее терминальный мультиплексор, который позволяет создавать несколько постоянных терминалов в рамках одного входа в систему. Другими словами, tmux — это программа, которая даёт возможность вам работать с несколькими «вкладками» в одном окне терминала.</p><p>tmux будет полезен в следующих случаях:</p><ul><li>если компиляция или другая аналогичная операция в перспективе может занять много времени;</li><li>для интерактивной многозадачности;</li><li>в необычных случаях, например, при парном программировании;</li><li>с целью экономии времени и одновременного осуществления нескольких операций.</li></ul><h3>Краткое руководство по tmux</h3><p>Стандартный рабочий tmux-процесс:</p><p>tmux new -s s1 # запуск нового сеанса</p><p>Ctrl+B :detach — позволяет прервать сеанс, выйти из системы, вернуться домой.</p><p>Позже снова можете зайти в систему. Для того нужно:</p><p>tmux a-t s1</p><p>Дополнительные полезные команды tmux:</p><ul><li>Ctrl+B ( — возврат к предыдущей сессии;</li><li>Ctrl+B ) — переход к следующей сессии;</li><li>tmux ls — получение списка всех сессий;</li><li>tmux kill-session -t s1 — окончание сессии.</li></ul><p>Непосредственная коллаборация в tmux:</p><p>#user1#<br />tmux -S /tmp/collab<br />chmod 777 /tmp/collab</p><p>#user2#<br />tmux -S /tmp/collab attach</p><h3>Создание частей окна и их синхронизация</h3><ul><li>tmux new -s s2 — начать новую сессию;</li><li>Ctrl+B " — горизонтальное разделение;</li><li>Ctrl+B % — вертикальное разделение;</li><li>Ctrl+B :setw — для включения и выключения синхронизации;</li><li>Ctrl+B o — прокрутить окна;</li><li>Ctrl+B x — убрать активные окна.</li></ul><h2>ssh-конфигурация и туннелирование</h2><h3>Ssh-конфигурация (~/.ssh/config)</h3><p>Host login1 <br />  hostname login1.ornl.gov <br />  User km0</p><p>Host cades <br />  Port 22 <br />  hostname or-slurm-login.ornl.gov <br />  ProxyJump login1 <br />  User km0 <br />  ServerAliveCountMax=3 # максимальное количество сообщений, отправленных без ack<br />  ServerAliveInterval=15 # отправка нулевого сообщения каждые 15 секунд</p><p>Чтобы перейти на ssh/scp, необходимо использовать команду ssh/scp cades.</p><h3>Преимущества ssh-конфигурации</h3><p>Конфигурация облегчает запоминание ssh-команд при наличии нескольких хостов. При этом настройка подключения к отдельным хостам выполняется автоматически. Для дополнительной информации касательно данного типа конфигурации смотрите man 5 ssh_config.</p><p>Например: ssh summit достаточно для подключения к summit.olcf.ornl.gov со всеми свойствами, упомянутыми в этом разделе:</p><p>Host summit<br />  Port 22 <br />  hostname summit.olcf.ornl.gov<br />  User ketan2<br />  ServerAliveCountMax=3<br />  ServerAliveInterval=15</p><p>Переадресация порта с помощью SSH-туннелирования:</p><figure><img src="https://media.tproger.ru/uploads/2020/12/lt-1.png" alt="" /><figcaption>Пример ssh-тунелирования</figcaption></figure><p>Чтобы запустить HTTP-сервер на удаленном узле и просмотреть его через локальный веб-браузер, нужно:</p><ol><li>remote$ python2 -m SimpleHTTPServer 25000 OR;</li><li>remote$ python3 -m http.server 25000;</li><li> local$ ssh -L 8000:localhost:25000 id@remote -N;</li><li>Откройте браузер на локальном компьютере и перейдите на http://localhost:8000.</li></ol><h2>Инкрементное удалённое копирование с помощью rsync</h2><p>Такое копирование позволяет синхронизировать данные между локальным и удалённым хранилищем. При этом можно использовать набор опций, а именно: -а и -v как наиболее часто используемые.</p><p>rsync -av localdir/ remotehost:~/remotedir.</p><p>Также есть лайфхак для применения rsync: быстрое удаление большого каталога можно осуществить посредством этой команды:</p><p>mkdir empty &amp;&amp; rsync -a --delete empty/ large_dir/.</p><h2>Безопасная связь через GnuPG</h2><h3>Основы использования GNU Privacy Guard</h3><p>GnuPG — это инструмент командной строки Linux для безопасной связи. Она имеет следующие функции:</p><ul><li>создание пар ключей;</li><li>обмен ключами и верификация;</li><li>шифровка и расшифровка документов;</li><li>аутентификация документов с помощью цифровых подписей.</li></ul><p>При всех вышеперечисленных плюсах, данная программа не предполагает:</p><ul><li>концепцию криптографии с открытым ключом;</li><li>сложные и продвинутые варианты использования.</li></ul><h3>Создание новой пары ключей</h3><p>Для начала используйте gpg --gen-key, после чего нужно будет ответить на предложенные вопросы.</p><ol><li>Укажите имя и адрес электронной почты в качестве идентификатора, потом выберите фразу-пароль.</li><li>«Артефакты» ключей можете посмотреть по адресу $HOME/.gnupg dir.</li></ol><p>Далее необходимо создать сертификат аннулирования:</p><p>gpg --output revoke.asc --gen-revoke &lt;ID&gt;.</p><p>Для чего используйте электронную почту в качестве идентификатора. Также стоит включить функцию уведомления, если пара ключей больше не может быть использована. Например, если вы забыли свою фразу для восстановления пароля, потеряли ключи и т. д.</p><h3>Обмен ключами и верификация</h3><p>Экспорт открытого ключа:</p><ul><li>gpg --output pub.gpg --export — бинарный код;</li><li>gpg --armor --export &gt; pubtxt.gpg — кодировка ASCII.</li></ul><p>Импорт открытого ключа:</p><p>gpg --import billpub.gpg — импорт по умолчанию.</p><p>После чего проверьте и подпишите импортированный ключ, для чего есть следующая команда:</p><p>gpg --edit-key b@ms.us — здесь указывается ключевая информация и подсказка.</p><p>command&gt; fpr  — отпечатки пальцев, проверка по телефону.</p><p> Остаётся лишь пройти верификацию в командной строке — command&gt; sign.</p><h3>Шифрование и расшифровка документов</h3><p>Ниже приведён пример шифрования документа с помощью открытого ключа пользователя (пусть это будет Билл):</p><p>gpg --output doc_pdf.gpg --encrypt --recipient.</p><p>b@ms.us doc.pdf — как вы уже поняли, у вас должен быть ключ Билла в свободном доступе.</p><p>Билл расшифровывает документ (то есть у него должен быть его персональный ключ и фраза-пароль):</p><p>gpg --output doc.pdf --decrypt doc_pdf.gpg.</p><p>Документы могут быть зашифрованы без ключа, просто посредством фразы-пароля:</p><p>gpg --output doc_pdf.gpg --symmetric doc.pdf.</p><h3>Аутентификация документов с помощью цифровых подписей</h3><p>Документы с цифровой подписью подтверждают тот факт, что они являются подлинными и что они не подвергались чьим-либо посторонним изменениям:</p><p>gpg-output doc.signed-sign doc.pdf.</p><p>Помните, что у вас должен быть закрытый ключ для создания цифровой подписи.</p><p>Подписанный документ можно проверить и расшифровать следующим образом:</p><p>gpg --ouput doc.pdf --decrypt doc.signed.</p><h2>Инструменты Bash</h2><p>Это оболочка командной строки Linux. В данном случае могут быть применены такие команды и утилиты, как grep, sed, awk и определены переменные, константы, условные обозначения, циклы и функции. Bash также предполагает использование арифметических операций и логических операций: &amp;&amp; (и) и || (или):</p><ul><li>wget ...|| curl ... — выполнить curl iff wget не удается;</li><li>make install &amp;&amp; make test — срабатывает команда test iff install.</li></ul><p>Файлы Shell «Startup»  устанавливают среду при запуске оболочки.</p><p>.bashrc — файл, который запускается в каждой новой создаваемой оболочке.</p><p>.bash_profile — файл, который запускается только в «оболочке входа в систему», а не во всех оболочках. Например, он не запустится, если вы вызовете сценарий оболочки, который создает «подоболочку».</p><h3>Псевдонимы и функции</h3><p>Псевдонимы — это короткие и удобные имена для длинных команд. Как правило, они определяются в .bashrc или отдельном файле .aliases.  Чтобы временно обойти псевдоним (скажем, поменять псевдоним ls на ls -a), используйте \: \ ls.</p><p>Также необходимо помнить о том, что функции Bash обычно определяются в файле .bashrc/.bash_profile и что функции более выразительны по сравнению с псевдонимами. Поэтому, обычно, следует отдавать предпочтение именно им.</p><p>Примеры псевдонимов:</p><ul><li>alias s=ssh;</li><li>alias c=clear;</li><li>alias cx='chmod +x';</li><li>alias ls='ls -thor‘;</li><li>alias more=less;</li><li>alias ps='ps auxf';</li><li>alias psg='ps aux | grep -v grep | grep -i -e USER -e';</li><li>alias ..='cd ..';</li><li>alias myp='ps -fjH -u $USER';</li><li>alias cleanup='rm -f *.tmp *.aux *.log'.</li></ul><p>Примеры полезных функций:</p><ul><li>mcd() { mkdir -p $1; cd $1 };</li><li>cdl() { cd $1; ls};</li><li>backup() { cp "$1"{,.bak};};</li><li>gfind() { find / -iname $@ 2&gt;/dev/null };</li><li>lfind() { find . -iname $@ 2&gt;/dev/null };</li><li>rtfm() { help $@ || man $@ || $BROWSER "http://www.google.com/search?q=$@"; };</li><li>Смотрите /usr/share/doc/bash-*/examples/functions для поиска дополнительных примеров функций.</li></ul><h3>Переменные и подстановка команд</h3><p>Переменные являются неявно типизированными, они могут представлять собой буквальное значение или замену команды.</p><p>vname = value — присвоить значение переменной vname.</p><p>$vname — прочесть значение переменной vname.</p><p>Подстановка команды:</p><ul><li>curdir=$(pwd);</li><li>curdate=$(date +%F);</li><li>echo "There are $(ls -1 | wc -l) items in the current dir".</li></ul><h3>Условная инструкция</h3><p>В данном случае используется конструкция if-then-else (условного оператора), а именно — управляющая структура программы с ветвлением, аналогичная языкам программирования.</p><p>Существуют две формы механизмов условной оценки:</p><ul><li>$ if test $USER = 'km0'; then echo 'I know you'; else echo 'Who are you'; fi;</li><li>$ if [ -f /etc/yum.conf ]; then echo 'yum.conf exists'; else echo 'file do not exist'; fi.</li></ul><p>Условные инструкции:</p><ul><li>Строка-z строка — если длина строки равна 0;-n строка — если длина строки не равна 0;string1 = string2 — если строки идентичны (обратите внимание на одиночный знак =).</li><li>Числаint1 -eq int2 — если первое целое число равно второму;-ne, -gt, -ge, -lt, -le — если не равно; больше, чем; больше или равно.</li><li>Файл-r имя_файла — если файл существует и доступен для чтения;-w имя_файла — если файл существует и доступен для записи;-f, -d, -s — если файл или каталог существует и не пуст.</li><li>Логические операции!, -a, -o — отрицание, логическое И, логическое ИЛИ.</li></ul><h3>Циклы</h3><p>Тут циклы представлены в 3 различных формах:</p><ul><li>for i in {0..9}; do echo $i; done;</li><li>for ((i=0;i&lt;10;i++)){ echo $i;}  # аналогично С++;</li><li>for var in list; do comand; done # в стиле Python.</li></ul><p>Также такая схема может применяться при параллельной замене команд:</p><ul><li>for i in $(\ls -1 *.txt); do echo "$i"; done;</li><li>for i in $(get_files.sh); do upload.sh "$i"; done.</li></ul><h2>Heredoc-синтаксис</h2><p>Данный синтаксис позволяет создавать «встроенные» файлы.</p><p>Пример команды:</p><p>sh &lt;&lt; END<br />echo "Hello World"<br />END &lt;нажмите enter&gt;</p><p>Использование heredoc позволяет:</p><ul><li>создавать многострочные сообщения с использованием cat;</li><li>использовать переменные для подключения к созданным файлам, что позволяет, например, тестировать несколько конфигураций для программ.</li></ul><p>В следующей части мы поговорим о <a href="https://tproger.ru/translations/instrumenty-terminala-linux-tretja-chast/">сборке программ и утилитах терминала Linux</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Команды терминала Linux для начинающих. Часть первая</title>
      <link>https://tproger.ru/translations/instrumenty-terminala-linux-pervaja-chast</link>
      <comments>https://tproger.ru/translations/instrumenty-terminala-linux-pervaja-chast?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/instrumenty-terminala-linux-pervaja-chast</guid>
      <description><![CDATA[<p>Основы терминала Linux: структура типичной команды, работа с файлами и каталогами, проверка доступности команд и создание списка процессов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/instrumenty-terminala-linux-pervaja-chast">Команды терминала Linux для начинающих. Часть первая</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 07 Dec 2020 13:21:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>Возможно, вы уже знаете некоторые команды терминала Linux, умеете работать с файлами, каталогами и осуществлять редактирование, например: cd, ls, pwd, cat. Но в данном обзоре всё изложено как можно конкретнее, чтобы предусмотреть распространённые вопросы.</p><h2>Основы в терминале Linux</h2><p>Ниже представлена схема типичной команды в терминале ОС Linux:</p><figure><img src="https://media.tproger.ru/uploads/2020/12/1-7.png" alt="" /></figure><p>Следующие команды позволят вам лучше узнать систему:</p><ul><li>id — если вы хотите получить информацию касательно вашей учётной записи;</li><li>w — чтобы понимать, кто на данный момент находится в системе (-f — для того, чтобы узнать, откуда был совершен вход);</li><li>lsblk — если вы хотите открыть список блочных устройств хранения данных;</li><li>lscpu — отображает информацию о процессорах;</li><li>lstopo — предоставляет доступ к топологии аппаратного ПО отображения информации (требуются пакеты hwloc, hwloc-gui);</li><li>free — показывает объём свободной и уже используемой памяти (используйте также free -g);</li><li>lsb_release -a — если вы хотите получить информацию о распределении данных;</li></ul><p>Примечание Для PS0: используйте Ctrl+C, чтобы деактивировать неактуальные команды. Что касается PS1: некоторые команды могут быть недоступны. Чтобы проверить, какие именно, введите which &lt;cmdname&gt;.</p><h2>Работа с процессами</h2><p>Для начала создайте список процессов по имени, идентификационного номеру процесса и т. д. (обычно используемый признак состояния aux).</p><p>Учитывайте особенности реализации программных потоков: POSIX, GNU и BSD, а также то, что они отличаются в работе и применении. Вышеуказанные реализации отличаются различными опциями: POSIX (-), GNU (–), BSD (без тире).</p><p>Индикаторы процесса в данной системе: top, htop, atop.</p><p>Понижайте приоритет процесса, используя nice. Например, следующим образом:</p><p>nice -n 19 tar cvzf archive.tgz large_dir</p><p>Чтобы аннулировать процесс, введите kill &lt;pid&gt;. Данная команда используется для завершения процессов-зомби или прекращения зависших сеансов.</p><p>Далее идут команды терминала Linux, которые спасут положение в затруднительных ситуациях:</p><ul><li>man nano — данная команда обеспечивает доступ к организованным по разделам справочным страницам. Итого на каждый раздел — одна страница. Например: 5 passwd #5й раздел;</li><li>wget --help — весьма удобная команда, которая позволит быстро получить справку по синтаксису;</li><li>info curl — позволяет получить информацию о команде (в данном случае о curl);</li><li>/usr/share/doc — используйте в браузере. В случае проблемы, не забывайте, что обычно файлы README содержат информацию и примеры команд. Просмотр осуществляется с помощью браузера.</li></ul><h2>Работа с файлами</h2><p>Следующие команды потребуются вам при работе с файлами разного типа и объёма:</p><ul><li>cat — для относительно коротких файлов:<br />cat states.txt;</li><li>less —  считывает текст не полностью, а небольшими фрагментами:<br />less /etc/ntp.conf;</li><li>more — для длинных файлов;</li><li>tail -f — используется для просмотра растущего файла в окне интерактивного запуска кода.</li></ul><p>Что вы можете сделать с двоичными файлами? На самом деле, вариантов не очень много:</p><ul><li>strings — команда выведет готовые к печати строки файла;</li><li>od — позволит вам напечатать файл в восьмеричном формате;</li><li>cmp — даёт возможность побайтно сравнивать файлы.</li></ul><p>Если вам требуется сравнить текстовые файлы друг с другом, введите следующие команды:</p><ul><li>comm — отсортированные файлы будут строка за строкой;</li><li>diff — позволяет построчно выявить различия. Эта команда используется наиболее часто в силу богатого набора опций.</li></ul><h2>Интернет в командной строке</h2><p>При работе в терминале Linux с интернет-ресурсами применяйте следующие команды:</p><ul><li>curl — обычно используется для загрузок из интернета:<br />curl -O http://www.gutenberg.org/files/4300/4300-0.txt<br />curl ifconfig.me #быстро определяет ваш ID </li><li>wget — аналогичная команда:<br />wget http://www.gutenberg.org/files/4300/4300-0.txt<br />wget https://kubernetespodcast.com/episodes/KPfGep{001..062}.mp3</li><li>lynx — позволяет использовать достаточно удобный текстовый браузер. Под удобным в данном случае подразумевается, что вы:сможете наконец-то избавиться от постоянно всплывающих рекламных окон;решите проблему с медленным/зависающим интернетом, например: lynx text.npr.org;сможете иметь доступ к локальным html-страницам, например, к тем, что можно найти с помощью /usr/share/doc;</li><li>w3m и links — дополнительные текстовые браузеры: w3m lite.cnn.com.</li></ul><h2>Горячие клавиши</h2><h3>Навигация</h3><figure><img src="https://media.tproger.ru/uploads/2020/12/2-2.png" alt="" /></figure><p>Ctrl+] &lt;char&gt; перемещает курсор на первое вхождение &lt;char&gt; вправо.</p><p>Ctrl+alt+] &lt;char&gt; перемещает курсор на первое вхождение &lt;char&gt; влево.</p><h3>Удаление</h3><figure><img src="https://media.tproger.ru/uploads/2020/12/3.png" alt="" /></figure><p>Используйте Ctrl+Y, чтобы вставить обратно удалённые файлы.</p><h3>Дополнительно</h3><ul><li>Alt+. — если требуется вставить последний аргумент предыдущей команды;</li><li>Alt-&lt;N&gt;-Alt-. — если требуется использовать N-й аргумент предыдущей команды;</li><li>Ctrl+L — используется для очистки терминала;</li><li>cd – — требуется для внесения изменений в предыдущий каталог;</li><li>cd — перейти в домашний каталог;</li><li>Ctrl+R — обзор истории;</li><li>Ctrl+D — выход из терминала.</li></ul><h2>Подстановочные символы</h2><p>Далее приведены подстановочные символы, которые расширяют объём команды терминала Linux во время её выполнения:</p><ul><li>*  позволяет расширить команду до любого количества символов:<br />ls -lh /etc/*.conf — все элементы с расширением .conf;</li><li>? позволяет расширить команду до одного символа:<br />ls -ld ? ?? ??? — сюда относятся элементы, длина которых составляет 1, 2 или 3 символа;</li><li>! — отрицание:<br />ls -ld [!0-9]* — элементы, которые не начинаются с числовых значений;</li><li>Экранирование и цитирование с целью предотвращения расширения:\ для экранирования подстановочного знака;' для цитирования подстановочного знака.</li></ul><h2>Хитрости, которые сэкономят время</h2><p>Этот список полезных знаков позволит вам в разы ускорить работу с командами:</p><ul><li>!! — повторяет последнюю команду;</li><li>!$ — позволяет изменить команду, сохраняя последний аргумент:cat states.txt — используется, если файл слишком длинный, чтобы поместиться на экране;less !$ — используется для повторного открытия в меньшем объёме;</li><li>!* —позволяет изменить команду, сохраняя при этом все аргументы:head states.txt | grep '^Al' — при использовании должен быть хвост;tail !* — нет необходимости вводить остальную часть команды;</li><li>&gt;x.txt — используется для создания пустого файла или очистки существующего.</li><li>lsof -P -i -n — позволит определить, к каким скриптам идёт обращение со стороны веб-сервера.</li></ul><h2>Потоки ввода-вывода терминала и переадресация</h2><p>В терминале Linux работа осуществляется через три потока ввода-вывода: вход (stdin), выход (stdout) и ошибка (stderr).</p><p>Данные потоки представлены файловыми дескрипторами. Их также принято считать идентификаторами: 0 для stdin, 1 для stdout, 2 для stderr.</p><p>Использование угловых скобок применяется для перенаправления (переадресации) команд и файлов в них и из них:</p><ul><li>&gt; для отправления в поток;</li><li>&lt; для получения из потока;</li><li>&gt;&gt; для добавления в поток;</li><li>&lt;&lt; для непосредственного присоединения потока (используется в «heredoc»);</li><li>&lt;&lt;&lt; используется в «herestring» (на сегодняшний день не особо распространенная команда);</li><li>&amp; используется для записи в поток, например &amp;1 для записи в stdout.</li></ul><figure><img src="https://media.tproger.ru/uploads/2020/12/4.png" alt="" /></figure><p>Дополнительные примеры переадресации приведены ниже:</p><ul><li>чтобы отправить stdout и stderr в один и тот же файл (короткий вариант bash v4+)<br />pip install rtv &gt; stdouterr.txt 2&gt;&amp;1 ac -pd &amp;&gt; stdouterr.txt;</li><li>чтобы пропустить и stdout, и stderr:<br />wget imgs.xkcd.com/comics/command_line_fu.png &amp;&gt; /dev/null<br />/dev/null — это «нулевой» файл для удаления потоков. А ещё это паблик со смешными мемами для ITшников (<a href="https://vk.com/tnull">ВК</a> и <a href="https://t.me/ithumor">Телеграм</a>);</li><li>чтение из stdin в качестве вывода команды:<br />diff &lt;(ls dirA) &lt;(ls dirB);</li><li>добавить stdout в файл журнала<br />sudo yum -y update &gt;&gt; yum_update.log.</li></ul><h2>Каналы</h2><p>Канал — это особая концепция системы Linux, которая автоматизирует перенаправление вывода одной команды посредством использования входных данных на следующую команду. Такое использование каналов приводит к эффективным комбинациям независимых команд. Ниже приведены некоторые из них:</p><ul><li>find .| less — позволяет прокручивать длинный список файлов постранично;</li><li>head prose.txt | grep -i 'little' echo $PATH | tr ':' '\n' — переводит на новую строку;</li><li>history | tail — отображает последние 10 команд;</li><li>free -m|grep Mem:|awk '{print $4}' — отображает доступную память;</li><li>du -s *|sort -n|tail — отображает 10 наиболее больших файлов/каталогов в pwd.</li></ul><h3>Расшифровка и отладка команд каналов</h3><p>free -m|grep Mem:|awk '{print $4}'</p><p>Приведённая выше команда эквивалентна выполнению следующих 4 команд:</p><ul><li>free -m &gt; tmp1.txt</li><li>grep Mem: tmp1.txt &gt; tmp2.txt</li><li>awk '{print $4}' tmp2.txt</li><li>rm tmp1.txt tmp2.txt</li></ul><p>Сокращение этапов работы с командами зачастую является эффективным и более простым способом, который позволяет сэкономить время и упростить процесс. Например, вышеупомянутый конвейер можно уменьшить следующим образом:</p><p>free -m|awk '/Mem:/{print $4}'</p><p>Ниже приведено ещё несколько примеров каналов:</p><p>Чтобы получить доступ к pdf-файлам страниц справочника man:</p><p>man -t diff | ps2pdf - diffhelp.pdf </p><p>Чтобы получить актуальные на сегодняшний день файлы:</p><p>ls -al --time-style=+%D | grep `date +%D`</p><p>Топ-10 самых часто используемых команд:</p><p>history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head</p><p>Далее будут команды терминала Linux, которые принимают только литеральные аргументы.</p><p>Большинство команд получают входные данные, например, из stdin (канала) и файла:</p><p>wc &lt; states.txt #ок </p><p>wc states.txt #ок</p><p>Однако, существуют определённые исключения. Например, некоторые команды получают входные данные только из stdin, а не из файла:</p><p>tr 'N' 'n’ states.txt #работать не будет</p><p>tr 'N' 'n’ &lt; states.txt #работать будет</p><p>Некоторые команды не получают входные данные ни из stdin, ни из файла. Например, следующие:</p><ul><li>echo &lt; states.txt  — не подходит. Предполагается, что вы собираетесь распечатать содержимое файла;</li><li>echo states.txt  — не подходит. Предполагается, что вы собираетесь распечатать содержимое файла;</li><li>echo «Привет, как дела?» —  принимает литеральные аргументы.</li></ul><p>cp, touch, rm, chmod относятся к другим примерам.</p><h2>Xargs: когда канала недостаточно</h2><p>Некоторые команды не считываются из стандартного входа, канала или файла. Им, как правило, требуются аргументы. Кроме того, некоторые системы ограничивают количество аргументов в командной строке.</p><p>Например команда rm tmpdir/*.log завершится ошибкой, если файлов .log будет слишком много.</p><p>Итак, команда xargs решает сразу обе проблемы: преобразует стандартный поток ввода команды в литеральные аргументы и разбивает args на допустимое число, многократно запуская команду.</p><p>Например, можно попробовать создать файлы с именами в somelist.txt:</p><p>xargs touch &lt; somelist.txt</p><h2>Параллельность в GNU</h2><p>В данном случае речь идёт о параллельном выполнении задач из командной строки. В некотором смысле похожее на xargs. Что по итогу это даёт?</p><ul><li>Позволяет обрабатывать параметры как независимые аргументы команды и выполнять параллельно команду.</li><li>Осуществляет синхронизированный вывод — как если бы команды в Linux-терминале выполнялись последовательно.</li><li>Обеспечивает настраиваемое количество параллельных заданий.</li><li>Хорошо подходит для выполнения простых команд или скриптов на вычислительных узлах для использования многоядерной архитектуры.</li></ul><p>Необходимо учитывать, что, возможно, потребуется <a href="http://www.gnu.org/software/parallel">специальная установка</a>, так как по умолчанию это недоступно.</p><p>Примеры параллельного выполнения в GNU:</p><p>Для того, чтобы найти все html-файлы и переместить их в каталог:</p><p>find . -имя '*.html' | parallel mv {} web/</p><p>Для того, чтобы удалить файл pict0000.jpg и заменить его на pict9999.jpg (здесь подразумевается одновременное выполнение 16 параллельных заданий):</p><p>seq -w 0 9999 | parallel -j 16 rm pict{}.jpg</p><p>Создание миниатюр для всех файлов изображений (требуется программное обеспечение imagemagick):</p><p>ls *.jpg | parallel convert -geometry 120 {} thumb_{}</p><p>Загрузка из списка URL-адресов и отчёт о неудачных загрузках:</p><p>cat urlfile | parallel "wget {} 2&gt;errors.txt"</p><p>Для дополнительной информации можно ознакомиться с книгой <a href="https://doi.org/10.5281/zenodo.1146014">GNU parallel 2018</a>.</p><h2>Классические инструменты для программирования: find, grep, awk, sed</h2><h3>Особенности find</h3><figure><img src="https://media.tproger.ru/uploads/2020/12/5.png" alt="" /></figure><p>Путь: может иметь несколько вариантов, например .find /usr /opt -iname "*.so".</p><p>Критерии:</p><ul><li>-name,  -iname, -type (f, d, l), -inum &lt;Н&gt;;</li><li>-user&lt;uname&gt;, -group&lt;gname&gt;,  -perm (ugo+/-rwx);</li><li>-size +x[c], -empty, -newer &lt;fname&gt;;</li><li>-atime +x, -amin +x, -mmin -x, -mtime -x;</li><li>критерии могут быть объединены с логическими и (- а) и или (-о).</li></ul><p>Действие:</p><ul><li>-print — действие по умолчанию — отображать;</li><li>-ls — выполните команду ls -lids для каждого результирующего файла;</li><li>-exec cmd — выполнить команду;</li><li>-ok cmd — используется как exec, за исключением того, что команда выполняется после подтверждения пользователем.</li></ul><p>Примеры команд для поиска:</p><ul><li>find . -type f -iname "*.txt" — xt-файлы в curdir;</li><li>find . -maxdepth 1 — эквивалент ls;</li><li>find ./somedir -type f -size +512M -print — все файлы размером более 512M в ./somedir;</li><li>find /usr/bin ! -type l — не символьная ссылка в /usr/bin;</li><li>find $HOME -type f -atime +365 -exec rm {} + — позволяет удалить все файлы, которые не были доступны в течение года;</li><li>find . \( -name "*.c" -o -name "*.h" \) — все файлы, имеющие расширение .c или .h.</li></ul><h3>Grep: поиск шаблонов в тексте</h3><p>Grep изначально представлял собой команду global regular expression print или «g/re/p» в текстовом редакторе ed. Данная функция оказалась настолько полезной, что была разработана отдельная утилита под названием grep.</p><p>Grep позволяет извлекать строки из текста, который соответствует определённому шаблону. Также можно находить строки с определённым рисунком в большом объёме текста. Сюда относится:</p><ul><li>поиск в списке процессов;</li><li>выборочная проверка большого количества файлов на наличие паттерна;</li><li>исключение некоторого фрагмента текста из большого текстового объёма.</li></ul><figure><img src="https://media.tproger.ru/uploads/2020/12/6.png" alt="" /></figure><p>Полезные опции grep:</p><ul><li>-i: игнорировать случай;</li><li>-n: отображение номеров строк вместе со строками;</li><li>-v: инвертированный вывод. Отберутся те строки, которые не совпадают с регулярным выражением;</li><li>-c: печать конкретного количества совпадающих строк;</li><li>-A&lt;n&gt;: включение n-строк после совпадения;</li><li>-B&lt;n&gt;: включение n-строк перед совпадением;</li><li>-o: печать только совпадающего выражения (а не всей строки);</li><li>-E: позволяет использовать «расширенные» регулярные выражения.</li></ul><h2>Регулярные выражения в терминале Linux</h2><p><a href="https://tproger.ru/articles/regexp-for-beginners/">Регулярные выражения</a> (regex) — это язык описания шаблона строк.</p><p>Точка «.» является специальным символом, который будет соответствовать любому символу (кроме новой строки). Например, b.t будет соответствовать bat, bbt, b%t и так далее, но при этом сюда не подойдут bt, xbt.</p><p>Класс символов: один из элементов в квадратных скобках [ ] будет совпадать, при этом допускаются последовательности:</p><p>[Cc]at — соотносится с Cat и cat.<br />[f-h]ate — соотносится с fate, gate, hate.</p><p>Символ «^» внутри класса символов означает отрицание, например:</p><p>b[^eo]at будет соответствовать brat, но не boat или beat.</p><p>Расширенные выражения запускаются с помощью egrep или grep -E, при этом:</p><p>«*» соответствует нулю или более, «+» соответствует одному или более, «?» соответствует нулю или разовому появлению предыдущего символа, например:</p><p>[hc]+at будет соответствовать hat, cat, hhat, chat, cchhat  и т. д.</p><p>«|» является разделителем для нескольких шаблонов, а «(» и «)» позволяют группировать шаблоны, например:</p><p>([cC]at)|([dD]og) будет соответствовать cat, Cat, dog и Dog.</p><p>«{}» может использоваться для указания диапазона повторения, например:</p><p>ba{2,4}t будет соответствовать baat, baaat и baaaat, но не bat.</p><h3>Примеры grep</h3><p>Строки, которые заканчиваются двумя гласными:</p><p>grep '[aeiou][aeiou]$' prose.txt</p><p>Проверка 5 строк до и после строки, где встречается «little»:</p><p>grep -A5 -B5 'little' prose.txt </p><p>Комментируйте команды и выполняйте поиск последних использованных в истории:</p><p>some -hard 'to' \remember --complex=command #success </p><p>history | grep '#success'</p><p>Удостоверьтесь, что вы правильно написали все команды в терминале Linux и избежали возможных двусмысленностей:</p><p>grep -E '^ambig(uou|ou|ouo)s$' /usr/share/dict/linux.words</p><p>find + grep — ещё одна очень полезная комбинация вам на заметку.</p><p>find . -iname "*.py" -exec grep 'add[_-]item' {} +</p><h2>awk: извлечение и использование данных</h2><p>awk — это специальный программируемый фильтр, который считывает и обрабатывает входные данные строку за строкой. Он располагает широким спектром встроенных функций:</p><ul><li>явные поля ($1 ... $NF) и управление записями;</li><li>функции (математические, построчная обработка и т. д.);</li><li>синтаксический анализ и фильтрация регулярных выражений.</li></ul><p>Этот фильтр также позволяет работать с переменными, циклы, условными обозначениями, массивами ассоциативных элементов, пользовательскими функциями.</p><h3>Анатомия awk</h3><p>В большинстве случае используется в качестве однострочной идиомы следующего вида:</p><p>awk ‘awk_prog’ file.txt</p><p>или:</p><p>command | awk ‘awk_prog’</p><p>Где awk_prog это:</p><ul><li>BEGIN {действие} — выполнить определённое действие один раз перед чтением и обработкой входных данных;</li><li>шаблон или условие {действие} — выполнить действие для каждой строки входных файлов и/или stdin, которые удовлетворяют шаблону или условию;</li><li>END {действие} — выполнить определённое действие один раз после прочтения и обработки входных данных.</li></ul><p>В команде нужно указывать хотя бы один из вышеперечисленных разделов.</p><h3>Шаблоны, условия и действия</h3><p>Шаблон — это регулярное выражение, которое соответствует (или не соответствует) входной строке, например:</p><ul><li>/New/ — любая строка, содержащая New;</li><li>/^[0-9]+ / — строка, начинающаяся с цифр;</li><li>/(POST|PUT|DELETE)/ — строка, которая содержит определённые слова;</li></ul><p>Условие — это булевое выражение, которое выбирает входные строки, например:</p><p>$3&gt;1 — строки, для которых третье поле больше, чем 1</p><p>Действие — это последовательность операций, например:</p><ul><li>{print $1, $NF} — печать первого и последнего поля/столбца;</li><li>{print log($2)} — получить журнал второго поля/столбца;</li><li>{for (i=1;i&lt;x;i++){sum += $3}} — получить суммарное значение.</li></ul><p>При этом пользовательские функции могут быть определены и указаны в любом блоке действий.</p><h2>Полезные однострочные awk-команды терминала Linux</h2><ul><li>awk '{print $1}' states.txt;</li><li>awk '/New/{print $1}' states.txt;</li><li>awk NF &gt; 0 prose.txt — печать строк, содержащих хотя бы одно поле (пропустить пустые строки);</li><li>awk '{print NF, $0}' states.txt — поля в каждой строке и в самой строке;</li><li>awk '{длина печати($0)}' states.txt — символы в каждой строке;</li><li>awk 'BEGIN{print substr("New York",5)}' #York;</li></ul><h2>sed: синтаксический анализ и преобразование текста</h2><p>sed — это специальный потоковый редактор, который ищет шаблон в тексте и применяет к нему необходимые изменения.</p><p>Данный редактор может быть в том числе пакетным или неинтерактивным редактором. Его функции заключаются в том, что он считывает из файла или из stdin (при наличии каналов) по одной строке за раз. При этом исходный входной файл остается неизменным (так как sed также является фильтром), после чего результаты преобразуются в стандартные выходные данные.</p><figure><img src="https://media.tproger.ru/uploads/2020/12/7.png" alt="" /></figure><p>Опции sed:</p><ul><li>адрес — может быть номером строки, диапазоном или совпадением. Может быть оставлен по умолчанию, либо являться файлом целиком;</li><li>команда — s:substitute (замена), p:print (печать), d:delete (удалить), a:append (добавить), i:insert (вставить), q:quit (завершить);</li><li>regex — регулярные выражения;</li><li>знак-разграничитель — в данном случае необязательно использовать «/», можно также применять  «|» или «:» или любой другой символ;</li><li>модификатор — его роль может выполнять число n, которое применяет команду к N-му вхождению, g применяет ко всей строке в целом;</li><li>общие признаки состояния sed — -n (без печати), -e (несколько операций), -f (чтение sed из файла), -i (на месте редактирования).</li></ul><p>Полезные примеры sed:</p><ul><li>sed -n '5,9 p' states.txt — печать строк с 5 по 9;</li><li>sed '20,30 s|New|Old|1' states.txt — влияет на 1-е вхождение в стр. 20–30;</li><li>sed -n '$p' states.txt — печать последней строки;</li><li>sed '1,3 d' states.txt — удалить первые 3 строки;</li><li>sed '/^$/d' states.txt — удалить все пустые строки;</li><li>sed '/York/!s/New/Old/' states.txt — заменить всё, кроме  York;</li><li>kubectl -n kube-system get configmap/kube-dns -o yaml | sed 's/8.8.8.8/1.1.1.1/' | kubectl replace -f -.</li></ul><p>В следующей части разберём основные <a href="https://tproger.ru/translations/instrumenty-terminala-linux-vtoraja-chast/">инструменты терминала Linux</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Работаем в терминале Linux как профи: подборка полезных команд</title>
      <link>https://tproger.ru/articles/useful-linux-commands</link>
      <comments>https://tproger.ru/articles/useful-linux-commands?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Никита Прияцелюк]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/useful-linux-commands</guid>
      <description><![CDATA[<p>Приёмы, экономящие время в командной строке: автодополнение по Tab, быстрое возвращение в прошлую рабочую директорию и другие полезные команды.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/useful-linux-commands">Работаем в терминале Linux как профи: подборка полезных команд</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 21 Sep 2018 17:10:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Видели про-юзеров Linux, которые эффективно работают в терминале? Хотите так же? Не вопрос: в этой статье мы собрали некоторые из полезных команд, которые помогут вам сэкономить время и повысить продуктивность.</p><h3>Использование табов для автодополнения</h3><p>Когда вы начинаете что-то вводить в терминале, вы можете нажать Tab и вам будут предложены возможные варианты продолжения, которые начинаются с введённой вами строки.</p><p>Например, если вы хотите скопировать файл с именем file1.txt, вы можете ввести только cp f, нажать Tab и увидеть возможные варианты.</p><p>Также Tab можно использовать для автодополнения команд.</p><h3>Возвращение в последнюю рабочую директорию</h3><p>Представьте ситуацию, когда вы спустились глубоко по иерархии папок, затем перешли в папку, которая находится в совершенно другом месте, а потом поняли, что вам нужно вернуться обратно. В таком случае вам всего лишь нужно ввести следующую команду:</p><p>cd -</p><p>Она вернёт вас в последнюю рабочую директорию и вам не придётся вручную вводить длинный путь.</p><p>Примечание Последняя рабочая директория хранится в переменной окружения OLDPWD; вы можете использовать эту переменную для своих целей (попробуйте echo $OLDPWD) или даже подложить команде cd - другой путь (OLDPWD=/usr/bin cd -).</p><h3>Возвращение в домашнюю директорию</h3><p>Это слишком очевидно. Чтобы вернуться в домашнюю директорию из любого места, вы можете использовать следующую команду:</p><p>cd ~</p><p>А вообще, можно ограничиться командой cd и получить тот же результат. В большинстве современных дистрибутивов Linux эта команда должна сработать.</p><h3>Вывести содержимое каталога</h3><p>Вы, наверное, догадываетесь, какая команда нужна для отображения содержимого каталога. Всем известно, что для этого можно использовать ls -l.</p><p>Однако не все знают, что можно обойтись командой ll.</p><p>Конечно, всё зависит от дистрибутива, но в большинстве случаев вы сможете воспользоваться этой командой.</p><p>Примечание На самом деле, ll является не отдельной командой, а псевдонимом для ls -l.</p><h3>Запуск нескольких команд за раз</h3><p>Допустим, вам нужно запустить несколько команд одну за другой. Что вы будете делать? Подождёте завершения первой команды, а затем запустите следующую?</p><p>Вместо этого вы можете использовать разделитель ;. Таким образом можно запустить несколько команд на одной строке. Вам не нужно ждать, пока какая-то из команд завершит свою работу, чтобы запустить следующую.</p><p>command_1; command_2; command_3</p><p>Примечание При запуске команд таким образом, они выполняются не параллельно, а последовательно. Если вам нужен именно первый вариант, то используйте конструкцию (command_1 &amp;); (command_2 &amp;).</p><h3>Запуск нескольких команд за раз при условии, что предыдущая команда была выполнена успешно</h3><p>Как запускать несколько команд за раз вы уже знаете. А как убедиться, что команды не завершились с ошибкой?</p><p>Допустим, вы хотите собрать код и запустить его в случае успешной сборки.</p><p>В этом случае вы можете использовать разделитель &amp;&amp;, который запускает следующую команду только при условии, что предыдущая успешно завершилась.</p><p>command_1 &amp;&amp; command_2</p><p>Как пример использования &amp;&amp; можно привести команду sudo apt update &amp;&amp; sudo apt upgrade для обновления системы через терминал на системах, основанных на Debian.</p><h3>Время убивать</h3><p>Есть несколько способов «убить» программу. Команда killall сделает это по имени, а kill требуется номер процесса. Например, killall chrome убьёт все процессы chrome. Также можно послать любому процессу сигнал прерывания (как Ctrl+C) с помощью kill -INT &lt;номер процесса&gt;.</p><h3>Пора остановиться</h3><p>Чтобы поставить работающую команду на паузу нажмите комбинацию Ctrl+Z, а чтобы продолжить — %.</p><h3>Простой поиск и использование предыдущих команд</h3><p>Представим ситуацию, когда вы воспользовались какой-то командой пару часов назад и снова хотите её использовать, но не можете вспомнить название.</p><p>Здесь поможет обратный поиск. С его помощью можно по заданному условию найти команду в истории.</p><p>Просто нажмите комбинацию Ctrl+R и введите часть команды. Затем вам будут показаны команды из истории, которые удовлетворяют заданному условию.</p><p>Ctrl+R &lt;условие&gt;</p><p>По умолчанию показывается только один результат. Чтобы увидеть больше результатов, нужно повторно нажать Ctrl+R. Чтобы выйти из поиска, нажмите Ctrl+C.</p><p>Учтите, что в некоторых оболочках Bash можно использовать Page Up и Page Down с условием поиска для автодополнения команды.</p><h3>Выводим консоль из зависания после Ctrl+S</h3><p>Многие привыкли использовать комбинацию Ctrl+S для сохранения. Однако после её использования в терминале, он часто зависает. Чтобы вернуть его в нормальное состояние, нажмите комбинацию Ctrl+Q.</p><h3>Переход к началу или концу строки</h3><p>Допустим, вы вводите длинную команду и вдруг понимаете, что вам нужно что-то изменить в её начале. Чтобы попасть в начало или конец строки вы можете несколько раз нажать клавишу стрелки влево/вправо или Home/End. А можете нажать Ctrl+A или Ctrl+E.</p><h3>Чтение лог-файла в реальном времени</h3><p>В ситуациях, когда вам нужно анализировать логи при запущенном приложении, можно использовать команду tail с флагом -f.</p><p>tail -f &lt;путь к лог-файлу&gt;</p><p>Также можно использовать регулярные выражения в grep, чтобы выводить только нужные строки:</p><p>tail -f &lt;путь к лог-файлу&gt; | grep &lt;регулярное выражение&gt;</p><p>Кроме того, вы можете использовать флаг -F, чтобы tail продолжал работу даже в случае удаления лог-файла. Таким образом, когда лог-файл снова будет создан, tail продолжит логирование.</p><p>Если вы хотите просматривать системный лог в реальном времени, воспользуйтесь аналогичной опцией -f команды journalctl:</p><p>journalctl -f</p><h3>Чтение сжатых логов без извлечения</h3><p>Серверные логи обычно сжимаются gzip’ом для сохранения дискового пространства. Это становится проблемой для разработчика или сисадмина, который анализирует эти логи. Возможно, вам придётся скопировать архив в другое место, а затем извлечь его, так как не всегда есть права на извлечение логов.</p><p>К счастью, в таких ситуациях всегда спасут z-команды. Они являются альтернативами обычных команд, которые используются для работы с логами вроде less, cat, grep.</p><p>Поэтому вы можете воспользоваться zless, zcat, zgrep и т.д., даже не извлекая логи.</p><h3>Использование less для чтения файлов</h3><p>Команда cat не всегда лучший выбор для отображения содержимого файла, особенно если он большой — cat выведет сразу весь файл.</p><p>Вы можете использовать Vi, Vim или другой терминальный текстовый редактор, но если вам просто нужно прочитать файл, то команда less подойдёт гораздо лучше.</p><p>less &lt;путь к файлу&gt;</p><p>В less можно искать нужную подстроку, листать по страницам, отображать номера строк и не только. А ещё less может читать не только текстовые документы, но ещё и архивы и другие типы файлов.</p><h3>Использование аргумента предыдущей команды с помощью !$</h3><p>Использование аргумента предыдущей команды может пригодиться во многих ситуациях. Например, вы создали директорию и вам нужно сразу в неё перейти.</p><p>Ещё лучше использовать alt+. . Множественное нажатие точки позволяет выбрать аргумент одной из нескольких предыдущих команд.</p><h3>Использование предыдущей команды в текущей с помощью !!</h3><p>С помощью !! можно вызвать даже всю предыдущую команду. Это особенно полезно в тех случаях, когда оказывается, что для запуска команды нужны рут-привилегии.</p><p>Быстрое sudo !! позволяет сэкономить немного времени.</p><h3>Использование alias для исправления опечаток</h3><p>Вероятно, вы уже знаете, зачем нужна команда alias. Её можно приспособить для исправления опечаток.</p><p>Представим, что вместо grep вы часто пишете gerp. Если вы установите псевдоним следующим образом, то вам не придётся больше перепечатывать команду:</p><p>alias gerp=grep</p><p>К слову, для исправления опечаток не обязательно использовать псевдонимы — утилита <a href="https://github.com/nvbn/thefuck">The Fuck</a> сама исправит предыдущую команду.</p><h3>Перезагружаемся</h3><p>Чтобы выключить компьютер из терминала, введите poweroff, а для перезагрузки — reboot.</p><h3>Вставка скопированного текста в терминал</h3><p>Здесь не всё однозначно, так как между дистрибутивами Linux и терминалами есть определённая разница. Но в общем случае вставить текст можно одним из следующих способов:</p><ul><li>Скопируйте текст и кликните правую кнопку мыши для вставки (работает в Putty и других Windows-клиентах SSH);</li><li>Скопируйте текст и нажмите среднюю кнопку мыши (колёсико) для вставки;</li><li>Ctrl+Shift+C для копирования и Ctrl+Shift+V для вставки;</li><li>В некоторых эмуляторах терминала работает привычная комбинация Ctrl+V.</li></ul><h3>Завершить работающий процесс/команду</h3><p>Возможно, это слишком очевидно. Если у вас запущена команда, работу которой вы хотите завершить, просто нажмите Ctrl+C и команде будет отправлен сигнал прерывания (SIGINT). А если вы хотите быстро покинуть терминал, нажмите комбинацию Ctrl+D, которая для баша и других интерактивных программ означает окончание ввода.</p><h3>Команда для скриптов или команд, которым нужен интерактивный ответ</h3><p>Команда yes может пригодиться, если какой-то скрипт/команда требует взаимодействия с пользователем, которое заключается только в нажатии Y каждый раз.</p><p>yes | &lt;команда или скрипт&gt;</p><h3>Очистить файл, не удаляя его</h3><p>Если вам нужно только очистить содержимое файла, а не удалить его, вы можете сделать это следующим образом:</p><p>&gt; имя_файла</p><h3>Узнать, есть ли файл с определённым текстом</h3><p>В терминале Linux можно искать разными способами. Если вам нужно узнать, есть ли файл(ы) с определённым текстом, можете воспользоваться этой командой:</p><p>grep -Pri &lt;текст_для_поиска&gt; &lt;путь_к_директории&gt;</p><h3>Получаем справку для каждой команды</h3><p>Почти все команды/инструменты командной строки содержат справку с указаниями по работе. Чтобы получить справку, воспользуйтесь этой командой:</p><p>&lt;команда&gt; --help</p><p>Кроме того, порой можно получить более подробную справку с помощью команды man &lt;команда&gt;.</p><h3>Получаем историю команд</h3><p>Если вы хотите взглянуть на все команды, которые вы когда-либо запускали, введите history. Если вам нужен не полный список, а только несколько последних, воспользуйтесь командой fc -l.</p><h3>Быстро запускаем команды из истории</h3><p>При получении команд одним из вышеуказанных способов рядом с каждой командой находится её номер в истории. Чтобы быстро запустить команду из этого списка просто введите !&lt;номер команды&gt;.</p><h3>Выполняем команду в обход истории</h3><p>Если вы хотите выполнить команду так, чтобы она не сохранилась в истории, просто введите пробел перед командой.</p><h3>Поднимаем простой HTTP-сервер</h3><p>Чтобы поднять сервер и сделать доступной текущую директорию по адресу http://localhost:8000/ введите python3 -m http.server.</p><h3>Пишем длинные команды с удобством</h3><p>Если зажать Ctrl, а затем нажать по очереди X и E, то откроется текстовый редактор, в котором можно будет спокойно записать длинную команду, а после выхода из него — выполнить её.</p><h3>Восстанавливаем терминал</h3><p>Если вы вывели в терминал сырые бинарные данные или ещё что-то, что выводить не стоило, то убрать увиденную абракадабру позволит команда reset.</p><h3>Информация о файловых системах</h3><p>Чтобы получить информацию о текущих смонтированных файловых системах с удобным оформлением по столбцам, введите команду mount | column -t.</p><p>Также вы можете воспользоваться командой findmnt, которая отображает информацию в виде красивого дерева и сама форматирует столбцы, а также может найти нужную файловую систему:</p><h3>Деревья процессов</h3><p>Есть инструмент pstree, который умеет рисовать красивые деревья процессов. Например:</p><h3>Экран блокировки</h3><p>Чтобы заблокировать экран, используйте команду $ loginctl lock-session.</p><p>Для разблокировки экрана введите команду $ loginctl unlock-session. Конечно, вряд ли вы сможете использовать терминал при заблокированном экране, однако вы можете пойти обходными путями. Например, можно создать задачу для разблокировки через какое-то время.</p><h3>Супершелл</h3><p>Чтобы запустить шелл от имени суперпользователя, можно воспользоваться командой sudo -s.  Во многих источниках можно встретить вариант sudo su, который тоже работает, но медленнее, так как запускает лишний процесс.</p><h3>Быстро открываем файлы в программе по умолчанию</h3><p>Команда xdg-open позволяет открыть любой файл в соответствующей программе. Например, xdg-open file.txt откроет файл в текстовом редакторе по умолчанию.</p><h3>Статус системных сервисов</h3><p>Чтобы посмотреть статус системных сервисов, введите команду systemctl status или systemctl status &lt;имя сервиса&gt;, если вас интересует конкретный сервис.</p><h3>Быстро ищем файлы</h3><p>Если вам нужно найти файл, но вы не знаете, где конкретно он находится, можно воспользоваться командой find. Например:</p><h3>Используем вывод одной команды в качестве аргумента другой</h3><p>Чтобы использовать вывод одной команды в качестве аргумента другой, используйте конструкцию команда-2 $(команда-1). Например:</p><h3>Календарь</h3><p>Команда cal может нарисовать календарь на текущий месяц (и даже выделить текущее число) или на другой промежуток:</p><h3>Планировщик задач</h3><p>Чтобы выполнить какую-то команду в нужное вам время, воспользуйтесь at:</p><p>echo команда-для-выполнения | at время_выполнения</p><p>Учтите, что эта команда может отсутствовать на вашей системе, и вам придётся установить её самостоятельно.</p><h3>Получаем свой внешний IP</h3><p>Чтобы получить свой внешний IP-адрес введите curl ifconfig.me или curl ipinfo.io/ip. Возможно, сначала вам придётся установить curl.</p><h3>Прогноз погоды</h3><p>Введите команду curl wttr.in/&lt;нужный город&gt; и получите красивую таблицу с прогнозом погоды:</p><h3>Получаем таблицу ASCII</h3><p>Чтобы получить быстрый доступ к таблице ASCII просто введите man ascii.</p><h3>Простой калькулятор</h3><p>Небольшие выражения можно вычислять прямо в терминале. Это можно сделать либо с помощью конструкции echo &lt;выражение&gt; | bc, либо echo $((&lt;выражение&gt;)). Например:</p><h3>Выполняем команду в другой директории и возвращаемся обратно</h3><p>Если вы хотите выполнить команду в другой директории, но при это не хотите покидать текущую, то просто оберните команду скобками. Например, (cd /tmp &amp;&amp; ls). Здесь скобки запускают подшелл (subshell), внутри которого мы и выполняем cd.</p><h3>Узнаём, какие библиотеки нужны команде/библиотеке</h3><p>Чтобы узнать, какие динамические библиотеки нужны программе или библиотеке и как они будут разрешены при запуске, используйте команду ldd:</p><h3>Узнаём, что лежит внутри файла</h3><p>Чтобы определить тип содержимого, находящегося в файле, используйте команду file:</p><h3>Многократный запуск команды</h3><p>Чтобы запускать команду каждые несколько секунд (по умолчанию две) и смотреть на её вывод, воспользуйтесь командой watch &lt;команда&gt;.</p><h3>Время на запуск команды</h3><p>Чтобы узнать, сколько времени уходит на запуск команды, используйте time &lt;команда&gt;.</p><h3>Системные вызовы команды</h3><p>Чтобы узнать, какие системные вызовы совершает программа, введите strace &lt;команда&gt;.</p><h3>Запоминаем набираемую команду</h3><p>Если вы набираете какую-то команду и вам по какой-то причине нужно прерваться и, например, ввести другую команду, вы можете «запомнить» то, что вы ввели комбинацией Ctrl+U, а затем вставить комбинацией Ctrl+Y.</p><h3>Выкачиваем сайты</h3><p>Чтобы выкачать сайт используйте команду wget --random-wait -r -p -e robots=off -U mozilla &lt;адрес сайта&gt;.</p><h3>Проводим туннели</h3><p>С помощью команды ssh -N -L 2001:localhost:80 somemachine можно создать туннель от 80 порта на удалённой машине до 2001 на локальной.</p><p>А какие полезные команды знаете вы? Делитесь в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>Полезные команды Linux, о которых вы не знали</title>
      <link>https://tproger.ru/articles/cool-linux-commands</link>
      <comments>https://tproger.ru/articles/cool-linux-commands?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/cool-linux-commands</guid>
      <description><![CDATA[<p>Подборка команд Linux-терминала с сайта commandlinefu.com: запуск последней команды от рута, быстрая замена в команде, раздача директории по HTTP.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/cool-linux-commands">Полезные команды Linux, о которых вы не знали</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 27 Feb 2016 01:06:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>Сайт <a href="http://www.commandlinefu.com/">commandlinefu.com</a> создан для сбора полезных команд Linux-терминала, которые хочется использоваться снова и снова. О многих вы могли даже ничего не знать, но увидев наверняка подумаете: «Круто! А что, так можно было?»</p><p>sudo !! — запустить последнюю команду от имени рута. Полезно, если вы забыли добавить sudo в начале строки.</p><p>python -m SimpleHTTPServer — сделать доступной текущую директорию по адресу http://$HOSTNAME:8000/.</p><p>^foo^bar — выполнить предыдущую команду, но с заменой. Например, попробуйте запустить echo "tprogezr", а затем ^z.</p><p>ctrl-x e — зажать Ctrl и не отпуская x, затем e. Запускает редактор, чтобы можно было удобно составить большую сложную команду.</p><p>пробел команда — выполнить команду, но не запоминать её в истории.</p><p>'ALT+.' или ' .' — поместить аргумент последней команды в консоль.</p><p>reset — восстановить терминал после вывода в него сырых бинарных данных или других ошибок формирования текста на экране.</p><p>mount | column -t — информация о текущих смонтированных файловых системах с удобным оформлением по столбцам.</p><p>echo "ls -l" | at midnight — выполнить команду в указанное время.</p><p>curl ifconfig.me — получить свой внешний IP.</p><p>ssh -N -L2001:localhost:80 somemachine — создать туннель от 80 порта на удалённой машине до 2001 на локальной.</p><p>man ascii — быстрый доступ к таблице ASCII.</p><p>dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp — перенаправить звук с вашего микрофона на колонки на удалённой машине.</p><p>arecord -f dat | ssh -C user@host aplay -f dat — более современный вариант предыдущей команды.</p><p>ctrl+u [...] ctrl+y — запомнить текущую набираемую команду, а затем восстановить. Например, если в процессе набора команды вы что-то забыли, а затем хотите вернуться и продолжить.</p><p>wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com — выкачать весь сайт.</p><p>curl -u user:pass -d status="Tweeting from the shell" http://twitter.com/statuses/update.xml — сделать твит через curl.</p><p>(cd /tmp &amp;&amp; ls) — перейти к директории, выполнить там команду, вернуться к предыдущей директории.</p><p>Больше команд можно найти на <a href="http://www.commandlinefu.com/commands/browse/sort-by-votes">этом сайте</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Краткое введение в tmux для программистов</title>
      <link>https://tproger.ru/links/tmux-for-developers</link>
      <comments>https://tproger.ru/links/tmux-for-developers?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Артём Артемьев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/links/tmux-for-developers</guid>
      <description><![CDATA[<p>Менеджер терминалов tmux похож на GNU Screen и помогает управлять несколькими удалёнными машинами, а также пригодится при написании кода.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/links/tmux-for-developers">Краткое введение в tmux для программистов</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Интересные ссылки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 20 Oct 2015 13:50:28 GMT</pubDate>
      <content:encoded><![CDATA[<p>tmux (TERminal MUltipleXer) — менеджер терминалов, похожий на GNU Screen. Это незаменимая для системных администраторов утилита, позволяющая с легкостью справляться с управлением одновременно несколькими удаленными машинами. Однако и программистам <a href="http://jilles.me/tmux-for-developers/">стоит изучить tmux</a>: он пригодится как для написания кода, так и для администрирования виртуальных машин.</p>]]></content:encoded>
    </item>
    <item>
      <title>Покажи мне свой терминал</title>
      <link>https://tproger.ru/links/show-me-your-term</link>
      <comments>https://tproger.ru/links/show-me-your-term?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/links/show-me-your-term</guid>
      <description><![CDATA[<p>Маленькая утилита сохраняет всё происходящее в командной строке. Готовый файл занимает намного меньше места, чем видео, и не подвергается сжатию.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/links/show-me-your-term">Покажи мне свой терминал</a>»</p>]]></description>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Инструменты терминала Linux]]></category>
      <category><![CDATA[Интересные ссылки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 12 Oct 2015 18:18:16 GMT</pubDate>
      <content:encoded><![CDATA[<p>Showterm — маленькая утилита для записи всего, что происходит в терминале. Это отличная замена съемке скринкаста, если вам надо записать видеоруководство или продемонстрировать кому-либо запись своей работы с командной строкой, так как готовый файл занимает гораздо меньше места и не подвергается сжатию.</p>]]></content:encoded>
    </item>
  </channel>
</rss>