Microsoft опубликовала официальный пакет Visual Studio Code для Linux, упакованный в виде моментального пакета. Чтобы установить Visual Studio Code в дистрибутивы на основе Debian -и другие дистрибутивы, поддерживающие пакеты моментальных снимков, откройте терминал и введите:
sudo apt install snapd
sudo snap install code-insiders --classic
Snap в классическом ограничении ведет себя как традиционно упакованное приложение с полным доступом к системе, а расширения Visual Studio Code устанавливаются в домашний каталог пользователя.
Как следует из названия, Visual Studio Code — это редактор кода со встроенным терминалом,не полноценная IDE, но последняя версия Visual Studio Code — очень хороший редактор кода.
Запустите это в оболочке и пусть работает:
arecord -D dmic_sv -c2 -r 48000 -f S32_LE -t wav -V mono -v \
| while :; do dd bs=384000 count=1 iflag=fullblock 2>/dev/null >>output; done
Каждый dd
будет отправлять 1 секунду данных (48000 выборок по 4 байта (32 бита )по 2 каналам, таким образом, 384000 байтов )на output
. Важно то, что output
будет открываться для добавления отдельно для каждого dd
. Это означает, что когда вы rm output
или mv output soundfile1.wav
, то следующий dd
будет писать в output
заново, т.е. будет создан новый output
.
Если mv output soundfile1.wav
происходит в пределах одной файловой системы, данные не будут потеряны. Я имею в виду, что если вы объедините soundfile1.wav
и новый output
, вы воссоздадите исходный поток. Это связано с тем, что переименование (или даже удаление )файла не беспокоит процесс, который уже открыл файл.
Переход на другую файловую систему фактически эквивалентен cp
+ unlink
. В этом случае может случиться, что dd
добавляется к output
между cp
и unlink
, и этот фрагмент теряется. Так что не перемещайте output
напрямую в другую файловую систему. Если вам нужно это сделать, переименуйте в пределах одной файловой системы, дождитесь появления нового output
и только после этого переместите переименованный файл в другую файловую систему.
Другой подход связан с символическими ссылками. Сделать output
символическую ссылку на какое-нибудь имя:
ln -s soundfile2.wav output
Затем выполните команду. Целевой файл может не существовать, он будет создан. Если он существует, к нему будут добавлены данные.
Если вы хотите переключиться на другой файл, атомарно обновите символическую ссылку:
ln -sf soundfile3.wav output
Новый файл может находиться в другой файловой системе, это не имеет значения.Симлинкинг также позволяет остановить сохранение данных без остановки arecord
. Просто перенаправьте нашу всегда работающую команду -на/dev/null
:
ln -sf /dev/null output
Это может быть полезно, потому что, скорее всего, если вы снова измените символическую ссылку и начнете сохранять в обычный файл, вы не вызовете всплывающее окно.
Подходы без или с символическими ссылками можно использовать вместе. Когда output
является символической ссылкой, просто удалите ее, и следующий dd
создаст output
как обычный файл. Когда output
является обычным файлом и вы хотите заменить его символической ссылкой без потери данных, жестко свяжите файл с новым именем (, например. ln output soundfile4.wav
), а затем атомарно замените output
символической ссылкой.
Примечания:
iflag=fullblock
не является портативным. Если ваш dd
не поддерживает его, попробуйте bs=8 count=48000
. В любом случае мы не хотим, чтобы переход к новому файлу происходил в середине -семпла. Наша одна выборка составляет 8 байтов (32 бита на 2 канала ). Я недостаточно знаком с arecord
и конвейерами в Linux, я могу только надеяться, что инструмент никогда не разделит сэмпл на более чем одну запись и, следовательно, dd bs=8
будет считывать полные сэмплы даже без iflag=fullblock
. Но я не уверен. Если dd
когда-либо читает меньше (, сравните этот ), тогда он сможет закончить запись в середине -сэмпла, и если вы перейдете на новый файл, то новый файл начнется с неполного сэмпла и не правильно играть. Так что, если вы можете использовать iflag=fullblock
, используйте его. Помните,dd
— капризный инструмент, которым трудно правильно пользоваться ; iflag=fullblock
снижает раздражительность. bs
и/или count
, чтобы увеличить или уменьшить степень детализации. Например. bs=38400 count=1
будет запускать 10 dd
процессов в секунду, поэтому вся установка сможет переключаться на новый файл почти мгновенно. С другой стороны, 10 процессов в секунду могут быть ненужной нагрузкой. Все, что вам подходит. Просто оставьте bs
кратным 8. dd
может выйти без записи.С помощью bs=384000 count=1
вы можете потерять до 1 секунды уже захваченных данных. Во время записи важных вещей отложите Ctrl + C на секунду-две.