Manjaro Linux - Forum Italiano

Script: funzione instr, mids e right

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Script: funzione instr, mids e right
« il: Dicembre 29, 2019, 06:23:03 pm »
Salve a tutti.
Questo è il mio post sul forum.
Sono un nuovo di linux (provengo da anni e anni di windows).

Mi sto accingendo a scrivere uno script per automatizzare delle attività routinarie.

la domanda che vi pongo è questa:
è possibile fare un scan di una stringa passata come parametro partendo dall'ultimo carattere ed andando a ritroso e appena trovato un carattere specifico estrarre la srtinga ?

Esempio:
parametro ($1) = /home/UTENTE/dvdtemp/dvd/filmtemp.mpg

dovrei estrarre la stringa "filmtemp.mp4"

quindi dovrei fare un for da len($1) a 0 step -1 e appena trovo "/" fare un right o un mid e memorizzare il valore in una variabile che dovrò utilizzare in seguito.

Non so se questo è fattibile.
Se non lo fosse, è possibile scrivere un programma (python java) che lanci comandi console di linux ? Se si sapreste indicarmi quello più idoneo (dovrei impararli entrambi e mi servirebbe come esercizio) ?

Grazie





« Ultima modifica: Dicembre 29, 2019, 06:26:40 pm da karug64 »
Manjaro 18.1.4 64bit
Asus ZenBook in dualboot con win10

Cubanpit

  • *****
  • 3033
Re:Script: funzione instr, mids e right
« Risposta #1 il: Dicembre 29, 2019, 09:41:39 pm »
Puoi semplicemente eliminare tutto ciò che è compreso tra l'inizio della riga e l'ultima barra, per esempio utilizzando sed.
Esempio pratico:
Codice: [Seleziona]
echo /home/UTENTE/dvdtemp/dvd/filmtemp.mp4 | sed 's@^.*/@@'

Re:Script: funzione instr, mids e right
« Risposta #2 il: Dicembre 29, 2019, 10:54:12 pm »
Perfetto !! Grazie

Volendo assegnare il risultato ad una variabile, se scrivo così (copiando da un altro esempio su internet)

Codice: [Seleziona]
mp4=`echo $1 | sed 's@^.*/@@'`
funziona, se scrivo io l'espressione mettendola tra apici '......'

Codice: [Seleziona]
mp4='echo $1 | sed 's@^.*/@@''
(ovvero simbolo presente sotto il punto interrogativo non va .....

Grazie
« Ultima modifica: Dicembre 29, 2019, 11:14:28 pm da karug64 »
Manjaro 18.1.4 64bit
Asus ZenBook in dualboot con win10

andy2

  • *****
  • 993
Re:Script: funzione instr, mids e right
« Risposta #3 il: Dicembre 30, 2019, 09:57:08 am »
Citazione
funziona, se scrivo io l'espressione mettendola tra apici '......'
Per inserire il risultato di un comando in una variabile devi usare l'altro apice ` oppure $() (e mettere il comando nelle parentesi)

Però, se devi estrarre solo il nome del file da un percorso completo, c'è l'apposita funzione basename.
Codice: [Seleziona]
nomefile=$(basename $1)

Cubanpit

  • *****
  • 3033
Re:Script: funzione instr, mids e right
« Risposta #4 il: Dicembre 30, 2019, 06:05:26 pm »
Citazione
Però, se devi estrarre solo il nome del file da un percorso completo, c'è l'apposita funzione basename.
Uh, non sapevo dell'esistenza di questo programmino, molto comodo!

Re:Script: funzione instr, mids e right
« Risposta #5 il: Dicembre 30, 2019, 08:02:29 pm »
Per inserire il risultato di un comando in una variabile devi usare l'altro apice `
Scusami, ma potresti indicarmi come devo scrivere sulla tastiera l'altro apice....

Però, se devi estrarre solo il nome del file da un percorso completo, c'è l'apposita funzione basename.

Grazie per la soluzione.

Sarei interessato anche (come avevo inserito nel primo post):
Ma tramite programmi a GUI (python o java) come si eseguono dei comandi di console

Per esempio, nello script scrivo:
Codice: [Seleziona]
mkisofs -dvd-video -o /home/UTENTE/dvdtemp/dvd.iso /home/UTENTE/dvdtemp/dvd/
ma se volessi abbinare lo stesso comando ad un bottone su una form come si fa ? E' possibile o si devono percorrere altre strade ?

Grazie
« Ultima modifica: Dicembre 30, 2019, 11:02:24 pm da andy2 »
Manjaro 18.1.4 64bit
Asus ZenBook in dualboot con win10

andy2

  • *****
  • 993
Re:Script: funzione instr, mids e right
« Risposta #6 il: Dicembre 30, 2019, 11:29:27 pm »
Citazione
Scusami, ma potresti indicarmi come devo scrivere sulla tastiera l'altro apice...
Premi Alt-Gr + ' (l'apice normale), oppure usi un programma che ti fa inserire questi caratteri particolari oppure usi il tasto compose (leggi una guida che non è proprio immediato capire come funziona e come attivarlo).

Citazione
Sarei interessato anche (come avevo inserito nel primo post):
Ma tramite programmi a GUI (python o java) come si eseguono dei comandi di console
...
ma se volessi abbinare lo stesso comando ad un bottone su una form come si fa ? E' possibile o si devono percorrere altre strade ?
Ogni linguaggio di programmazione ha le sue funzioni per eseguire comandi esterni, devi leggere nel manuale relativo al linguaggio che vuoi usare (es. in python c'è il modulo subprocess).
Mentre, per inserire un pulsante su un form, anche lì, devi studiarti il linguaggio e in più come usare le librerie di interfaccia (es. GTK o QT) - è vero che ci sono tool visuali che ti fanno creare l'interfaccia, ma poi comunque devi collegarla a delle azioni, e quindi devi conoscere il linguaggio.
Però, se devi semplicemente fare un form col pulsante per usarlo negli script, ti può essere d'aiuto qualche programma tipo zenity, xdialog, yad o simili.
« Ultima modifica: Dicembre 30, 2019, 11:32:25 pm da andy2 »

Re:Script: funzione instr, mids e right
« Risposta #7 il: Dicembre 30, 2019, 11:48:54 pm »
Ok. Grazie.
Ci darò un'occhiata....

Vengo da anni di windows e di programmazione (amatoriale) prima in vb e poi in vb.net.
Sull'utilizzo di ide visuali, quindi, sono abbastanza ferrato.
Nel mondo Linux, purtroppo, proprio il vb non esiste (anche se ci sono alternative tipo Xojo o gambas, che però non sono a quel livello...), e quindi volendo fare qualcosina dovrò imparare un nuovo linguaggio....
Vedrò di capire se sarà più semplice python o java (perché gli altri mi sanno di più complicato C++).
E il modo migliore per imparare è proprio cercare di iniziare a fare qualche cosina semplice per poi migliorarla....

Grazie dei consigli.
Alla prossima
Manjaro 18.1.4 64bit
Asus ZenBook in dualboot con win10

andy2

  • *****
  • 993
Re:Script: funzione instr, mids e right
« Risposta #8 il: Dicembre 31, 2019, 09:32:40 am »
Se hai usato Visual Basic, prova Lazarus, è quasi uguale (più potente in realtà), usa il pascal invece del basic, ma la facilità di creare applicativi molto velocemente è la stessa. Tra l'altro il pascal in passato era usato didatticamente nelle scuole, quindi discretamente semplice da imparare (ma è un linguaggio compilato).
Altrimenti prova il Python, che è molto diffuso di questi tempi e c'è una vasta comunità; non ci sono ide visuali così immediati come quelli di VB/Lazarus, ma c'è comunque qualcosa di simile.

Re:Script: funzione instr, mids e right
« Risposta #9 il: Dicembre 31, 2019, 10:01:04 am »
Se hai usato Visual Basic, prova Lazarus, è quasi uguale (più potente in realtà), usa il pascal invece del basic, ma la facilità di creare applicativi molto velocemente è la stessa. Tra l'altro il pascal in passato era usato didatticamente nelle scuole, quindi discretamente semplice da imparare (ma è un linguaggio compilato).

Avevo fatto qualcosa tanti anni fa in delphi, magari mi ricimento....

Altrimenti prova il Python..... non ci sono ide visuali così immediati come quelli di VB/Lazarus, ma c'è comunque qualcosa di simile.

L'idea di impegnarmi in un nuovo linguaggio mi stuzzica..... Potresti dirmi cosa va installato per programmare in python e cosa per avere un ide grafico?
Grazie
« Ultima modifica: Dicembre 31, 2019, 10:13:57 am da andy2 »
Manjaro 18.1.4 64bit
Asus ZenBook in dualboot con win10

andy2

  • *****
  • 993
Re:Script: funzione instr, mids e right
« Risposta #10 il: Dicembre 31, 2019, 10:37:29 am »
Citazione
Potresti dirmi cosa va installato per programmare in python e cosa per avere un ide grafico?
Puoi partire da questa lista, ci sono anche IDE con integrato il designer di interfacce, ma credo non siano aggiornate da un po'. Per questo devi usare un designer a parte tipo Glade/WxGlade, QtDesigner o altri a seconda delle "librerie" grafiche che vuoi usare per creare l'interfaccia.
« Ultima modifica: Dicembre 31, 2019, 10:44:32 am da andy2 »

Re:Script: funzione instr, mids e right
« Risposta #11 il: Dicembre 31, 2019, 10:51:20 am »
Citazione
Potresti dirmi cosa va installato per programmare in python e cosa per avere un ide grafico?
Per questo devi usare un designer a parte tipo Glade/WxGlade, QtDesigner o altri a seconda delle "librerie" grafiche che vuoi usare per creare l'interfaccia.

Puoi spiegarmi un attimo?
Si utilizza Glade ecc che crea la parte grafica....
Ma poi il codice, per esempio, che sta dietro un bottone che scatena un evento come lo prevedo dal codice python esterno?......
Ci studio e vedo un po'.....
Grazie,...... Per il momento

Manjaro 18.1.4 64bit
Asus ZenBook in dualboot con win10

andy2

  • *****
  • 993
Re:Script: funzione instr, mids e right
« Risposta #12 il: Dicembre 31, 2019, 11:29:24 am »
Citazione
Puoi spiegarmi un attimo?
Si utilizza Glade ecc che crea la parte grafica....
Ma poi il codice, per esempio, che sta dietro un bottone che scatena un evento come lo prevedo dal codice python esterno?......
Dai un'occhiata a questo breve tutorial; in pratica crei l'interfaccia in glade, esporti il file con le definizioni dei vari controlli e lo carichi dentro il tuo programma con l'apposita istruzione, dopodiché, sempre nel programma, scrivi i vari metodi per interagire (es. la procedura che avviene quando clicchi un certo pulsante ecc.).
Non è proprio immediato come in vb/delphi dove vicino al controllo hai la lista di funzionalità (tipo la "onclick") e scrivi il codice direttamente lì dentro.
Come ti dicevo, ci sono ide simili, però non ho visto (ma magari cerca meglio) se c'è qualcosa di aggiornato. Certo, puoi sempre utilizzarle e vedere se riesci a creare programmi funzionanti, personalmente al python ci ho dato solo un'occhiata molto veloce :)

Re:Script: funzione instr, mids e right
« Risposta #13 il: Dicembre 31, 2019, 11:37:11 am »
Ok. Grazie
Manjaro 18.1.4 64bit
Asus ZenBook in dualboot con win10