[Linux-Biella] reindirizzare dpkg

Daniele Segato daniele.bilug a gmail.com
Dom 10 Maggio 2009 13:31:09 CEST


Il giorno sab, 09/05/2009 alle 23.00 +0200, Alessandro Crotti ha
scritto:
> > Se con dpkg -l | grep ciòchecerco trovo una lista di pacchetti e volessi
> > installarli tutti e' possibile utilizzare l'output del comando
> > reindirizzando  tutto in apt??

si giocando con sed/awk


> for i in $(dpkg -l|grep quellochecerco); do sudo apt-get install $i; done

no così non va bene.. installa ogni pacchetto singolarmente!
quel che vuole Lorenzo, immagino, sia installarli tutti assieme
altrimenti ci va una vita!

apt-get install `dpkg -l | grep game | awk '{print $2}' | tr '\n' ' '`

in questo caso ho cercato "game" e ho usato "tr" che veniva più comodo
per sostituire gli "a-capo" con degli spazi..

ti spiego perché mi sento buono

apt-get install `qui dentro ci finisce il risultato (testo) del comando
che lancio... tutto ciò che sta tra queste virgolette rovesciate`

dpkg -l | grep game

questo tira fuori la lista di pacchetti che vuoi

| awk '{ print $2 }'

dalla lista precedente stampa solo la seconda colonna (awk di default
spezza le colonne secondo lo spazio...) che è il nome del pacchetto

| tr '\n' ' '

sostituisci gli "a-capo" con uno spazio

il risultato di quel comando è questo:

$ echo apt-get install `dpkg -l | grep game | awk '{print $2}' | tr '\n'
' '`
apt-get install amphetamine amphetamine-data balazar balazarbrothers
barrage beneath-a-steel-sky blockattack crack-attack einstein enigma
enigma-data enigma-doc fillets-ng flight-of-the-amazon-queen glest
glest-data gnome-breakout gnome-cards-data gnome-games gnome-games-data
gnome-games-extra-data gnome-hearts gnuchess gtkboard gweled gwp
kbackgammon liballegro4.2 libggzmod4 libkdegames1 magicor magicor-data
micropolis monster-masher monsterz nethack-common nethack-gnome
nethack-qt nethack-x11 neverball nexuiz-data pachi pachi-data pathogen
pipewalker planetpenguin-racer planetpenguin-racer-data python-2play
python-pygame python-tofu sauerbraten sauerbraten-data sauerbraten-wake6
scorched3d scorched3d-data sgt-puzzles slune stax torcs torcs-data
torcs-data-cars torcs-data-tracks tremulous vodovod xarchon

se la grep la vuoi solo sul nome del pacchetto ti basta invertire il
comando awk con il comando grep:

$ echo apt-get install `dpkg -l | awk '{print $2}' | grep game | tr '\n'
' '`
apt-get install gnome-games gnome-games-data gnome-games-extra-data
libkdegames1 python-pygame


io gli ho messo "echo" così vedi il comando che verrebbe eseguito :)

man regex
man grep
man sed
man awk
man tr

in più... se devi mettere un comando dentro l'altro puoi fare così:

comando `altro comando $( altro comando ancora )`

enjoy :)



Maggiori informazioni sulla lista Linux