Перезагрузка конфигурации - это функция, которую поддерживают не все программы. В частности, ресурсы X обычно считываются при запуске программы; не существует протокола, уведомляющего приложение о том, что оно должно использовать новые ресурсы¹. Rxvt стремится быть маленьким, поэтому неудивительно, что он не поддерживает перезагрузку своей конфигурации после запуска.
Некоторые настройки могут быть изменены динамически. В частности, шрифт может быть изменен с помощью управляющих последовательностей. Вы можете испускать эти управляющие последовательности из любого места, просто перенаправьте вывод на нужное терминальное устройство:
printf '\33]50;%s\007' … >/dev/pts/42
Я не могу придумать, как перечислить терминальные устройства, которые предоставляет rxvt. Вы можете легко перечислить устройства, на которых запущены процессы, этого может быть достаточно.
for pts in $(ps x -o tty= | sort -u); do
case "$pts" in pts/*) printf … >"/dev/$pts";; esac
done
¹ Вообще-то, есть один - editres - но кто слышал о editres? Никто, вот кто.
Очевидно, что флаг --delete
не работает, если вы синхронизируете несколько исходных каталогов с одним целевым каталогом. Вместо синхронизации dir1
и dir2
с dir3
вы можете синхронизировать содержимое родительского каталога dir1
и dir2
.
Пример (использование флага rsync -i
для просмотра изменений):
$ mkdir -p dir12/dir1 dir12/dir2 dir3
$ touch dir12/dir1/file1 dir12/dir2/file2
$ rsync -ai dir12/ dir3
cd+++++++++ dir1/
>f+++++++++ dir1/file1
cd+++++++++ dir2/
>f+++++++++ dir2/file2
# BEFORE: dir1 and dir2 were synced to dir3
$ rm -rf dir12/dir2
$ rsync -ai --delete dir12/ dir3
*deleting dir2/file2
*deleting dir2/
.d..t......./
# AFTER: dir3/dir2 is gone
Если у вас нет общего родительского каталога, то dir12/dir2
может быть символической ссылкой, указывающей на реальный каталог. С опцией-L
(--copy-links
)в первом вызове rsync
вы получите ту же структуру каталогов в dir3
с dir2
, что и каталог (вместо символической ссылки ). И после удаления символической ссылки dir12/dir2
и повторной синхронизации с --delete
каталог dir3/dir2
исчезнет, как в примере.
РЕДАКТИРОВАТЬ:
Я немного повозился и, возможно, нашел хак:
$ mkdir empty dir1 dir2 dir3
$ touch dir1/file1 dir2/file2
$ rsync -ai dir1 dir2 dir3
cd+++++++++ dir1/
>f+++++++++ dir1/file1
cd+++++++++ dir2/
>f+++++++++ dir2/file2
$ rsync -ai --delete empty/ dir1 dir3
*deleting dir2/file2
*deleting dir2/
.d..t......./
Используйте empty/
в качестве заполнителя для всех каталогов, которые вы хотите удалить.