Archivi tag: alias

Linux alias

Creare degli alias mediante shell Linux è un’operazione banale e di un’utilità pazzesca. Infatti, essi consentono di ridurre notevolmente il numero di flag da digitare, semplicemente associando il comando originario ad uno molto più semplice da ricordare.

tux1.jpg

Per quanto mi riguarda, dato che spesso e volentieri mi ritrovo dietro proxy e sono costretto ad utilizzare un mio server italiano come bouncer per accedere alle macchine sparse qua e là per il globo, lanciare a mano delle sessioni SSH specificando ogni volta username, porta di destinazione, ecc. risulta essere un’operazione tediosa ed un’insopportabile perdita di tempo. Sono corso, quindi, ai ripari, semplicemente digitando un comando simile al seguente:

nightfly@nightbox:~$ alias ssh_server1='ssh -p <porta su cui è in ascolto il demone SSH> -l <nomeutente> <indirizzo IP del server>'

Per listare tutti gli alias attivi occorre digitare il comando alias:

nightfly@nightbox:~$ alias

il cui output sarà simile al seguente:

alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

Mentre, per rimuovere un alias, basta scrivere:

unalias <nomealias>

Attenzione però, gli alias così definiti valgono solo per la sessione in cui vengono creati. Per fare in modo che siano permanenti è necessario inserirli all’interno del file /home/nomeutente/.bashrc.

Alla prossima.

MySQL: identificare la tabella da cui provengono i dati ricavati mediante una UNION di due SELECT

Qualche giorno fa, mentre scrivevo del codice server-side per un piccolo CRM homemade, ho avuto la necessità di ricavare dei dati mediante la UNION di due SELECT. In particolare, il codice SQL che ho utilizzato è il seguente:

SELECT 'Entrata' AS NomeTabella, O.ID, O.NumeroOperazione, E.Descrizione, E.Tipo, O.Importo, O.DataInserimento, O.DataOperazione FROM entrata AS E, riguarda AS R, operazione AS O WHERE O.ID = R.IDOperazione AND R.IDEntrata = E.ID AND (E.Tipo = 'Cassa' OR E.Tipo = 'Banca') UNION SELECT 'Uscita' AS NomeTabella, O.ID, O.NumeroOperazione, U.Descrizione, U.Tipo, O.Importo, O.DataInserimento, O.DataOperazione FROM uscita AS U, riguarda AS R, operazione AS O WHERE O.ID = R.IDOperazione AND R.IDUscita = U.ID AND (U.Tipo = 'Cassa' OR U.Tipo = 'Banca') ORDER BY DataInserimento
mysql.jpg

Ora, come potete notare le due SELECT vengono applicate su diversi JOIN ed hanno come obiettivo quello di restituire alcuni informazioni importanti, quali il numero dell’operazione finanziaria, la descrizione dell’operazione stessa, il suo importo, ecc. Ovviamente, affinchè i risultati non venissero ripetuti più volte ho utilizzato solo l’operatore UNION (che prevede un DISTINCT implicito) senza la direttiva ALL. Inoltre, per distinguere la tabella di provenienza dei record selezionati, ho creato un ulteriore campo temporaneo, a cui è stato associato l’alias NomeTabella. Così facendo, la struttura della tabella risultante è diventata la seguente:

Nometabella, ID, NumeroOperazione, Descrizione, Tipo, Importo, DataInserimento, DataOperazione

Da quel momento è stato possibile distinguere piuttosto banalmente la tabella di appartenenza dei record visualizzati.

Bye.

NB: affinchè la UNION possa essere applicata è necessario che le due SELECT riguardino lo stesso numero (e tipologie compatibili) di campi.