chowning каждый домашний пользователь к себе рекурсивно

Я не думаю, что это тривиально, и этот вопрос должен, вероятно, быть перемещен в stackoverflow.

Существует насколько я знаю нет sysfs или procfs интерфейс для доступа к финалу (ALSA) [аудио] соединение; даже нет гарантии, что существует такая вещь в программном обеспечении как некоторые аппаратные средства (такой как emu10k1) выполняет его собственное смешивание, хотя я по общему признанию понятия не имею, как это работает.

Существует также вопрос нескольких аудиовыходов (цифровой (как SPDIF), аналог, headphons или динамики, и т.д.) и несколько конфигураций динамиков на той же карте, не говоря уже о возможности нескольких карт.

Лучший выбор состоит в том, чтобы, по-видимому, попытаться насладиться, какой бы ни устройство ALSA используется (По-видимому, hw0 если смешивание происходит в звуковой подсистеме как pulseaudio, или dmix если никакая звуковая подсистема не используется), так как это - "последний шаг", прежде чем аудио достигнет аппаратных средств. Однако я понятия не имею, возможно ли это;наверное, нет.

Если можно предположить, что пользователь использует что-то как pulseaudio, то задача становится намного легче. Программное обеспечение, такое как pavucontrol уже реализует это, как замечено под вкладкой Playback, а также этапами pre-final-mix под Устройствами вывода. Технически, это включает получение самого аудиопотока, затем преобразовывая его в частотную область (например, путем выполнения StFt) для визуализации его некоторым способом; все, в чем Вы действительно нуждаетесь для этого, является доступом к аудиопотоку, и pulseaudio может обеспечить, это (как pavucontrol делает) через приемник.

Я не помогаю, не так ли? На вашем месте и просто требуемый это для моего рабочего стола, и если я использовал pulseaudio (который я сам, оказывается, использую), моя первая цель состояла бы в том, чтобы попытаться получить заключительный поток соединения. Парни в этом потоке, кажется, выяснили красноречивый метод выполнения того использования только pactl и pacmd, который мог довольно легко быть сделан программно также.

Когда Вы схватили аудиопотока, только математика остается :-)

0
19.07.2013, 02:29
2 ответа

Полный ответ был бы

1) Откройте файл как vi chown_homedirs

2) Вставьте следующий код

#!/bin/bash

cd /home &&    
for h in *
  do 
    chown -R "$h:$h" "$h"; 
  done

3) Сохраните файл

4) chmod +x chown_homedirs

5) выполненный ./chown_homedirs

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

2
28.01.2020, 02:37

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

#!/bin/bash
cd /home
for file in *
do
    user=$(stat -c %U "$file")
    group=$(stat -c %G "$file")
    echo chown -R "$user":"$group" "$file"
done

Это справляется с ситуацией, где владелец/группа/каталог не является всем одинаковым. Очевидно, удалите эхо, если оно тестирует хорошо на Вас.

0
28.01.2020, 02:37
  • 1
    , Соблюдают осторожность при записи сценариев, что CD к цели и выполняет операции. Полагайте, что этот скрипт запущен администратором на сервере, где / домой находится в плохом состоянии, и администратор в настоящее время находится в / var. Всему в var показали бы-R root:root. Я рекомендовал бы выполнить итерации непосредственно на /home/* или использование чего-то как if [ $? -ne 0 ]; then echo Failed to cd to /home. Exiting!; exit 1; fi. –  Kyle Smith 18.07.2013, 14:16
  • 2
    @KyleSmith: существует много вещей неправильно со сценарием от POV того, чтобы быть завершенным, он действительно просто демонстрирует использование stat вместо того, чтобы вслепую принимать владение файлов. использование –   18.07.2013, 14:23
  • 3
    @KyleSmith Bash [[]] ключевое слово для тестирования. [ тестовая команда используется, только если Вы пишете для !sh. Также Вы не должны должны быть проверять код состояния, вместо этого ! cd /home && echo "failed" >&2; exit 1 –   18.07.2013, 14:25
  • 4
    @Iain: Понятый, просто хотите удостовериться OP или кто-либо еще полагающий, что сценарий думает о протестах. –  Kyle Smith 18.07.2013, 14:26
  • 5
    @val0x00ff: Используя && проверяет код состояния. Мой код является просто более подробным способом выполнить то же. –  Kyle Smith 18.07.2013, 14:29

Теги

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