Давайте разберемся с различными настройками звука.
Ваше звуковое оборудование управляется драйверами ядра ALSA, библиотека ALSA предоставляет доступ к этим драйверам, и существуют различные элементы управления громкостью/отключением звука, которые можно изменить с помощью alsamixer
или amixer
. . Некоторые из этих настроек также могут быть доступны через Gnome. Я обычно оставляю их в покое и изменяю только если что-то не работает.
Вы можете сохранить и восстановить эти настройки с помощью alsactl store
и alsactl restore
, а пакеты Debian alsa-utils
содержат скрипт, который восстанавливает их из /var/lib/alsa/asound.state
.
Pulseaudio работает поверх ALSA. Вы можете изменить настройки Pulseaudio в pavucontrol
и другими способами. Pulseaudio запоминает некоторые из своих настроек, но нет общего способа их сохранения или восстановления; если вы хотите, чтобы настройки Pulseaudio отображались при загрузке, вам нужно повозиться с настройкой Pulseaudio.
Поскольку я не запускаю рабочий стол Gnome, я не знаю, что на самом деле делает «отключить звуковые оповещения». Это могут быть настройки Gnome, и в этом случае вам нужно выяснить, как восстановить настройки Gnome при загрузке. В базе данных настроек Gnome есть различные утилиты, такие как dconf
и gsettings
, но использование, по-видимому, менялось в разных версиях, и я никогда не мог полностью понять, как все работает.
Итак, если вас в основном интересует «отключение звуковых оповещений», вам нужно разобраться, что именно он делает и что изменяет.
Редактировать:
Таким образом, настройки Звуковых эффектов определенно относятся к Gnome, поэтому вам нужно выяснить, как сделать настройки Gnome постоянными или установить их при загрузке.
alsa-utils
восстанавливает настройки при загрузке, предоставляя сценарии для SysV Init (/etc/init.d/alsa-utils
) и systemd (/lib/systemd/system/ alsa-*
), которые в основном вызывают alsactl restore /var/lib/alsa/asound.stat
). Поэтому, когда вы вызываете alsactl store
от имени root, он запишет текущие настройки в этот файл, и они будут восстановлены при загрузке.
Возможно, что «выбранный» вывод, показанный в меню Gnome, является оболочкой для приемника Pulseaudio по умолчанию. Вы можете установить этот приемник с помощью pacmd set-default-sink
(используйте pacmd list-sist-sinks | grep name:
, чтобы получить список имен приемников), и я думаю, что в pavucontrol
тоже. Pulseaudio запомнит это. Также возможно, что это снова настройка Gnome, которая переопределяет то, что делает Pulseaudio.
С perl
$ perl -pe 'BEGIN{$n=1} s/as/$n++/e' file
a b c 1 aa as
2 b d f aa sa
df 3 kf as df
Если вы действительно хотите использовать sed, это можно сделать в течение цикла while:
count=1;
while read line
do sed 's/as/'"$count"'/1' <<< "$line";
count=$((count+1));
done < source_file >> target_file
Заключительный ''
пара "$ count"
необходима оболочке для правильного раскрытия переменной для использования внутри команды sed.
Еще короче (спасибо Кусалананде) :
while read line
do sed 's/as/'"$(( ++count ))"'/1' <<< "$line";
done < source_file > target_file
Если вы хотите увеличить только при обнаружении шаблона:
count=1;
while read line;
do sed '/as/! {q100}; s/as/'"$count"'/1' <<< "$line";
[[ "$?" -eq 0 ]] && (( ++count ));
done < source_file > target_file
Вот небольшой скрипт на Python, который может делать то, что вы просите.
#!/usr/bin/env python
import sys
counter = 0
with open(sys.argv[1]) as fd:
for line in fd:
new_words = []
words = line.strip().split()
found = False
for word in words:
val = word
if word == 'as' and not found:
counter += 1
found = True
val = str(counter)
new_words.append(val)
print(" ".join(new_words))
И тестовый прогон:
$ ./substitute_dynamic_val.py input.txt
a b c 1 aa as
2 b d f aa sa
df 3 kf as df
Поскольку шаблон замены меняется каждый раз, это может быть больше похоже на awk:
awk 'BEGIN { needle=1 } /as/ { $0=gensub( /as/, needle, 1, $0 ); needle=needle+1} { print } ' /path/to/input
Вышеупомянутое работает с GNU Awk 4.1.3 , API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)