menu em yad com base no ls

1. menu em yad com base no ls

Morpheus
Minions

(usa Nenhuma)

Enviado em 10/08/2023 - 01:03h


Montar um menu usando o yad com base nos nomes das pastas de um diretório.

ls -1 /opt/ | yad --list --title "Menu" \
--text "O que deseja fazer?" \
--column "Opção" \
--width="300" --height="215" \
"" \
"" \
"" \
"" \
"" \
""




  


2. Re: menu em yad com base no ls

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 10/08/2023 - 01:03h

Seu comando está quase certo, mas o yad não está recebendo as saídas do comando ls corretamente. Para criar um menu baseado nos nomes das pastas de um diretório com o yad, você pode usar um subshell para passar a lista de diretórios para o yad. Veja um exemplo de como isto pode ser feito:

# ls -1 /opt/ | yad --list --title="Menu" --text="O que deseja fazer?" --column "Opção" --width="300" --height="215" --button=gtk-ok:0 $(while read; do echo $REPLY; done)

Este comando deve abrir uma janela yad com um menu das pastas no diretório /opt/. O comando ls -1 /opt/ lista todos os diretórios contidos em /opt/, um por linha. A saída deste comando é passada para o yad através do subshell $(while read; do echo $REPLY; done).

Espero que isto ajude! Por favor, sinta-se à vontade para perguntar se você precisar de mais informações ou ajuda


3. Re: menu em yad com base no ls

Morpheus
Minions

(usa Nenhuma)

Enviado em 10/08/2023 - 01:08h


@alexabolada

O comando não funciona com "nome composto" como resolver?

ls -1 /opt/ | yad --list --title="Menu" --text="O que deseja fazer?" --column "Opção" --width="300" --height="215" --button=gtk-ok:0 $(while read; do echo $REPLY; done)


4. Re: menu em yad com base no ls

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 10/08/2023 - 01:09h

Olá! Entendo que você esteja tendo problemas com o comando que mencionou devido aos espaços em nomes de diretórios.

Isso é um problema comum quando se trabalha no terminal Linux, pois o espaço pode ser interpretado como um delimitador entre diferentes comandos ou parâmetros.

Essa questão pode ser resolvida usando aspas duplas ou simples em torno do nome do arquivo/diretório. Por exemplo, você pode reescrever seu comando da seguinte forma:

ls -1 "/opt/" | yad --list --title="Menu" --text="O que deseja fazer?" --column "Opção" --width="300" --height="215" --button=gtk-ok:0 $(while read; do echo "$REPLY"; done)

Note que coloquei aspas duplas em torno do "$REPLY", permitindo que o comando seja executado mesmo que o nome da opção contenha espaços.

Espero que isso ajude! Se você tiver mais perguntas, sinta-se à vontade para perguntar.


5. Re: menu em yad com base no ls

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 10/08/2023 - 01:16h

Olá,

Vamos tentar resolver esse problema.

As aspas duplas são usadas para delimitar strings que contêm espaços, por exemplo, ao lidar com nomes de arquivos. No seu caso, se o nome da pasta com nome composto não funcionou, sugiro que tente trocar as aspas duplas por aspas simples.

Então, o comando será assim:

ls -1 '/opt/' | yad --list --title='Menu' --text='O que deseja fazer?' --column 'Opção' --width='300' --height='215' --button=gtk-ok:0 $(while read; do echo '$REPLY'; done)

Caso ainda continue com problemas, por favor volte a entrar em contato.

Abraços.
Alexa Bolada.


6. Re: menu em yad com base no ls

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 10/08/2023 - 01:34h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



7. Re: menu em yad com base no ls

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 10/08/2023 - 01:34h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



8. Re: menu em yad com base no ls

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 10/08/2023 - 03:13h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



9. Re: menu em yad com base no ls

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 10/08/2023 - 18:11h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please contact us through our help center at help.openai.com.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



10. Re: menu em yad com base no ls

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/08/2023 - 18:11h


Minions escreveu:


@alexabolada

O comando não funciona com "nome composto" como resolver?

ls -1 /opt/ | yad --list --title="Menu" --text="O que deseja fazer?" --column "Opção" --width="300" --height="215" --button=gtk-ok:0 $(while read; do echo $REPLY; done)

Para resolver o "problema" de "nome composto",
Use o fd (descritor de arquivos).
Exemplos:
ls -1 Com*
'Com espaço00.txt'
'Com espaço01.txt'
'Com espaço02.txt'
Erro
for arq in $(ls -1 Com*);do echo "$arq";done
Com
espaço00.txt
Com
espaço01.txt
Com
espaço02.txt
Solução:
exec 3< <(ls -1 Com*);while read line <&3; do echo $line;done;exec 3<&-
Com espaço00.txt
Com espaço01.txt
Com espaço02.txt

Outro:
exec 3< <(ls -1 Com*);cat <&3;exec 3<&-
Com espaço00.txt
Com espaço01.txt
Com espaço02.txt

Uma outra opção...
Altere o IFS;
orgifs="$IFS";IFS='';for arq in $(ls -1 Com*);do echo ${arq};done;IFS="$orgifs"
Com espaço00.txt
Com espaço01.txt
Com espaço02.txt

#FICA_A_DICA
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



11. Re: menu em yad com base no ls

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/08/2023 - 19:48h


Minions escreveu:

msoliver escreveu:

Uma outra opção...
Altere o IFS;
orgifs="$IFS";IFS='';for arq in $(ls -1 *);do echo ${arq};done;IFS="$orgifs"
Com espaço00.txt
Com espaço01.txt
Com espaço02.txt





$ orgifs="$IFS";IFS='';for arq in $(ls -1 *);do echo ${arq} > /tmp/teste.log ;done;IFS="$orgifs"

$ cat /tmp/teste.log

linux:
1664547235740.jpg
266264640.pdf
42094320.pdf
42108704.pdf
42115616.pdf
42123040.pdf
42123368.pdf
42126552.sx
46332896.pdf
46335504.png
46337056.png
46346288.sx
46381944.sx
46389752.pdf

Solução:
kernel 5.18.19_1 com erro
kernel 5.19.17_1 com erro
kernel 6.0.19_1 com erro


No arquivo /tmp/teste.log saiu as sub pastas da pasta principal do diretório.

Tem como pega somente as pastas do diretório e não lista o conteúdo dentro dela?



Minions,
para listar somente diretórios, faça:
#Lista dirs de /etc
ls -1d /etc/*/


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



12. Re: menu em yad com base no ls

Morpheus
Minions

(usa Nenhuma)

Enviado em 11/08/2023 - 22:53h

msoliver escreveu:

para listar somente diretórios, faça:
#Lista dirs de /etc
ls -1d /etc/*/



Para remove o “/” no final será que o comando cut é a melhor opção para consumo de recursos no sistema?

Ex: Pode ter pasta com infinitos diretórios assim vai demorar o processo.


cd pasta/


ls -d1 */ | cut -d/ -f1 > /tmp/vol.txt




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts