如何提取单引号之间的文本?

如何提取单引号之间的文本?

我在跑沃尔奇自动循环显示我的壁纸。我有数百张壁纸。我创建了一个显示壁纸标题的小应用程序:

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'

我想删除末尾的撇号。我尝试了 cut --output-delimiter 的各种组合,但似乎无法让它起作用。

如果有人能指出一些只返回文件名的代码,我将不胜感激。

感谢所有人,

苦行僧

答案1

你可以尝试

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

假设您正在使用 BASH。

basename将提取路径中的最后一个名称,该名称是使用 gsettings 命令生成的,放入反引号,以便将其视为命令而不是字符串。第二个参数是要basename省略的终止字符,在本例中为撇号,必须使用反斜杠进行转义,这样它就不会在 shell 上开始引号。

答案2

如果您只想要文件名,请添加:

| sed 's/\'//'

相关内容