pwd: directory in cui ci si trova
ls: contenuto di una directory
  1. -a elenca anche i file nascosti
  2. -l elenco dettagliato di file e sotto directory con i loro attributi
  3. -R elenca ricorsivamente i file nella directory indicata e in tutte le sottodirectory
  4. -s mostra la dimensione dei file
  5. -S ordina i file per dimensione partendo dal più grande
  6. -u ordina i file per data e ora di accesso partendo dal più recente
  7. -X ordina i file per estensione e ordine alfabetico
cd: spostarsi all'interno delle directory mkdir: creare directory cp: copia files o directory
  1. -r permette di attivare la modalità ricorsiva, consentendo la copia di directory (cp -r /prova /prova_copia Copia la cartella /prova, e tutto il suo contenuto, nella cartella/prova_copia)
mv: spostare, o rinominare, file e directory rm e rmdir: cancellare file o directory
  1. -r abilita la modalità ricorsiva usata per la cancellazione delle directory (rm -rf prova/ Cancella la directory prova/ e tutto il suo contenuto)
du: visualizza lo spazio occupato sul disco da file o directory (du [opzioni] [file...])
  1. -a visualizza le informazioni sia sui file che sulle directory
  2. -s visualizza la dimensione totale complessiva
  3. -x esclude le sottodirectory che siano parte di un'altro filesystem
df: spazio rimasto sulle partizioni e sui dischi del proprio sistema (df [opzioni] [file...])
  1. -a include nell’elenco anche i filesystem con una dimensione di 0 blocchi, che sono di natura omessi. Normalmente questi filesystem sono pseudo-filesystem con scopi particolari, come le voci per l’automounter. Filesystem di tipo «ignora» o «auto», supportati da alcuni sistemi operativi, sono inclusi solo se quest’opzione è specificata
  2. -h Aggiunge a ciascuna dimensione un suffisso, come M per megabyte, G per gigabyte, ecc
  3. -H Ha lo stesso effetto di -h, ma usa le unità ufficiali SI (con potenze di 1000 piuttosto che di 1024, per cui M sta per 1000000 invece di 1048576)
  4. -t tipofs Limita l’elenco a filesystem del tipo specificato
  5. -x tipofs Limita l’elenco a filesystem non del tipo specificato
  6. INVECE: sudo fdisk -l (vede anche le partizioni di un disco)
mount: visualizzare/installa i dispositivi
  •  mount (Visualizza tutti i dispositivi a cui si ha accesso)
  •  sudo fdisk -l (Visualizza tutti i dispositivi, storage, installabili)
  •  sudo mkdir /media/external (per creare la cartella in cui montare l'hard disk)
  •  sudo mount -t ntfs-3g|vfat /dev/sdb1 /media/external (se il supporto è NTFS o FAT)
  •  sudo umount /dev/sdb1 | sudo umount /media/external
  •  usbmount (utility per il montaggio)
  •  https://help.ubuntu.com/community/Mount/USB

umount: serve per smontare un dispositivo
  $ umount /media/cdrom (Smonta il dispositivo CD-ROM)
  •  i cd, di solito sono nella posizione /dev/sr0 e per essere letti, vanno montati
  $ sudo mkdir /media/cdrom
  $ mount /dev/sr0 /media/cdrom/

date: permette di leggere e settere la data e l'orario
  •  si segue il formato MMDDhhmm
 $ sudo date 01142300

  free: Il comando free mostra informazioni sulla memoria di sistema (free [opzioni])
  •  -b mostra la quantità di memoria in byte
  •  -k mostra la quantità di memoria in Kbyte (impostato di default)
  •  -t mostra una riga contente i totali

top: visualizza informazioni riguardanti il proprio sistema (Per uscire premere il tasto «q»)

uname: mostra informazioni sul sistema
  •  -a Visualizzerà tutte le informazioni del sistema
  •  -m Mostra il tipo di macchina
  •  -n Mostra il nome host del nodo di rete della macchina
  •  -s Mostra il nome del sistema operativo
  •  -r Mostra la release del sistema operativo

useradd: consente di aggiungere nuovi utenti al sistema (sudo useradd nuovoutente)
  $ groupadd dba
  $ useradd -g dba -d /home/oracle -b /home/oracle -m oracle -p qwe -s /bin/bash -c 'Oracle user' (se la directory già esiste, togli il parametro m)
  $ passwd oracle
  
chmod: cambia i diritti di file e cartelle 
  $ sudo chmod -R 777 /percorso_cartella

chown: cambia proprietario e gruppo di file e cartelle 
  $ sudo chown group:user /percorso_cartella

passwd: cambiare o impostare la propria password o la password di un utente (sudo passwd nuovoutente)

cat e less: servono per mostrare il contenuto di un file
  •  Con less è possibile eseguire delle ricerche nel testo digitando / seguito dalla parola da cercare e premendo Invio.
  •  Per terminare il programma premere il tasto q.

ln: serve a creare un collegamento (link) ad un file o una directory
  •  ln -s /percorso_file_da_collegare/file_da_collegare /percorso_del_collegamento/nome_del_collegamento)
  •  L'opzione -s specifica che verrà creato un collegamento simbolico: è raccomandato usare -s.

«|»: serve per redirigere l'output del comando a sinistra, al comando alla sua destra

more o meglio less: permette di visualizzare l'output di un comando, un po' alla volta

tar -xzvf nomeFile: permette di estrarre un *.tar.gz
  •  x = comando di estrazione
  •  f = nome file di archivio come parametro
  •  z = filtra l'archivio con gzip
  •  v = verbose
  •  per creare il tar nella directory corrente:
  $ tar  -cf nomeNuovo.tar myfile.txt|directory

jar: permette di estrarre o creare jar e war

zip: permette di estrarre un *.zip
  $ sudo apt-get install zip
  $ unzip nomefile.zip

lspci: permette di visualizzare l'hardware riconosciuto (detected)
  $ lsscsi (se installato)

tail -f: permette di visualizzare le ultime 10 righe di un file (-f mostra gli append)

diff -r nomeFileODirectory nomeFileODirectory: permette di fare un compare

wmctrl: permette di interagire con le finestre da riga di comando
  •  per ottenere la lista delle finestre con relativo ID e PID
  $ wmctrl -p -l
  •  per chiudere una finestra tramite ID
  $ wmctrl -i -c 0x0540009c

/etc/issue | /etc/issue.net: è il file che contiene il messaggio visualizzato al login tramite terminale

vi: editor testuale
  •  frecce = naviga il testo
  •  u = annulla l'utimo comando
  •  i = attiva scrittura
  •  y = copia la linea (16yy copia 16 linee)
  •  p = incolla dalla clipboard (che rimane piena anche quando chiudi vi)
  •  esc = disattiva scrittura
  •  x = cancella carattere evidenziato
  •  dd = cancella la linea
  •  shift+j = tira su la linea sotto il cursore (mangia il «CR» a fine riga)
  •  :w = scrive le modifiche
  •  :e! = rollback
  •  :q = esce dal programma

loggare: configurare linux per loggare le attività degli utenti
  •  si può utilizzare il pacchetto acct che su Ubuntu, parte subito dopo l'installazione
  $ sudo apt-get install acct
  •  esempi di comandi:
  $ ac
  $ ac -d
  $ ac -p
  $ lastcomm "username" (search by user)
  $ lastcomm rm (search by command)
  http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html
  
  •  se l'utente non è furbo, puoi guardare il file .bash_history nella cartella dei ogni utente
  •  si può guardare anche dentro ./var/log/auth.log

history: storico dei comandi

touch fileName: per creare un file

porte di rete: netstat -anp | grep 6500

sudo dhclient: "uppa" le interfacce di rete installate e configura in automatico un ip

proxy: un modo per settare il proxy, può essere il seguente (è valido per wget, apt e altre che ora non so)
  $ export http_proxy='http://[[user][:pass]@]host[:port]/' (la variabile è case sensitive, e va scritta in minuscolo per apt-get. L'uso dei single_quotes evita errori in caso si usino caratteri speciali nella password)
  $ export ftp_proxy='http://[[user][:pass]@]host[:port]/'
  •  volendo, può essere utile far eseguire il comando all'avvio del sistema
  $ sudo vi /etc/profile
  •  aggiungi la riga
  $ sudo source /etc/profile
  •  può servire anche per apt-get; quindi:
  $ sudo vi /etc/apt/apt.conf
  •  in cui aggiungi la riga:
  Acquire::http::Proxy "http://[[user][:pass]@]host[:port]/";
oppure, non testato, in
/etc/apt/apt.conf.d/01ubuntu
APT {
    Acquire {
        http {
            Proxy "http://user:password@server:port";
        };
    };
};

  • nelle reti Microsoft, può tornare utile il proxy 'cntlm' che fa un tunneling appropriato


ssh: Secure Shell è un sistema per collegarsi in remoto ad una macchina linux che abbia installato il pacchetto openssh-server
  •  sudo apt-get install ssh (per installare il client)
  •  sudo apt-get install openssh-server (per installare il server)
  •  ssh username@192.168.0.1 (per collegarsi ad una macchina in remoto)
  •  ssh -X username@192.168.0.1 (per collegarsi ad una macchina in remoto e visualizzare in locale le finestre remote)
  •  per lanciare un'applicazione grafica su una macchina remota (evitando l'err "cannot open display"), eseguire questi passaggi:
  $ sudo su
  $ xhost +
  $ ssh user@192....
  $ export DISPLAY=':0.0'
  $ ./applicazione.sh &

Configurare IP a mano:
  sudo ifconfig eth0 down
  sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
  sudo route add default gw 192.168.1.1

  sudo ifconfig wlan0 down
  sudo iwconfig mode managed
  sudo iwconfig key ******     (Need this line only if using WEP, see above)
  sudo iwconfig essid ROUTER_NAME
  sudo ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 up
  sudo route add default gw 192.168.1.1

sudo kill -9 PID: killa un processo
  • un modo per  killare sempre "il solito processo":
  $ stringa=$(ps aux | grep java | grep catalina); kill -9 ${stringa:10:4};

grep -lir "ciao" *: cerca una stringa in tutti i files a partire dalla directory corrente
  $ sudo grep -lr http://156.54.205.69:8080/ --exclude-dir={sys*,tmp*,lib*,medi*,proc*,usr*,home*,etc*,root*,dev*} ./

xargs: per ogni riga del primo output, esegue il secondo comando
  $ grep -lr "stringa" ./* | xargs grep -C 1 "stringa"

sed: fa il replace tramite regualr expression
  •  Esempio di sostituzione ricorsiva
  $ find . -name "*.php" -print | xargs sed -i 's/FindString/ReplaceString/g'

find ./ -name "file.ext": cerca un file/directory a partire dalla directory corrente

locate nomeFile: usa un database generato in anticipo per massimizzare la velocità nella ricerca dei file
  •  per lanciare lo script che crea il database
  $ sudo /etc/cron.daily/mlocate
  •  aggiorna il db
  $ sudo updatedb
  •  modifica config 
  $ sudo gedit /etc/updatedb.conf

Installare LAMP:
  sudo apt-get update
  sudo apt-get install apache2
  sudo apt-get install mysql-server
  sudo gedit /etc/mysql/my.cnf /* bind-address = 127.0.0.1 con 0.0.0.0 */
  sudo apt-get install php5
  sudo apt-get install libapache2-mod-php5
  sudo apt-get install php5-gd /* per lavorare sulle immagini */
  sudo apt-get install php5-mysql
  sudo gedit /etc/php5/apache2/php.ini /* ;extension=mysql.so togli il ";" */
  sudo apt-get install phpmyadmin
  sudo apt-get install gftp /* se serve l'FTP */
  sudo apt-get install php5-mcrypt /* per phpmyadmin */
  sudo /etc/init.d/mysql restart
  sudo /etc/init.d/apache2 restart
  sudo nano /etc/php5/apache2/php.ini  /* e modifichi max_execution_time=120, oppure set_time_limit(0) in ogni *.php */



Esempio di bash: case sensitive e space sensitive
 #!/bin/bash

  configura() {
    read -p "Uso 192.168.1.16 (s/n)? " answer
    if [ $answer = "s" ]
      then indirizzo="192.168.1.16"
      else read -p "Fornisci l'indirizzo: " indirizzo
    fi
    sudo ifconfig eth1 down 
    sudo ifconfig eth1 $indirizzo netmask 255.255.255.0 up 
    sudo route add default gw 192.168.1.1
    echo "Configurazione terminata"
  }

  read -p "Configuro l'eth1 (s/n)? " answer

  

  if [ $answer = "s" ]
    then configura
    else echo "Ok, ciao"
  fi

###########

sleep 120

#INSTALLARE ZENITY: $ sudo apt-get install zenity
zenity --question --text="Vuoi avviare Evoution?"

if [ $? = 0 ]
 then evolution
fi

#############

STRINGA=$(ps ax | grep java | grep catalina)

echo ">$STRINGA<"

STRINGA=${STRINGA:0:5}

echo ">$STRINGA<"

if [[ "${STRINGA}" =~ [^0-9[:space:]\t] || "${STRINGA}" = "" ]]
then
   zenity --info --text="PID di Tomcat non trovato!!!"
   exit
else
   STRINGA=$(kill -9 $STRINGA 2> errore.txt) 
   if [ $? = 0 ]
   then
      zenity --info --text="Tomcat Killato!!!"
      exit
   else
      STRINGA=$(cat errore.txt)
      zenity --info --text="${STRINGA}"
      exit
   fi
fi



source: esegue lo script contenuto nel file passato come parametro

ps -Af f: tutti i processi + desc estese + alberizzazione

gconf-editor: apre l'editor di configurazione delle variabili di sistema

Environment Variables o variabili di sistema:
  •  per stampare tutte le variabili di sistema impostate usa 'printenv' o 'env'
  •  se crei una variabile in una shell, quella vive solo fichè vive la shell es.
  $ ZIO=pippo
  $ echo $ZIO
  •  se esegui il comando 'export' la variabile diventa di sistema, ma sempre finchè non muore la shell
  $ export ZIO=pippo
  •  per cancellare una variabile
  $ unset ZIO
  •  per renderle "permanenti" per un utente in particolare, bisogna inserirle nel file ".profile" che si trova nella home di ciascun utente (es. /home/luca/.profile) 
  •  per creare una variabile a livello di sistema per tutti gli utenti, bisogna modificare il file "/etc/profile" o "/etc/environment"
  •  una volta modificati /home/luca/.profile | /etc/profile | /etc/environment bisogna lanciarli, ad es. col comando "source"
  $ source .profile
  •  https://help.ubuntu.com/community/EnvironmentVariables
  •  ATTENZIONE: settando uno dei 4 files e lanciando "source", si avrà la persistenza solo all'interno della sessione shell.
  •  ATTENZIONE: il .profile prevale su tutti (ed anche per rispettivo utente), ma viene registrata solo con un reboot o facendo "Termina sessione" 

lshw [-short] [-c disk|cpu]: informazioni sull'hardware

lsusb: informazioni sulle usb

wget: teleport di un sito
  È possibile configurare un proxy per wget così come si fa per apt-get
  •  Esempio con: verbose, recursive, tutti gli elementi necessari alla pagina, formati accettati, domini validi, non risalire alle directory di livello superiore, URL:
  $ wget -v -r --page-requisites --accept=gif,jpg,html,css,png,js,htm --domains=download.oracle.com --no-parent http://download.oracle.com/javase/tutorial/java/generics/

Swap space: è la memoria virtuale che il sistema alloca su disco anzichè su RAM
  •  https://help.ubuntu.com/community/SwapFaq
  •  per la creazione di un nuovo file di swap
  $ sudo dd if=/dev/zero of=/mnt/200Mb.swap bs=1M count=200

  •  se non hai agito come root, gli cambi i permessi
  $ sudo chown root:root /mnt/200Mb.swap
  $ sudo chmod "u=rw","g=rw","o-rwx" /mnt/200Mb.swap

  $ sudo mkswap /mnt/200Mb.swap
  $ sudo swapon /mnt/200Mb.swap
  $ gksudo gedit /etc/fstab
  •  ... e aggiungi la riga:
  /mnt/200Mb.swap  none  swap  sw  0 0

  •  ... riavvia il sistema

  •  per rimuoverlo, elimini la riga dal /etc/fstab e poi cancelli il file
  $ sudo swapoff /dev/mapper/UbuntuServerOracle-swap_2 && sudo rm /dev/mapper/UbuntuServerOracle-swap_2

nohup ./processo.sh &: lancia in background scrivendo l'output su file remoto

./processo.sh > nomefile.txt: scrive l'output su file
  •  può essere utilizzato per copiare il contenuto di un file in un nuovo file

xclip: per copiare testo nella clipboard attraverso una shell in modalità X
  $ sudo apt-get install xclip
  $ xclip /etc/apt/sources.list
  $ xclip -o
  $ xclip -o > ~/test.txt

sudo dpkg -i percorso/*.deb: installa tutti i pacchetti presenti nel percorso rispettando le reciproche dipendenze

apt: repository
  apt-cache search atari
  apt-cache show stella
  dpkg -l | grep mozilla

dos2unix: ogni tanto è causa di errori nei file di script creati su windows ed eseguiti su unix
  $ sudo apt-get install tofrodos

  dpkg: gestore dei pacchetti
  $ dpkg -l (per vedere i pacchetti installati)

Oracle XE: per installare Oracle XE su Linux (anche su Ubuntu server)
  •  http://download.oracle.com/docs/cd/B25329_01/doc/install.102/b25144/toc.htm
  •  esegui tutto come utente root
  •  servono due pacchetti 'libaio' and 'bc'
  $ sudo apt-get install libaio1
  $ sudo apt-get install bc

  •  serve 1Gb di memoria ram
  
  •  serve un utente oracle all'interno di un gruppo dba
  $ groupadd dba
  $ useradd -g dba -d /home/oracle -b /home/oracle -m oracle -p qwe -s /bin/bash -c 'Oracle user' (se la directory già esiste, togli il parametro m)
  $ passwd oracle

  •  per installare dal repository:
  $ sudo vi /etc/apt/sources.list
  (aggiungi la riga): deb http://oss.oracle.com/debian unstable main non-free
  (per aggiornare i link di apt)$ wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle -O- | sudo apt-key add -
  $ sudo apt-get update
  $ sudo apt-get install oracle-xe

  •  oppure scarichi il .deb e lo installi
  $ sudo dpkg -i oracle-xe_10.2.0.1-0.060128_i386.deb

  •  in fine, lanci la autoconfigurazione
  $ /etc/init.d/oracle-xe configure

  •  per fare in modo che apex sia visibile da remoto:
  •  1) copi (usando vi) il contenuto di oracle_env.sh nel .profile per poter utilizzare sqlplus
  •  2) lanci alcuni comandi da sqlplus per aprire apex
  $ sudo vi /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
  •  per copiare le 16 righe digiti 16yy
  $ sudo vi /home/luca/.profile
  •  vai in fondo, per inserire premi i, per incollare premi p, per salvare e chiudere :wq
  •  carichi lo script col comando 'source'
  $ source .profile

  •  per avviare la shell di sqlplus senza passare per l'autenticazione:
  $ sqlplus /nolog
  SQL> conn sys/qwe as sysdba
  SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

  •  per collegarsi in remoto
  $ sqlplus flussipro/flussipro@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.226.174)(PORT=1521)))(CONNECT_DATA=(SID=DBFLUSSI)))'

squid: Squid is a full-featured web proxy cache server application
which provides proxy and cache services for Hyper Text Transport Protocol (HTTP), File Transfer Protocol (FTP), and other popular network protocols. Squid can implement caching and proxying of Secure Sockets Layer (SSL) requests and caching of Domain Name Server (DNS) lookups, and perform transparent caching.

  $ sudo apt-get install squid
  $ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original
  $ sudo chmod a-w /etc/squid/squid.conf.original
  $ sudo /etc/init.d/squid restart

*.dmg: installare un programma per Mac
  $ dmg2img /path/to/example.dmg /path/to/example.img 
  Do NOT follow the instructions for mounting the file at the end of the conversion. It is not advisable to mount to the /mnt directory.
  To Mount
  As always a directory will be created in /media, the next step will ensure hfsplus support is available, lastly the IMG file mounted to the directory.

  $ sudo mkdir /media/example 
  $ sudo modprobe hfsplus
  $ sudo mount -t hfsplus -o loop example.img /media/example

java: installare la JDK o JRE
  • di solito si installa sotto /usr/java/jdk* | /usr/java/jre*
  • inserire in /etc/profile le variabili di ambiente:
  • export JAVA_HOME=/usr/java/jdk*/bin/java
  • export PATH=$PATH:/usr/java/jdk*/bin
  • - oppure - 
  • sudo aptitude install sun-java6-jre sun-java6-plugin (che serve a firefox)
  • i packages verranno buttati sotto /usr/lib/jvm/java-*

Come togliere la corrente da una USB: 
  $ for device in $(ls /sys/bus/usb/devices/*/product); do echo $device;cat $device;done
  $ echo suspend | sudo tee /sys/bus/usb/devices/2-1/power/level
  $ echo on | sudo tee /sys/bus/usb/devices/2-1/power/level

pdftohtml: 
  $ sudo apt-get install poppler-utils
  $ pdftohtml [opzioni] nomedocumento.pdf nome.html
  • 


stiky notes http://enli.co.cc/ubuntu/workaround-gnome-sticky-notes-applet-minimizes-when-clicked-on-empty-space-on-desktop/
1. Open CompizConfig Settings Manager from System > Preferences.
2. Enable the plugin Window Rules.
3. In “Skip Taskbar“, “Skip Pager“, “Non minimizable windows” fields, add “class=Stickynotes_applet“.
4. In general settings of CCSM, untick “Hide Skip Taskbar Windows” which minimizes windows which are not shown in taskbar.