Puede usar comm
para eliminar todo lo que sea común a ambas listas:
listr=($(comm -3 <(printf "%s\n" "${list1[@]}" | sort) <(printf "%s\n" "${list2[@]}" | sort) | sort -n))
Esto ordena ambas listas en el orden comm
esperado, las compara, genera solo elementos que son exclusivos de cualquiera de las listas y los ordena nuevamente en orden numérico.
Si ambas listas están ordenadas lexicográficamente(según LC_COLLATE
), puede evitar ordenarlas de nuevo:
listr=($(comm --nocheck-order -3 <(printf "%s\n" "${list1[@]}") <(printf "%s\n" "${list2[@]}")))
Esto también funciona muy bien si los valores que necesita comparar están almacenados en archivos.
Когда вы устанавливаете приложение через Wine, оно создает файлы рабочего стола в двух местах:
~ / .wine / drive_c / users / username / Desktop
- для ярлыков на рабочем столе; ~ / .local / share / applications / wine / Programs
- для всех ярлыков в главном меню. Вероятно, будет достаточно включить только первую (там, где расположены только программы запуска, без всех этих ярлыков «Удалить / посетить наш сайт и т. Д.») В ПУТЬ
. И если вы не хотите включать их для всех приложений, вы можете настроить отдельный путь только для dmenu
и запустить его следующим образом:
$ PATH="$HOME/.wine/drive_c/users/username/Desktop:$PATH" dmenu_run
i3 -dmenu -desktop Perl-скрипт использует поиск файла рабочего стола и направляет его в dmenu для запуска файлов рабочего стола
dmenu на самом деле просто программа для динамического создания меню, при использовании в качестве запуска она на самом деле просто передает выбор пользователя в оболочку для запуска, я как бы злоупотребляю этим лакомым кусочком в dfuse создание нескольких сценариев вокруг самого dmenu, некоторые из них основаны на сценарии dmenu _запуска оболочки