Как определить, записывает ли программа с микрофона?

Вы можете использоватьtr

tr '\n',

Это изменит каждый экземпляр \nна запятую, поэтому вам нужно исправить последний. Вот пример

cat >file.txt <<x
8600
22007
93509
9984
22146
x

tr '\n', <file.txt
8600,22007,93509,9984,22146,        # and the shell prompt follows immediately

tr '\n', <file.txt | sed 's/,$/\n/'
8600,22007,93509,9984,22146         # line is ended with newline

Обратите внимание, что такое использование sedне определено стандартом POSIX, который предполагает, что все строки завершаются символом новой строки. Вы можете исправить это, вставив awk 1в конвейер, потому что awkявно определено POSIX для добавления завершающей новой строки к последней строке, если она отсутствует:

tr '\n', <file.txt | awk 1 | sed 's/,$//'
8600,22007,93509,9984,22146         # line is ended with newline

Для быстрого исправления это было бы приемлемым (хотя pasteрешение, предлагаемое в другом месте, лучше ). Однако tr | awk | sed— уродливая комбинация, которую следует пересмотреть в производственном коде. Таким образом, мы можем закончить с этим:

awk 'NR>1 {printf ","}; {printf "%s", $0}; END {printf "\n"}' file.txt
1
15.04.2021, 10:36
1 ответ

A general solution that does not rely on Pulseaudio would be ideal.

Большинство, если не все, популярные современные дистрибутивы Linux используют Pulseaudio, который открывает устройства с ядром ALSA и держит их постоянно открытыми, что означает, что решение, вероятно, должно включать его.

Кроме того, если PA установлен и запущен, приложения не могут выполнять чтение и запись на устройства ядра ALSA, поскольку PA открывает их исключительно.

Вот быстрая команда, которая, если она возвращает какие-либо выходные данные, означает, что ваши устройства ввода используются:

pacmd list-sources | grep RUNNING
2
28.04.2021, 22:52

Теги

Похожие вопросы