Mirando el código fuente , no parece que haya ninguna forma de hacer esto. Zathura simplemente reemplaza $FILE
y %
con la ruta del archivo antes de ejecutar el comando.
Así que tendrá que usar una solución alternativa de todos modos. Tal vez algo como:
exec sh -c 'xdg-open $(dirname $FILE)'
O:
exec xterm -e 'ranger $(dirname $FILE)'
Realmente se necesitan más citas aquí, pero no sé qué tan bueno es el analizador de Zathura para manejar las comillas.
Ваш вопрос неоднозначен. если ваше определение элемента только для домена, как вы упомянули, чтобы найти их, вы можете использовать:
grep -P "^.[^.]+\.[a-zA-Z]{3}$|^.[^.]+\.[a-zA-Z]{2}\.[a-zA-Z]{2}$" FileName
grep -P
используйте регулярное выражение Perl ^.[^.]+
начинаться с каждого символа, кроме и не содержать .
, как было бы \.[a-zA-Z]{3}$
встречается .
следует с 3 символами в конце |
ИЛИ^.[^.]+
как выше \.[a-zA-Z]{2}
встречается 2 символа два раза поперек в конце Учитывая то, как регистраторы распределяют TLD и FLD, это -нетривиальная проблема, которую, я думаю, вы не сможете решить с помощью простых регулярных выражений и инструментов CLI.
Я бы опирался на что-то вроде этого модуля Python,tld
. Этот модуль имеет функции get_tld
и get_fld
. Второй будет печатать домены первого уровня, что вам и нужно.
$ cat fld.py
#!/bin/python
from tld import get_fld
fldList = []
domList = open("domlist.txt").read().splitlines()
for dom in domList:
fldList.append(get_fld(dom, fix_protocol=True))
print("\n".join(sorted(set(fldList))))
Пробный запуск:
$./gtld.py
domain.co.uk
domain.com
ПРИМЕЧАНИЕ.:Список доменов находится в файле с именем domlist.txt
.