Potrei basarmi su una lista di tutte quelle possibili. Dove potrei reperirle?in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio
[BASH] Riconoscere nome completo da nome corto
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- ulisse89
- Packager
- Messaggi: 643
- Iscritto il: sab 17 gen 2009, 12:53
- Nome Cognome: Riccardo
- Slackware: 13.0
- Kernel: 2.6.29.6
- Desktop: Xfce
- Località: Bologna
Re: [BASH] Riconoscere nome completo da nome corto
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
bohulisse89 ha scritto:Potrei basarmi su una lista di tutte quelle possibili. Dove potrei reperirle?in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio
naturalmente se ti basi sui porting ufficiali di slackware allora sono quelle menzionate prima, più s390 e arm
se poi vuoi che il tuo script funzioni anche in distribuzioni non ufficiali, che ne so tipo slamd64, allora devi vedere ogni distribuzione cosa utilizza
- d4z_c0nf
- Packager
- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: [BASH] Riconoscere nome completo da nome corto
Sì ma siccome sono specifiche per l'architettura, potresti metterle in una variabile.conraid ha scritto:in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio
Nel senso se tu usi una i*86 di sicuro non avrai pacchetti del tipo x86_64 o arm, puoi però avere noarch.
Poi se magari cambi architettura e vuoi portarti con te lo script cambi solo la variabile.
Una variabile del tipo ARCH="i.86|noarch", ad esempio.
Volendo potresti avere una versione che abbia un numero di release maggiore di 9, allora a quel punto aumentando le cifre
[0-9] diventa [0-9]+.
- ulisse89
- Packager
- Messaggi: 643
- Iscritto il: sab 17 gen 2009, 12:53
- Nome Cognome: Riccardo
- Slackware: 13.0
- Kernel: 2.6.29.6
- Desktop: Xfce
- Località: Bologna
Re: [BASH] Riconoscere nome completo da nome corto
Sì, potrei fare una variabile che rappresenta l'architettura.
Per la questione del numero di release che può essere maggiore di 9 ho notato che :
matcha, anche se non dovrebbe.
Infatti la parte "-[0-9].*$" vuol dire che cerca dopo il trattino finale, una sola cifra da 0 a 9 e un set di caratteri di qualsiasi dimensione fino alla fine.
EDIT: Ho capito: al posto del punto che matcha tutti i caratteri comprese le cifre dovrei mettere un [a-z]. Verrebbe:
Giusto?
Per la questione del numero di release che può essere maggiore di 9 ho notato che :
Codice: Seleziona tutto
echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9].*$"
Infatti la parte "-[0-9].*$" vuol dire che cerca dopo il trattino finale, una sola cifra da 0 a 9 e un set di caratteri di qualsiasi dimensione fino alla fine.
EDIT: Ho capito: al posto del punto che matcha tutti i caratteri comprese le cifre dovrei mettere un [a-z]. Verrebbe:
Codice: Seleziona tutto
echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9]+[a-z]*$"
- d4z_c0nf
- Packager
- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: [BASH] Riconoscere nome completo da nome corto
Giusto. Ma se ci pensi anche inutile, perchè in quel caso che ci sia +[a-z]* o solo .*, visto quello che ti serve, è uguale.ulisse89 ha scritto:Sì, potrei fare una variabile che rappresenta l'architettura.
Per la questione del numero di release che può essere maggiore di 9 ho notato che :matcha, anche se non dovrebbe.Codice: Seleziona tutto
echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9].*$"
Infatti la parte "-[0-9].*$" vuol dire che cerca dopo il trattino finale, una sola cifra da 0 a 9 e un set di caratteri di qualsiasi dimensione fino alla fine.
EDIT: Ho capito: al posto del punto che matcha tutti i caratteri comprese le cifre dovrei mettere un [a-z]. Verrebbe:Giusto?Codice: Seleziona tutto
echo "ciao-2-i686-13" | egrep "\-(i.86|noarch|x86_64)-[0-9]+[a-z]*$"
Io prima intendevo, sbagliando perchè funzionava comunque, una maggiore "coerenza" della reg-ex.
- ulisse89
- Packager
- Messaggi: 643
- Iscritto il: sab 17 gen 2009, 12:53
- Nome Cognome: Riccardo
- Slackware: 13.0
- Kernel: 2.6.29.6
- Desktop: Xfce
- Località: Bologna
Re: [BASH] Riconoscere nome completo da nome corto
@d4z_c0nf :
Se metto ".*" allora matcha anche se viene passato il nome corto "qwerty-noarch-sl". Lo so che è surreale che un programma abbia "noarch" come parte del nome, ma è teoricamente possibile.
In questo caso il nome del pacchetto è passato in forma breve (cioè solo il nome del programma), mentre viene riconosciuto come nome completo.
Sempre sotto questo punto di vista anche "\-(i.86|noarch|x86_64)-[0-9]+[a-z]*$" non va bene. Supponendo che un pacchetto si chiami "ntfs-noarch-3g", passa come nome completo.
Se metto ".*" allora matcha anche se viene passato il nome corto "qwerty-noarch-sl". Lo so che è surreale che un programma abbia "noarch" come parte del nome, ma è teoricamente possibile.
In questo caso il nome del pacchetto è passato in forma breve (cioè solo il nome del programma), mentre viene riconosciuto come nome completo.
Sempre sotto questo punto di vista anche "\-(i.86|noarch|x86_64)-[0-9]+[a-z]*$" non va bene. Supponendo che un pacchetto si chiami "ntfs-noarch-3g", passa come nome completo.
- d4z_c0nf
- Packager
- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: [BASH] Riconoscere nome completo da nome corto
No aspè intendevo, da qui:ulisse89 ha scritto:@d4z_c0nf :
Se metto ".*" allora matcha anche se viene passato il nome corto "qwerty-noarch-sl". Lo so che è surreale che un programma abbia "noarch" come parte del nome, ma è teoricamente possibile.
In questo caso il nome del pacchetto è passato in forma breve (cioè solo il nome del programma), mentre viene riconosciuto come nome completo.
"-[0-9]+[a-z]*$"
se metti .* al posto di +[a-z]*
Non matcha quella stringa che hai detto.
Al massimo può matchare qualcosa del tipo qwerty-noarch-1sl, nel caso esistesse.
- ulisse89
- Packager
- Messaggi: 643
- Iscritto il: sab 17 gen 2009, 12:53
- Nome Cognome: Riccardo
- Slackware: 13.0
- Kernel: 2.6.29.6
- Desktop: Xfce
- Località: Bologna
Re: [BASH] Riconoscere nome completo da nome corto
Sì diciamo che ho risolto. Nel caso in cui qualche programmatore sviluppi il software "ntfs-noarch-3g", lo vado a prendere a casa.
Comunque la soluzione trovata va più che bene, grazie a tutti.
Se qualcuno avesse un lampo di genio per qualcosa di più universale e preciso, si faccia avanti.
Comunque la soluzione trovata va più che bene, grazie a tutti.
Se qualcuno avesse un lampo di genio per qualcosa di più universale e preciso, si faccia avanti.
- targzeta
- Iper Master
- Messaggi: 6629
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: [BASH] Riconoscere nome completo da nome corto
Visti gli esempi che riportate, la soluzione proposta nel thread che hai scovato secondo me potrebbe funzionare, con qualche modifica. O ancora non ho capito cosa chiedi?
Emanuele
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
-
- Packager
- Messaggi: 1339
- Iscritto il: sab 27 mar 2004, 0:00
- Slackware: current
- Desktop: fluxbox.git
- Località: Collegno, but made in Friûl
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
Ulisse89, la mia soluzione non ti piace? Isola il solo nome, qualsiasi sia la sua "lunghezza" o il suo "frazionamento", e non fa troppo lo schizzinoso con le arch e le revisioni. Guardandola la correggo in:
Più corretta. In pratica cancella dalla stringa gli ultimi tre campi separati da "-" e costituiti da caratteri che non siano "-". Funziona qualsiasi sia il nome del package. Provare per credere:
Codice: Seleziona tutto
echo nome_package | sed "s/\(-[^-]\{1,\}\)\{3\}$//"
Codice: Seleziona tutto
echo ntfs-3g-extreme-score-number-into-program-name-2009.4.4-i486-1|sed "s/\(-[^-]\{1,\}\)\{3\}$//"
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
@spina
@albatrosla
secondo me lui non cerca quello, nel senso che non cerca di trovare il nome dato il pacchetto
mi spiego
lui non ha
ntfs-3g-extreme-score-number-into-program-name-2009.4.4-i486-1
da cui ricavare
ntfs-3g-extreme-score
lui ha per esempio
ntfs-3g-extreme-score
e vuole sapere se è completo o no
come fareste con questo metodo?
se poi ho capito male io, i'm sorry
@albatrosla
secondo me lui non cerca quello, nel senso che non cerca di trovare il nome dato il pacchetto
mi spiego
lui non ha
ntfs-3g-extreme-score-number-into-program-name-2009.4.4-i486-1
da cui ricavare
ntfs-3g-extreme-score
lui ha per esempio
ntfs-3g-extreme-score
e vuole sapere se è completo o no
come fareste con questo metodo?
se poi ho capito male io, i'm sorry
- targzeta
- Iper Master
- Messaggi: 6629
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: [BASH] Riconoscere nome completo da nome corto
Ecco, albatrosla ha fatto quello che intendevo io. Secondo me è il miglior modo per ottenere quello che si vuole. Ovviamente se sed non modifica la stringa in input allora il nome non è completo .
Questo ad esempio dovrebbe andar bene:
Nota che in questo modo, se PACKAGE si riferisce ad un pacchetto, l'output di sed è proprio il nome del pacchetto, due piccioni con una fava,
Emanuele
Questo ad esempio dovrebbe andar bene:
Codice: Seleziona tutto
[ $PACKAGE = $(echo $PACKAGE | sed "s/\(-[^-]\{1,\}\)\{3\}$//") ] && echo NOMECORTO || echo NOMECOMPLETO
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- d4z_c0nf
- Packager
- Messaggi: 1296
- Iscritto il: mar 14 mar 2006, 18:07
- Nome Cognome: Rocco Aliberti
- Slackware: 14.2-current64
- Kernel: 4.14.73
- Desktop: awesomeWM
- Località: Pinerolo
Re: [BASH] Riconoscere nome completo da nome corto
L'unica cosa che voglio dire è.. ma perchè non usare le extended (opzione "-r" di sed) così da eliminare tutti quegli escape che rendono faticosa l'intepretazione umana dell'espressione?spina ha scritto:Ecco, albatrosla ha fatto quello che intendevo io. Secondo me è il miglior modo per ottenere quello che si vuole. Ovviamente se sed non modifica la stringa in input allora il nome non è completo .
Questo ad esempio dovrebbe andar bene:Nota che in questo modo, se PACKAGE si riferisce ad un pacchetto, l'output di sed è proprio il nome del pacchetto, due piccioni con una fava,Codice: Seleziona tutto
[ $PACKAGE = $(echo $PACKAGE | sed "s/\(-[^-]\{1,\}\)\{3\}$//") ] && echo NOMECORTO || echo NOMECOMPLETO
Emanuele
- ulisse89
- Packager
- Messaggi: 643
- Iscritto il: sab 17 gen 2009, 12:53
- Nome Cognome: Riccardo
- Slackware: 13.0
- Kernel: 2.6.29.6
- Desktop: Xfce
- Località: Bologna
Re: [BASH] Riconoscere nome completo da nome corto
@ spina a albatrosla: la vostra soluzione mi era sfuggita, scusate.
Però l'ho provata e non funziona. Premettendo che quello che mi serve è quello che ha detto conraid, faccio qualche esempio, prendendo come riferimento la:
Con PACKAGE="ntfs-3g-extreme-score-number-into-program-name-2009.4.4-i486-1" --> NOMECOMPLETO (e va bene)
Con PACKAGE="ntfs-3g-extreme-score-number-into-program-name" --> NOMECOMPLETO (e non va bene).
In pratica la vostra soluzione tratta come nome completo ogni nome di pacchetto che ha più di tre "-". Ma un nome di un software può avere anche più di 3 "-".
Per ricavare il nome di un programma dal nome completo del pacchetto, la vostra soluzione è perfetta, infatti me tengo da parte perchè sicuramente mi servirà.
Però l'ho provata e non funziona. Premettendo che quello che mi serve è quello che ha detto conraid, faccio qualche esempio, prendendo come riferimento la:
Codice: Seleziona tutto
[ $PACKAGE = $(echo $PACKAGE | sed "s/\(-[^-]\{1,\}\)\{3\}$//") ] && echo NOMECORTO || echo NOMECOMPLETO
Con PACKAGE="ntfs-3g-extreme-score-number-into-program-name" --> NOMECOMPLETO (e non va bene).
In pratica la vostra soluzione tratta come nome completo ogni nome di pacchetto che ha più di tre "-". Ma un nome di un software può avere anche più di 3 "-".
Per ricavare il nome di un programma dal nome completo del pacchetto, la vostra soluzione è perfetta, infatti me tengo da parte perchè sicuramente mi servirà.
- targzeta
- Iper Master
- Messaggi: 6629
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: [BASH] Riconoscere nome completo da nome corto
Anche tu non hai tutti i torti. Allora devi raffinare lo script inserendoci altre caratteristiche tipiche di un pacchetto slackware. Ecco un esempio:
Emanuele
P.S. Nota che c'è un 'exit', quindi invoca lo script con 'sh nomescript' se non vuoi che l'exit uccida la shell corrente
Codice: Seleziona tutto
#!/bin/bash
# by Spina
#
# $1 = Nome da controllare
_ARCH='..\?86 noarch'
for arch in $_ARCH
do
PGRNAME=$(echo $1 | sed "s/-[^-]*-${arch}[^-]*-[0-9][^-]*$//")
if [ $PGRNAME != $1 ]
then
echo "Nome completo per $PGRNAME"
exit
fi
done
echo "Nome corto"
P.S. Nota che c'è un 'exit', quindi invoca lo script con 'sh nomescript' se non vuoi che l'exit uccida la shell corrente
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama