pwd: directory in cui ci si trova
ls: contenuto di una directory
- -a elenca anche i file nascosti
- -l elenco dettagliato di file e sotto directory con i loro attributi
- -R elenca ricorsivamente i file nella directory indicata e in tutte le sottodirectory
- -s mostra la dimensione dei file
- -S ordina i file per dimensione partendo dal più grande
- -u ordina i file per data e ora di accesso partendo dal più recente
- -X ordina i file per estensione e ordine alfabetico
cd: spostarsi all'interno delle directory mkdir: creare directory
- mkdir prova Verrà creata la directory prova/ all'interno della directory in corrente.
- mkdir -p /prova1/bin In questo modo verranno create tutte le directory comprese nel percorso, anche se la prima directory specificata non esiste.
cp: copia files o directory
- -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
- mv miofile nuovofile (Cambierà il nome al file miofile in nuovofile); mv /prova /prova_nuova (Cambierà il nome alla directory /prova in /prova_nuova)
rm e rmdir: cancellare file o directory
- -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...])
- -a visualizza le informazioni sia sui file che sulle directory
- -s visualizza la dimensione totale complessiva
- -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...])
- -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
- -h Aggiunge a ciascuna dimensione un suffisso, come M per megabyte, G per gigabyte, ecc
- -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)
- -t tipofs Limita l’elenco a filesystem del tipo specificato
- -x tipofs Limita l’elenco a filesystem non del tipo specificato
- 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.