Linux для чайника – Telegram
Linux для чайника
20K subscribers
88 photos
4 files
79 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
GNU Findutils

GNU Findutils - это набор утилит для поиска файлов в файловой системе в операционных системах Linux и других UNIX-подобных системах. Он включает в себя несколько утилит, например find, locate, updatedb, xargs и другие.

Чтобы установить GNU Findutils на Ubuntu:
sudo apt-get update
sudo apt-get install findutils


После того, как установка будет завершена, вы можете начать использовать утилиты GNU Findutils.

Например, утилита find позволяет искать файлы в файловой системе по различным критериям. Чтобы найти все файлы с расширением .txt в папке Documents, выполните следующую команду:
find ~/Documents -name "*.txt"
Команда updatedb

Она используется для обновления индекса файловой системы, который используется утилитой locate для быстрого поиска файлов.

Когда вы запускаете updatedb, он сканирует файловую систему и создает или обновляет файл индекса /var/lib/mlocate/mlocate.db, который содержит информацию о каждом файле в системе. Это облегчает поиск файлов по всей системе, не просматривая каждый каталог отдельно.

Для того чтобы запустить updatedb, нужно открыть терминал и ввести следующую команду:
sudo updatedb

После обновления индекса, вы можете использовать locate для быстрого поиска файлов по всей файловой системе, например, так:
locate myfile.txt

Эта команда найдет все файлы в системе с именем myfile.txt.
GNU Global

GNU Global - это набор утилит для создания индексов и поиска исходных кодов, использующихся при разработке программного обеспечения.

Чтобы установить GNU Global, необходимо выполнить следующие команды в терминале:
sudo apt-get update
sudo apt-get install global


После установки необходимо создать индекс исходных кодов. Для этого нужно перейти в корневую директорию проекта и выполнить команду:
gtags

Эта команда создаст файл "GTAGS", который содержит информацию об исходных кодах проекта. После этого можно использовать утилиту "global" для поиска идентификаторов в исходном коде:
global <идентификатор>
Возможности утилиты global

В самом начале нужно создать индекс исходного кода:
gtags

Далее с помощью global можно осуществить:

Поиск определения функции "main":
global -ax main

Поиск всех мест, где используется символ "foo":
global -ax foo

Поиск всех символов, начинающихся с префикса "bar":
global -ax bar*

Поиск всех файлов, используемых в зависимости от функции "baz":
global -ax -f baz
GNU parallel

GNU parallel - это утилита командной строки, которая позволяет выполнять команды параллельно. Это особенно полезно, когда требуется обработать большое количество файлов или выполнить одну и ту же команду на нескольких компьютерах.

Примеры:
Запуск команды "command" на всех файлах .txt в текущей директории, используя 4 потока.
parallel -j4 'command {}' ::: *.txt

Выполнение команды "command" на каждом файле .txt в текущей директории и группировка выполнение команд по файлам с одинаковым именем.
parallel --group 'command {}' ::: *.txt

Выполнение команды  "command" на всех файлах .txt из текущей директории на серверах server1, server2 и server3.
parallel -S server1,server2,server3 'command {}' ::: *.txt
Преимущества использования GNU parallel

1. Параллельное выполнение команд: GNU parallel позволяет выполнить несколько команд параллельно, что сокращает время исполнения.

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

3. Группировка команд: GNU parallel может группировать команды в зависимости от аргументов, что облегчает управление процессами.

4. Распределенное выполнение: Вы можете использовать GNU parallel для выполнения команд на нескольких компьютерах.

5. Поддержка шаблонов: GNU parallel поддерживает шаблоны, которые помогают автоматизировать выполнение повторяющихся задач.
GNU Radio

GNU Radio - это программное обеспечение с открытым исходным кодом для обработки цифровых сигналов, которое позволяет пользователям проектировать и создавать радиосистемы на компьютере.

Установка:
1. Установите зависимости: выполните следующую команду в терминале, чтобы установить необходимые зависимости:
sudo apt-get install gnuradio

2. Обновление и установка пакетов:
sudo apt-get update && sudo apt-get upgrade

3. Установите дополнительные пакеты:
sudo apt-get install gnuradio-dev

4. Установите GNU Radio Companion:
sudo apt-get install gnuradio-companion

5. Запустите GNU Radio Companion:
gnuradio-companion
Для чего можно использовать GNU Radio

1. Декодирование сигналов DVB-T: Этот пример демонстрирует, как использовать GNU Radio для декодирования сигналов цифрового вещания DVB-T. Вы можете использовать этот пример для понимания, как работать с различными блоками GNU Radio для декодирования цифровых сигналов.

2. Обнаружение сигналов радара: Этот пример демонстрирует, как использовать GNU Radio для обнаружения сигналов радара. Вы можете использовать этот пример для изучения, как использовать блоки GNU Radio для обработки радиочастотных сигналов.

3. Восстановление сигналов GPS: Этот пример демонстрирует, как использовать GNU Radio для восстановления сигналов GPS. Вы можете использовать этот пример для понимания, как работать с блоками GNU Radio для обработки GPS-сигналов.

4. Реализация беспроводных систем связи: GNU Radio может использоваться для создания беспроводных систем связи разного уровня сложности, от простых радиосвязи до сложных систем с многомодуляционными схемами и автоматической регулировкой уровня сигнала.

5. Анализ и запись радиочастотных сигналов: GNU Radio может использоваться для анализа и записи радиочастотных сигналов из различных источников, включая радиосвязь, телевизионные передачи, спутниковую навигацию и т.д.
GNU social

GNU social (ранее StatusNet и Laconica) — это серверное свободное программное обеспечение для развёртывания социальных сетей, написанное на PHP, которое использует стандарт OStatus для взаимодействия с другими серверами.

Предлагая функциональность, аналогичную Twitter, GNU Social обеспечивает открытую коммуникацию между пользователями распределённой социальной сети.

Есть несколько способов установить GNU social на Linux.
1. Используйте инструкции по установке из официального репозитория GNU social.
2. Используйте пакетный менеджер для установки. Например, для Ubuntu воспользуйтесь "sudo apt-get install gnusocial".
3. Скачайте и установите GNU social с официального сайта.
GNU Taler

GNU Taler - это свободная система электронных платежей с открытым исходным кодом, созданная для обеспечения безопасных, анонимных и удобных онлайн-платежей.

Установка:
1. Убедитесь, что на вашей системе установлены необходимые зависимости:
sudo apt install libunbound-dev libgcrypt-dev libglib2.0-dev libgnutls28-dev libtool automake autopoint pkg-config texinfo

2. Скачайте исходный код GNU Taler с официального сайта и распакуйте его в папку на вашем компьютере:
wget https://ftp.gnu.org/gnu/taler/taler-latest.tar.gz
tar xf taler-latest.tar.gz
cd taler-<version>


3. Выполните следующие команды для сборки и установки:
./configure
make
make install


4. Далее вам нужно настроить и запустить сервер GNU Taler.
- Создайте конфигурационный файл, следуя инструкциям в документации GNU Taler.
- Запустите сервер командой taler-exchange-httpd -c <путь к конфигурационному файлу> .

После запуска сервера вы можете проверить работу системы, открыв в браузере страницу http://localhost:8080. Если все настроено верно, вы должны увидеть страницу с информацией обменника.
Как отправлять сообщения по электронной почте прямо из терминала?

Для этого нам понадобится команда mail из GNU Mailutils. Также она позволяет не только отправлять письма, но и просматривать свою электронную почту, а также настраивать различные опции.

Примеры использования:

1. Отправка письма с заголовком "Test email" на адрес user@example.com с текстом "Hello, World!".:
echo "Hello, World!" | mail -s "Test email" user@example.com

2. Просмотр своей почты:
mail

3. Удаление первого сообщения в почтовом ящике пользователя:
mail -d 1

4. Отпраить ответ на сообщение с заголовком "Test email" на адрес user@example.com. :

mail -r "user@example.com" -s "Re: Test email" user@example.com < textfile

Заголовок ответного сообщения будет "Re: Test email". Содержимое сообщения будет взято из файла textfile. Опция -r указывает адрес отправителя ответного письма.
Команда movemail

Она является частью пакета GNU Mailutils и используется для импорта почты из формата mbox или maildir в другие форматы.

Пример импорта почты из mbox формата в формат Maildir:
movemail -m /path/to/mbox -s /path/to/Maildir/

Эта команда импортирует все сообщения из mbox файла, расположенного по пути /path/to/mbox в формат Maildir. Опция -s указывает путь к каталогу Maildir.

Пример импорта почты из Maildir формата в формат mbox:
movemail -d /path/to/Maildir/ -m /path/to/mbox

Эта команда импортирует все сообщения из каталога Maildir, расположенного по пути /path/to/Maildir/ в формат mbox. Опция -m указывает путь к файлу mbox.

Обратите внимание, что эти команды могут потребовать дополнительной настройки, такой как указание правильных путей к каталогам или файлам. Также не забудьте создать соответствующие каталоги перед запуском movemail.
"Совет свой себе посоветуй." Вот их несколько:

1. Начните с простых дистрибутивов: Если вы новичок в использовании Linux, начните с более простых дистрибутивов, таких как Ubuntu, Mint или Fedora. Эти дистрибутивы имеют более дружелюбный интерфейс и разработаны для удобства использования для пользователей с нулевым или ограниченным опытом работы с Linux.

2. Изучайте командную строку: Командная строка Linux может выглядеть сложной и непонятной, но после некоторой тренировки, вы начнете понимать, что это очень мощный инструмент. Изучение командной строки поможет вам управлять системой и работать эффективнее.

3. Установите пакеты только из источников, которым вы доверяете: Один из главных плюсов Linux - возможность устанавливать любые пакеты, не привязываясь к одному конкретному магазину приложений. Однако это также означает, что вы должны быть разумными и устанавливать пакеты только из источников, которым вы доверяете, чтобы избежать возможных проблем с безопасностью.

4. Запомните несколько полезных команд: Это может быть любая команда, такая как "ls" для просмотра содержимого директории, "ps" для просмотра запущенных процессов или "sudo" для выполнения команд с правами администратора в терминале.

5. Не бойтесь экспериментировать: Linux предоставляет множество возможностей для настройки системы, интерфейса и приложений. Не бойтесь экспериментировать с различными настройками и находите инновационные и удобные решения для себя.
Визуальное представление дерева каталогов 

Для получения визуального представления ваших директорий, можно использовать команду tree. Корень (/) дерева — вверху: 

tree -L 1 / 
 
Получим:
/
├── backups 
├── bin 
├── boot 
[...] 

В примере перечислены только каталоги верхнего уровня. С параметром -L 2 команда выведет также каталоги второго уровня, с параметром -L 3 — три уровня и т. д.
В Linux есть несколько полезных инструментов и команд для анализа исходного кода, которые могут помочь вам в понимании кода, выявлении ошибок и поиске уязвимостей. Некоторые из них включают:

grep - это утилита для поиска в файле по шаблону. Она может использоваться для поиска конкретной строки в файлах исходного кода, что может помочь в отладке кода и в поиске определенного куска кода.

find - это команда для поиска файлов и директорий в соответствии с заданными критериями. Её можно использовать для поиска файлов исходного кода на всем жестком диске в соответствии с именами, датами изменения, размерами файлов и другими параметрами.

ctags - это инструмент для создания индексных файлов, которые могут быть использованы другими инструментами для навигации по исходному коду. Индексные файлы содержат информацию о функциях, классах, переменных и других объектах в коде.

cscope - это инструмент для анализа исходного кода на С и С++, который позволяет искать определения, обращения и вызовы функций в больших проектах кода. С помощью cscope можно найти определения функций, макросов, переменных и других объектов в исходном коде.

valgrind - это инструмент для отладки динамического исполнения, который может использоваться для выявления утечек памяти, обнаружения ошибок в использовании памяти и определения производительности кода.

Зная эти инструменты, вы сможете лучше анализировать и отлаживать код в Linux.
Figlet — небольшая утилита для создания больших символьных заголовков из обычного текста.

Она преобразует текст в ASCII-арт, позволяя добавлять эффект к тексту, используя символы ASCII.

Для установки Figlet в Ubuntu:

sudo apt-get install figlet

Figlet предоставляет несколько опций для управления стилем текста, шрифтом и выравниванием. Проверить доступные шрифты можно в каталоге /usr/share/figlet/ и применить их с помощью флага -f
Поиск слова в текстовом файле

Для поиска можно использовать команду grep. На самом деле этот интрумент намного мощнее, но сейчас мы рассмотрим его базовые возможности.

Итак, чтобы найти слово в текстовом файле:
grep <слово> <файл>

Команда grep чувствительна к регистру, но, добавив флаг -i, она проигнорирует его:
grep -i <слово> <файл>

Также может быть полезно узнать количество найденных слов по целевому запросу. Для этого используется флаг -c:
grep -c <слово> <файл>
В Linux драйверы ядра - это программное обеспечение, которое позволяет операционной системе взаимодействовать с аппаратной частью компьютера или другими устройствами. Они предоставляют интерфейс между ОС и устройством, обеспечивая правильную и эффективную работу устройства. (Как и везде)

Процесс работы драйвера в Linux выглядит следующим образом:

Инициирование
- ядро операционной системы загружает и инициализирует драйвер при запуске системы или подключении устройства.

Регистрация - драйвер регистрируется в ядре с помощью структуры, которая описывает основные функции и возможности устройства.

Управление памятью - драйвер выделяет и управляет оперативной памятью, необходимой для работы устройства и его взаимодействия с ядром.

Основной цикл - драйвер отслеживает и обрабатывает запросы от операционной системы, передаваемые через специальные системные вызовы или интерфейсы. Он также отслеживает прерывания от устройства и реагирует на них, когда происходят события, требующие внимания драйвера.

Взаимодействие с устройством - драйвер отправляет и получает данные с устройства, контролируя его работу и передавая команды для выполнения специфических операций.

Обработка ошибок - драйвер обрабатывает возникающие ошибки и проблемы, предотвращая их влияние на работу всей системы и уведомляя операционную систему о возникающих сбоях или ошибках.

Выгрузка - когда драйвер уже не нужен, он может быть выгружен ядром операционной системы.

Важно отметить, что большинство драйверов для Linux являются частью ядра операционной системы и поставляются вместе с ней. Однако также существуют дополнительные драйверы, которые можно установить и обновить независимо от ядра.
Инвертированный поиск с помощью grep

Хоть и основная цель команды grep — искать определённые слова в строках, также можно сделать обратный поиск.

Для этого мы будем использовать параметр -v:
grep -v the <путь/к/папке>

Команда отобразит все строки, в которых нет слова «the». Это может пригодиться в документах или списках, в которых слово повторяется много раз, и по какой-то причине нужно получить доступ к остальным строкам.
Основы регулярных выражений

Регулярные выражения — это специальным образом записанные строки, используемые для поиска символьных шаблонов в тексте. Их можно использовать для инструментов командной строки, например, grep.

1. . - точка соответствует любому символу, например, gr.y найдет строки "gray", "green", "groom".

2. ^ - символ начала строки, например, ^hello найдет строки, начинающиеся с "hello".

3. $ - символ конца строки, например, world$ найдет строки, заканчивающиеся на "world".

4. [] - определяет класс символов, например, [aeiou] найдет любую гласную букву, [0-9] найдет любую цифру.

5. [^] - отрицание класса символов, например, [^0-9] найдет любой символ, кроме цифр.

6. * - символ, обозначает необязательный элемент, например, abc* найдет "ab", "abc", "abcc", "abccc", и т.д.

7. + - символ, действующий почти так же, как *, но требует совпадения с предыдущим элементом не менее одного раза, например, abc+ найдет "abc", "abcc", "abccc", и т.д.

8. ? - символ, означающий совпадение с элементом ноль или один раз. Иными словами совпадение с предыдущим элементом необязательно,например, ab?c найдет "ac" и "abc".

9. () - используются для группировки выражений, например, (ab)+ найдет "ab", "abab", "ababab", и т.д.

10. \ - используется для экранирования специальных символов, например, \. найдет точку в тексте.
Пакетные менеджеры в Linux предназначены для установки, обновления и управления программными пакетами на операционной системе. Они облегчают задачу поиска и установки программ, а также управления зависимостями между пакетами.

Работа пакетных менеджеров обычно включает следующие шаги:

1. Репозитории: Пакетные менеджеры получают информацию о доступных пакетах из предустановленных репозиториев или из других удаленных источников. Репозитории содержат информацию о пакетах, их версиях, зависимостях и других метаданных.

2. Поиск и выбор пакетов: Пакетные менеджеры предоставляют возможность поиска пакетов по их имени, ключевым словам или описанию. Затем пользователь выбирает нужные пакеты для установки или обновления.

3. Установка и зависимости: Когда пакеты выбраны, пакетный менеджер проверяет их зависимости. Зависимости могут быть библиотеками, другими программами или пакетами, необходимыми для правильного функционирования пакета. Пакетный менеджер автоматически устанавливает эти зависимости, чтобы обеспечить корректную работу пакета.

4. Загрузка и установка: Пакетный менеджер загружает пакеты из репозиториев или других удаленных источников. Затем он устанавливает пакеты на систему, распаковывая архивы, расположенные в пакете, и инициируя соответствующие скрипты установки.

5. Обновления и удаление: Пакетные менеджеры также предоставляют возможность обновления уже установленных пакетов до более новых версий и удаления ненужных пакетов.

Пакетные менеджеры в Linux имеют командный интерфейс (например, APT для Debian и Ubuntu, YUM/DNF для Fedora и CentOS) или графический интерфейс (например, Synaptic, GNOME Software). Команды и методы управления пакетами могут немного различаться в разных дистрибутивах Linux, но основные принципы остаются похожими.