Точка .
и звездочка *
в качестве метасимволов регулярных выражений должны быть экранированы, чтобы трактовать их буквально:
Образец входного файла:
$ cat input.txt
ServerAlias *.mysite.com
sed 's/ServerAlias \*\./&xx/' input.txt
ServerAlias *.xxmysite.com
Furthermore, my system does not have an /usr/local/share/applications/ Can that path be removed from the $XDG_DATA_DIRS env var
/usr/local/share/applications
отсутствует среди значений $XDG_DATA_DIRS
, которые вы вставили, поэтому нет необходимости удалять несуществующие -
Если вы grep -r XDG _ДАННЫЕ _DIRS /usr
, и вы увидите множество вхождений XDG _DATA _DIRS.
I hope that package is not responsible for screwing up my mime type associations...
Нет, это ничего не портит. Он просто ищет и в этих каталогах
In a new user account on a clean Arch install on another device, the following three commands produce no standard output
Точно, в разных системах вы получаете разные значения. Это те пакеты, которые вы устанавливаете, и переменные env, определенные для этого конкретного пользователя, которые определяют каталоги, в которых будут искаться файлы данных. Если одно и то же значение определено дважды, оно будет отображаться дважды. В этом нет ничего странного, потому что иногда пакеты не согласуются друг с другом. grep
/usr/
, /opt
и $HOME
, и вы точно где-нибудь найдете виновника. Если нет grep /
;)
Если вы используете оболочку zsh
, вы можете добавить в свой~/.zshrc
:
typeset -UT XDG_DATA_DIRS xdg_data_dirs
Затем скалярная переменная $XDG_DATA_DIRS
будет T
связана с $xdg_data_dirs
, что значительно упрощает управление, а элементы становятся U
уникальными с -U
.
Затем, чтобы удалить не -существующие компоненты, вы можете добавить:
xdg_data_dirs=($^xdg_data_dirs(N-/))
Что удалит компоненты, которые не являются фактическими каталогами (/
, после разрешения символической ссылки(-
))
Чтобы удалить дубликаты и -не существующие каталоги в bash:
#!/usr/bin/env bash
XDG_DATA_DIRS=/usr/share:/usr/share:/usr/local/share
IFS=: read -ra xdg_data_dirs <<< "$XDG_DATA_DIRS"
declare -p xdg_data_dirs
for d in "${xdg_data_dirs[@]}"; do
test -d "$d" || continue
[[ :$result: != *:$d:* ]] || continue
result+="${result+:}$d"
done
XDG_DATA_DIRS=$result
Вы искали в своем домашнем каталоге?
Проверьте /usr/bin/x -менеджер сеанса -и /usr/bin/startxfce4 оба они дублируют /usr/share в XDG _DATA _DIRS.