Errore: Argument list too long

Può capitare utilizzando comandi come cp, mv, rm di ricevere il seguente messaggio di errore:

/bin/cp: Argument list too long.

Anzichè complicarci la vita, andando a modificare le impostazioni del sistema, possiamo utilizzare il find.

Per esempio se abbiamo un grande numero di file tempranei in una cartella, tutti con estensione ‘.dieg’, li possiamo cancellare (o spostare o copiare o quello che vogliamo) in questo modo:

find ./ -name '*.dieg' -exec rm -r -v {} \;

Maggiori informazioni digitando

comandi utili da terminale

  • elenca tutti i file aperti sul sistema
    lsof
    esempio: lsof | grep access.log

  • crea un link simbolico a [target] chiamato [lnkname]
    ln -s [target] [lnkname]

  • copia via ssh da riga di comando
    scp -r user@server_name:/home/user/* /home/localuser/

  • user e password

    AGGIUNTA (come root)
    useradd [-d home_dir] [-G group[,...]] [-s shell] loginname
    MODIFICA PW
    passwd loginname

Uso del TAR (NON è il tribunale amministrativo regionale!)

Esempi tipici di utilizzo del tar:

comprimere (z=filter with gzip)
tar zcvf /path/pippo.tar.gz /path2/*_200603??.log
Come si vede sono ammessi i caratteri jolly. Attenzione a non invertire gli argomenti! Altrimenti il primo file dell’elenco dei file che si vogliono archiviare viene inesorabilmente PERSO.

testare il contenuto del file
tar ztf /path/pippo.tar.gz

scompattare
tar zxvf /path/pippo.tar.gz [FILTRO]
NB: il secondo argomento (opzionale) non è la destinazione dei file decompressi, ma il pattern dei file all’interno del tarball da estrarre. La dir di destinazione è sempre “./”.

Bash, condizioni: elenco dei parametri

Ecco un esempio per interrompere un batch in mancanza del primo argomento:

#!/bin/bash
if [ -z "$1" ]; then
echo usage: $0 directory
exit
fi

Più in generale i test possibili in un file batch sono (perdonatemi l’inglese, ma la trduzione sarebbe un po’ infelice…):

-a file -> True if file exists
-b file -> True if file exists and is a block special file
-c file -> True if file exists and is a character special file
-d file -> True if file exists and is a directory
-e file -> True if file exists

Gestione utenti e DB MySql senza nessun tool

Per gestire un DB MySQL da terminale senza nessuno strumento (phpMyAdmin, MySQL fron ecc. ecc.), è necessario procedere come segue:

mysql -u root -p

viene richiesta la password, nel nostro esempio quella di ‘root’ e si entra nella console di mysql.

Da qui è possibile lanciare comandi e query mysql direttamente.
Vediamo alcuni esempi (ricordiamo che la digitazione del comando può essere interrotta andando a capo, per cui al temine è necessario sempre digitare il ‘;’ per lanciarne l’esecuzione).

Aggiungere un nuovo DB e dare all’utente ‘diego’ con password ‘ciccio’ tutti i permessi su quel particolare DB

Linux configurazione rete

Per la configurazione temporanea (viene persa al reboot) si possono lanciare i seguenti comandi:

(esempio per indirizzo statico sulla scheda ‘eth0’)
ifconfig eth0 10.0.0.13
ifconfig eth0 netmask 255.255.0.0
route add default gw 10.0.0.254

Per rendepre permanente la modifica invece è necessario modificare il file /etc/network/interfaces.

Prendendo ad esempio i parametri precedenti il file diventa

PHP command line interface

Per poter lanciare script php da terminale è necessario che ci sia installato il PHP CLI.
Su sistemi debian/ubuntu il pacchetto attuale si chiama php4-cli, per cui prima verifichiamo che sia installato.

php -v

Se installato viene visualizzata la versione di PHP installata, in caso contrario generea un errore.

Per installarlo:

apt-get install php4-cli