как извлечь текст между одинарными кавычками?

Я запускаю wallch для автоматического переключения между моими обоями. У меня их сотни. Я создал небольшое приложение, которое отображает заголовок обоев:

export DISPLAY=:0 && /usr/bin/zenity --info --text="$(gsettings get org.gnome.desktop.background picture-uri | cut -c 41-)"

Без разреза вывод:

'file:///home/frank/Pictures/Wallpapers/Sitka_Harbor.jpg'

с разрезом, я получаю имя файла:

Sitka_Harbor.jpg'

Я хочу избавиться от конечного апострофа. Я пробовал различные комбинации среза --output-delimiter, но не могу заставить его работать.

Я был бы признателен, если бы кто-нибудь указал мне какой-нибудь код, который бы возвращал только имя файла.

Благодарю всех,

Садху

0
задан 12 February 2014 в 22:58

2 ответа

Вы можете попробовать

basename `gsettings get org.gnome.desktop.background picture-uri` \'

, если вы используете BASH.

basename извлечет фамилию в пути, которая генерируется с помощью вашей команды для gsettings, вставляет обратные галочки, чтобы она воспринималась как команда, а не строка. Второй аргумент в basename - это завершающие символы, которые вы хотите опустить, в данном случае это апостроф, который должен быть экранирован с помощью обратной косой черты, чтобы он не начинал кавычку на оболочке.

0
ответ дан 12 February 2014 в 22:58
  • 1
    Спасибо! Эта стоимость я так много времени. Я записал с dconf, и сразу считайте его снова с dconf как корень. И задался вопросом, почему это не сохраняется по перезагрузкам, но работает безупречно с моим пользователем. – DBX12 12 July 2018 в 14:18

Если вам просто нужно имя файла, добавьте:

| sed 's/\'//'
0
ответ дан 12 February 2014 в 22:58

Другие вопросы по тегам:

Похожие вопросы: