linux – Apri un nuovo tab in terminal usando command

per aprie un nuovo tab in gnome-terminal usare

 gnome-terminal --tab --tab

per concatenare comandi in gnome-terminal

gnome-terminal -x  sh -c "echo foo; setxkbmap it; echo setxkbmap it ; df "

per tenere aperta la finestra consentendo l’edit, concatena l’esecuzione della shell

gnome-terminal -x  sh -c "echo foo; setxkbmap it; echo setxkbmap it ; df; exec bash "

per tenere aperta solo aperta la finestra

gnome-terminal -x  sh -c "echo foo; setxkbmap it; echo setxkbmap it ; df; read "

usando xterm ( l’emulatore standard di terminale per X )   e cambiando shell analogamente

 xterm -e sh -c "echo foo; setxkbmap it; echo setxkbmap it ; blkid ; read"

 xterm -e sh -c "echo foo; setxkbmap it; echo setxkbmap it ; blkid && exec sh"

per eseguire più comandi in ciascun tab

gnome-terminal --tab -e "htop" --tab -x sh -c "bash -c \"setxkbmap it;echo setxkbmap it;df;exec bash\""
Annunci

197° Anniversario di Fondazione dell’Arma dei Carabinieri a Barco

L’associazione Nazionale dei Carabinieri Sezione di Azzano Decimo
di cui fanno parte i  Comuni di Azzano Decimo, Chions e Pravisdomini

Festeggia il

197° Anniversario della Fondazione dell’Arma

Domenica 05 giugno 2011 alle ore 9.30 a a Barco di Pravisdomini

Quest’anno ricorre il 70 anniversario del sacrificio del nostro concittadino la
Medaglia d’Oro al Valor Militare il Brigadiere Attilio Basso.

Alla Medaglia  d’oro sono intotolati  il comando legione dell’Arma a Udine
e la caserma di Pordenone a Pravisdomini l’ex scuola elementare ora Centro Sociale
di Barco e una delle vie principali della frazione.

Dal libro di Renato Loffredo sulla Battaglia di Cheren:
“Sul Samanna era stata Mandata di rincalza da Cheren una compagnia di carabinieri… Questi erano discesi dagli spalti montani con una furia irrefrenabile”. “Basso, Basso” chiamo qualcuno. Basso aveva un braccio staccato, tenuto nella manicaunita dal gradi di brigadiere. Era ferito anche all’altro braccio e avanzava. Avanti. Viva l’Italia ! urlò lanciadosi alla testa del suo reparto. Di qui non si passs… e stramazzò dopo essersi contorto con due monconi che sprizzavano sangue come macabre fontane. La sua ultima bomba a mano  aveva colpito nel segno: devastò, accecandolo, il volto di chi gli aveva inferto il colpo mortale”.

plpgsql functions nexted cycles FOR LOOP multiple IF THEN

Come utilizzare plpgsql per ritornare set di records
Utilizzo di:  FOR var_record IN query LOOP …. END LOOP  –
IF FOUND AND condition  THEN    statements   END IF  ;

La prima query 1) richiama i records in una struttura ad albero facendo ricorso a strutture nidificate di
FOR var_record IN query LOOP …. END LOOP
La seconda query 2) interroga la prima passando due punti della struttura dell’albero e ritorna tutti records del percorso tra i due .
Utilizza oltre a:   FOR var_record IN query LOOP …. END LOOP ;
anche

1)Strutture nidificate di   FOR  var_record IN   query  LOOP   ….  END LOOP
che richiamano i records in una struttura ad albero.

CREATE OR REPLACE FUNCTION __getcatalog_ID_Q(integer)
  RETURNS SETOF catalog AS
$BODY$
 DECLARE
 _mytupla  record;   
 _mytupla1 record;  -- 1° livello record
 _mytupla2 record;  -- 2° livello record
 _mytupla3 record;  -- 3° livello record
 _mytupla4 record;  -- 4° livello record
 _searchsql text := '' ;
 _myIDC int;  -- memorizza ID temporaneo

BEGIN

-- esploriamo primo livello distinta
FOR _mytupla1 IN (select  * FROM catalog  WHERE "IDCatalog" = $1 )    
LOOP
   RETURN NEXT _mytupla1 ;
   _myIDC = _mytupla1."IDCatalog" ;  

   FOR _mytupla2 IN (select  * FROM catalog  WHERE "IDCatalogFather" = _myIDC )
   LOOP
         RETURN NEXT _mytupla2 ;
         _myIDC = _mytupla2."IDCatalog" ;   

         FOR _mytupla3 IN (select  * FROM catalog  WHERE "IDCatalogFather" = _myIDC )
         LOOP
               RETURN NEXT _mytupla3 ;
              _myIDC = _mytupla3."IDCatalog" ;   

              FOR _mytupla4 IN (select  * FROM catalog  WHERE "IDCatalogFather" = _myIDC )
              LOOP
                  RETURN NEXT _mytupla4 ;
                  _myIDC = _mytupla4."IDCatalog" ;   

              END LOOP;    
         END LOOP;                      
   END LOOP;   
END LOOP;

END ;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER
  COST 100
  ROWS 1000;
ALTER FUNCTION __getcatalog_ID_Q(integer) OWNER TO postgres;

———————————————————————————————————-

2)
Strutture nidificate di
FOR var_record IN query LOOP …. END LOOP
and IF FOUND  AND _mytupla1.”IDCatalog” <> $1 THEN   END IF ;

CREATE OR REPLACE FUNCTION _get_getcatalog_id_qt(integer, integer)
  RETURNS SETOF catalog AS
$BODY$
 DECLARE
 _mytupla record;
 _mytupla1 record;
 _mytupla2 record;
 _mytupla3 record;
 _myIDC int;  
 _myIDC1 int;
BEGIN
select  * INTO _mytupla1
FROM __getcatalog_id_qt($1,$2)  WHERE "IDCatalog" = $2 ;
-- return NEXT _mytupla1;    
IF FOUND AND _mytupla1."IDCatalog" <> $1  THEN  
   -- visualizziamo solo le row del percorso diretto         
   FOR _mytupla1 IN select *
    FROM __getcatalog_id_qt($1,$2)  WHERE "IDCatalog" = $2  
   LOOP
    return next _mytupla1;    
    _myIDC =  _mytupla1."IDCatalogFather" ;

    -- estraiamo secondo livello
    select * INTO _mytupla2
    FROM __getcatalog_id_qt($1,$2)  WHERE "IDCatalog" = _myIDC ;        
    IF FOUND  THEN      
           FOR _mytupla2 IN select *
              FROM __getcatalog_id_qt($1,$2)  WHERE "IDCatalog" = _myIDC
            LOOP  
                return next _mytupla2;    
            _myIDC =  _mytupla2."IDCatalogFather" ;      

            -- estraiamo terzo livello
            SELECT * INTO _mytupla3
            FROM __getcatalog_id_qt($1,$2)  WHERE "IDCatalog" = _myIDC;        
            IF FOUND THEN      
                   FOR _mytupla3 IN select *
                     FROM __getcatalog_id_qt($1,$2)  WHERE "IDCatalog" = _myIDC
                   LOOP  
                       return next _mytupla3;    
                   _myIDC =  _mytupla1."IDCatalogFather" ;                             

                END LOOP ;  
                     END IF ;

        END LOOP ;  
        END IF ;

    END LOOP;
  ELSE
        select  * INTO _mytupla1
        FROM __getcatalog_id_qt($1,$2)  WHERE "IDCatalog" = $2 ;  
    return next _mytupla1;

  END IF;
END ;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER
  COST 100
  ROWS 1000;
ALTER FUNCTION _get_getcatalog_id_qt(integer,integer) OWNER TO postgres;
---------------------------------------------------------------------------

Esempio di chiamata nel generatore di query
di una query che utilizza la query 2) che utilizza la query 1)

 Select * FROM _get_getcatalog_id_qt(300, 412) ;

Risorse:

Plpgsql 

Postgresql 

Creare eliminare database e tabelle