[Risolto][bash][apt-get] globbing | regex

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2889
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

[Risolto][bash][apt-get] globbing | regex

Messaggio da rai »

Mi sono accorto in questo output di due cose che non mi spiego

Codice: Seleziona tutto

sudo apt-get -s purge "linux-headers-3.2.0-7*"
[...]
Nota, viene selezionato "linux-headers-3.2.0-70-generic" per l'espressione regolare "linux-headers-3.2.0-7*"
Nota, viene selezionato "linux-headers-3.2.0-65-generic" per l'espressione regolare "linux-headers-3.2.0-7*"
[...]
I seguenti pacchetti saranno RIMOSSI:
  linux-generic-pae* linux-headers-3.2.0-77* linux-headers-3.2.0-77-generic-pae* linux-headers-3.2.0-79* linux-headers-3.2.0-79-generic-pae*
  linux-headers-3.2.0-80* linux-headers-3.2.0-80-generic-pae* linux-headers-3.2.0-82* linux-headers-3.2.0-82-generic-pae*
  linux-headers-3.2.0-83* linux-headers-3.2.0-83-generic-pae* linux-headers-3.2.0-84* linux-headers-3.2.0-84-generic-pae*
  linux-headers-generic-pae*
"linux-headers-3.2.0-7*" ( che per bash non è un'espressione regolare ma globbing) è trattata da apt-get come regex per identificare i pacchetti.
Ma questo senza che io lo trovi documentato nel man. Mi sembra un comportamento pericoloso al limite del bug: in questo caso io avrei eliminato tranquillamente anche il kernel corrente mentre mi aspettavo di eliminare solo i kernel .*77.* e .*79.*
Si consideri che il preavviso Nota, viene selezionato "bla bla bla" per l'espressione regolare "bla bla bla*" diventa inutile quando, come in questo caso, l'output è talmente lungo da eccedere lo scrollback default del terminale

seconda cosa che non mi è chiara: come mai la stringa viene interpretata come regex benché sia tra apici?
Grazie fin da ora per correzioni e chiarimenti.
Ultima modifica di rai il sabato 30 maggio 2015, 8:56, modificato 1 volta in totale.
Avatar utente
cortinico
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 477
Iscrizione: venerdì 15 maggio 2015, 16:49
Desktop: Unity
Distribuzione: Ubuntu 15.04 amd64
Sesso: Maschile
Località: Pisa
Contatti:

Re: [bash][apt-get] globbing | regex

Messaggio da cortinico »

Ciao,

In realtà è presente dentro la pagina di manuale
Se nessun pacchetto corrisponde all'espressione specificata e questa contiene uno tra «.», «?» o «*», allora viene considerata come un'espressione regolare POSIX e viene confrontata con tutti i nomi di pacchetto nel database. Ogni corrispondenza viene quindi installata (o rimossa). Notare che la corrispondenza avviene con sottostringhe, perciò «bass.*» trova corrispondenza con «quanto-bass» e «bassissimo». Se ciò non è quello che si desidera, ancorare l'espressione regolare con un carattere «^» o «$», oppure creare un'espressione regolare più specifica.
Per rispondere alla tua domanda:
"linux-headers-3.2.0-7*" ( che per bash non è un'espressione regolare ma globbing)
Purtroppo non è così, anzi. Mettendo le virgolette te impedisci a bash di effettuare il globbing. Prova a fare qualche prova con ls nella tua home per convincerti. Così facendo la stringa viene passata direttamente ad apt-get che la interpreta come espressione regolare e ti da i risultati del caso.

Il "problema" che fai presente tu comunque è già stato segnalato da altri: http://askubuntu.com/questions/210976/a ... pected-why
Questa pagina dovrebbe chiartiti tutti i dubbi :birra:
"Look wide, and even when you think you are looking wide – look wider still!"
http://ncorti.com
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [bash][apt-get] globbing | regex

Messaggio da crap0101 »

cortinico [url=http://forum.ubuntu-it.org/viewtopic.php?p=4763559#p4763559][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Per rispondere alla tua domanda:
"linux-headers-3.2.0-7*" ( che per bash non è un'espressione regolare ma globbing)
Purtroppo non è così, anzi. Mettendo le virgolette te impedisci a bash di effettuare il globbing.
Che tra l'altro è un'ottima idea.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2889
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: [bash][apt-get] globbing | regex

Messaggio da rai »

Grazie per le risposte risolutive
In realtà è presente dentro la pagina di manuale
Il motivo di questa figuraccia è che ho fatto più ricerche dentro il manuale con /expression o con /regular ma non trovavo niente perchè ero col cursore oltre l'ultima occorrenza della espressione cercata :muro:
Ma questa è un' altra questione, eventualmente aprirò un'altra discussione
:ciao:
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Risolto][bash][apt-get] globbing | regex

Messaggio da crap0101 »

un colpo di 'N' per essere sicuri :-)
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2889
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: [Risolto][bash][apt-get] globbing | regex

Messaggio da rai »

Sì è vero, bisognerebbe ricordarselo. Ma non è autoevidente (e nemmeno tanto logico) che nei manuali la ricerca venga fatta in modo asimmetrico:
:·: in avanti fino alla fine del manuale
:·: indietro solo nella parte visualizzata in quel momento

può esserci un motivo per non implementare una ricerca ogni volta nell'intero testo del man? per capirci quello che fanno gedit o leafpad o firefox
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto][bash][apt-get] globbing | regex

Messaggio da UbuNuovo »

le opzioni di ricerca non mancano:

Codice: Seleziona tutto

                         SEARCHING

  /pattern          *  Search forward for (N-th) matching line.
  ?pattern          *  Search backward for (N-th) matching line.
  n                 *  Repeat previous search (for N-th occurrence).
  N                 *  Repeat previous search in reverse direction.
  ESC-n             *  Repeat previous search, spanning files.
  ESC-N             *  Repeat previous search, reverse dir. & spanning files.
  ESC-u                Undo (toggle) search highlighting.
  &pattern          *  Display only matching lines
        ---------------------------------------------------
        A search pattern may be preceded by one or more of:
        ^N or !  Search for NON-matching lines.
        ^E or *  Search multiple files (pass thru END OF FILE).
        ^F or @  Start search at FIRST file (for /) or last file (for ?).
        ^K       Highlight matches, but don't move (KEEP position).
        ^R       Don't use REGULAR EXPRESSIONS.
 ---------------------------------------------------------------------------
Salva l'Ucraina! 🇺🇦
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti