Я уже писал о том, как работать с последовательным портом в Windows. Теперь созрела необходимость написать программу для обмена данными по последовательному каналу.
Работать с последовательным портом в Linux несколько сложнее чем в Windows.
Основные команды
Команда интерпретатора Bash man
Отображает руководства по командам. К примеру, последующая команда выдаст вам все данные о команде cat:
Команда интерпретатора Bash cat
Cчитывает файл, переданный в качестве аргумента, с выводом его содержимого по стандартному каналу вывода. При передаче нескольких файлов в виде аргумента происходит вывод конкатенированного содержимого всех файлов.
Команда интерпретатора Bash echo
Осуществляет вывод своих аргументов по стандартному каналу вывода.
$ echo Hello World Hello World
При использовании без аргументов выводится пустая строка.
Команда интерпретатора Bash head
Читает лишь первые десять строк любого переданного текста, выводя их по стандартному каналу. Можно изменить количество выводимых строк:
Команда интерпретатора Bash tail
Работает аналогично head, однако читает строки с конца:
$ tail -50
Дополнительно есть возможность просматривания добавляемых к файлу строк в режиме реального времени, используя флаг -f:
Команда интерпретатора Bash less
Позволяет перемещаться куску текста либо переданному файлу в обоих направлениях.
$ less $ ps aux | less
Кстати, о символе | мы расскажем ниже в блоке про команду интерпретатора Bash history.
Команды интерпретатора Bash true и false
Первая всегда возвращает ноль в качестве выходного статуса для индикации успеха, вторая, соответственно, не ноль в качестве выходного статуса для индикации неудачи.
$? — это переменная, содержащая выходной статус последней запущенной команды. Выходной статус — код возврата программы. В нашем случае 0 будет означать успешное выполнение программы, а любое значение, которое больше нуля, будет отражать факт возникновения ошибок в процессе выполнения. Кстати, именно по этой причине в интерпретаторе Bash истиной (true) считается 0, а ложью (false) — всё, что не ноль.
$ true $ echo $? $ false $ echo $? 1
Команда интерпретатора Bash grep
Служит для поиска переданной строки в указанном файле:
$ cat user:student password:123 user:teacher password:321 $ grep 'student` user:student password:123

Кроме того, может принимать несколько регулярных выражений и файлов для уточнения формата текста.
Команда интерпретатора Bash sed
Потоковый редактор, который преобразует входные текстовые данные. Используется для замены выражений следующим образом: s/regexp/replacement/g. К примеру, в следующем коде произойдёт замена всех слов «Hello» на «Hi»:
$ cat Hello World $ sed 's/Hello/Hi/g' Hi World
Руководство по sed.
Команда интерпретатора Bash history
Выводит историю командной строки. Часто используется совместно с grep при поиске конкретной команды. В коде ниже будут найдены все команды, которые содержат строку g++:
$ history | grep g++ 155 g++ 159 g++
Кстати, здесь тоже можно увидеть символ | — это конвейер (pipe). С его помощью происходит перенаправление вывода одной команды на вход другой. Так, в вышеописанном примере вся история (в обычном режиме она выводится с помощью history непосредственно в вывод терминала), перенаправляется в grep в качестве входных данных. То есть мы не увидим вывод команды history, зато увидим вывод команды grep.
Команда интерпретатора Bash export
Устанавливает переменные окружения для их передачи дочерним процессам. Допустим, так мы можем передать переменную name, имеющую значение student:
Команда интерпретатора Bash ps
Выводит данные о запущенных процессах.
$ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash
В результате выведутся 4 элемента: — PID (ID процесса), — TTY (тип терминала), — TIME (время работы процесса), — CMD (имя команды, запустившей процесс).
Команда интерпретатора Bash awk
Находит и меняет текст в файлах на основании заданного шаблона: awk ‘pattern {action}’
Команда интерпретатора Bash wget
Закачивает файлы из интернета, помещая их в текущий каталог.
Команда интерпретатора Bash nc
Утилита для отладки сети. Вот руководство.
Команда интерпретатора Bash ping
Служит для тестирования сетевого подключения.
$ ping PING (74) 56(84) bytes of data. 64 bytes from (74): icmp_req=1 ttl=57 time=7.82 ms — ping statistics — 1 packets transmitted, 1 received, % packet loss, time 8ms rtt min/avg/max/mdev = 7.794/ ms
Статистика в конце отображает число подключений, которые были совершены до завершения команды. Также отображается время их выполнения.
Статья написана специально для курса по Linux на основании материалов Bash-Cheatsheet.
Как увидеть все процессы в Linux
Добавление опции -e (выбрать все процессы) сделает так, что ps перечислит процессы, которые были запущены всеми пользователями, а не только пользователем, который запускает команду ps. Поскольку это будет длинный список, то вы можете добавить команду less.
ps -e | less
Список процессов с возможностью прокрутки в команде less:

Теперь записей о процессах намного больше, но мы видим те же четыре столбца, что и раньше. Вопросительный знак (?) в столбце TTY означает, что процесс запускался не из окна терминала.
Отправка сигналов
Существует несколько способов доставки сигналов в программу или скрипт. Одним из наиболее распространенных для пользователя является ввод CONTROL-C или клавиши INTERRUPT во время выполнения скрипта.
Когда вы нажимаете клавишу Ctrl + C , SIGINT отправляется в сценарий и в соответствии с определенным сценарием действия по умолчанию завершается.
Другим распространенным методом доставки сигналов является использование команды kill , синтаксис которой следующий:
$ kill -signal pid
Здесь сигнал — это либо номер, либо имя сигнала для доставки, а pid — идентификатор процесса, на который должен быть отправлен сигнал. Например —
- Как использовать команду scp для …
- scp команда Linux. Копирование файлов scp
- Использование команды SCP для …
- ssh. Команда scp. Linux …
- Основные SSH-команды для Linux-сервера …
$ kill -1 1001
Приведенная выше команда отправляет HUP или сигнал зависания программе, которая выполняется с идентификатором процесса 1001 . Чтобы отправить сигнал уничтожения тому же процессу, используйте следующую команду —
$ kill -9 1001
Это убивает процесс, запущенный с идентификатором процесса 1001 .
[] — набор символов
Как указано выше, вы используете знак вопроса для обозначения любого отдельного символа, а звездочку — для любой последовательности символов (включая символы).
Вы можете сформировать «подстановочный» знак с квадратными скобками ([]) и символами, которые они содержат. Соответствующий символ в имени файла должен соответствовать хотя бы одному из символов в наборе символов подстановки.
В этом примере команда переводит: «любой файл с» .txt», имя файла , начиная с „badge_0,“и в котором следующий символ либо 2, 4 или 6.»
ls badge_0 [246] .txt
Вы можете использовать более одного набора скобок на шаблон имени файла:
ls badge_ [01] [789] .txt
Вы также можете включить диапазоны в набор символов. Следующая команда выбирает файлы с номерами от 21 до 25 и от 31 до 35 в имени файла.
ls badge_ [23] [1-5] .txt