como extrair o texto entre aspas simples?

0

Estou a executar wallch para percorrer automaticamente os meus papéis de parede. Eu tenho centenas deles. Eu criei um pequeno aplicativo que exibe o título de um papel de parede:

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

Sem o corte, a saída é:

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

com o recorte, recebo o nome do arquivo:

Sitka_Harbor.jpg'

Eu quero me livrar do apóstrofo final. Eu tentei várias combinações do cut --output-delimiter, mas parece que não consigo fazê-lo funcionar.

Eu ficaria grato se alguém pudesse me indicar algum código que retornaria apenas o nome do arquivo.

Agradecendo a todos,

sadhu

    
por Bhante-S 12.02.2014 / 04:32

2 respostas

1

Você poderia tentar

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

assumindo que você está usando BASH.

basename extrairá o último nome no caminho, que é gerado usando seu comando para gsettings, colocando em backticks para que seja visto como um comando e não como uma string. O segundo argumento para basename são os caracteres de terminação que você deseja omitir, neste caso, o apóstrofo, que deve ser escapado usando uma barra invertida para que ele não inicie uma citação no shell.

    
por Travis G. 12.02.2014 / 05:17
0

Se você quiser apenas o nome do arquivo, adicione:

| sed 's/\'//'
    
por John Oliver 12.02.2014 / 05:23