======Commandes UNIX====== =====Les fichiers===== * Affiche la liste des fichiers contenue dans le dossier actuel. (list sort) ls ls -la ls -laR * Supprime des fichiers rm ... rm -rf ... * ln [dest] (link) Cree un 'hardlink' le liens est fait avec le numero d'inode du fichiers (un compteur compte le nombre de hardlink sur un fichiers) ln /usr/local /usr * Cree un lien symbolique (un fichier speciale contenant l'adresse de destination) ln -s /mp3/windobesnd /mnt/hda7/Windobe/media * Change l'utilisateur (UID) et le groupe(GID) chown user:group file restaure les droits sur tout les fichiers du repertoire home de benoit qui appartient au group users chown -R benoit:users /home/benoit * change les permissions d'un fichier chmod 755 * connaitre le type d'un fichier (dossier, tar.gz, txt, ....) file /home/ctaf/monfichier * affiche des informations sur un fichier (date de changement, inode, device, etc) stat file =====Les repertoires===== * affiche le dossier dans lequel nous sommes. (Print Working Directory) pwd /home/ctaf * Change de dossier (Change Directory) cd /usr * Remonte dans la hierarchie (passe de /usr/bin à /usr) cd .. * Va dans votre dossier personnel (/home/you) cd cd ~ * Revient sur le dossier precedant cd - * creer un nouveau dossier mkdir * Afficher l'aide d'une commande (en loccurence ls) man ls * script (permet d'enregistrer tout ce qui se passe dans le term) script file =====Information===== * retourne le nom d'hote de la machine hostname * info sur la machine (version du kernel, ..) uname -a * info sur le term en cours tty FIXME * du meme ordre stty * identique l'utilisateur et le groupe en cours (savoir si on est root, ..) id * affiche les peripheriques usb (list usb) lsusb * affiche les informations sur le materiel (list pci) lspci * affiche les informations sur le materiel (list hardware) lshw * affiche les informations sur les attributs d'un fichiers lsattr * affiche des infos sur les limites du shell (nombres de descripteur de fichier max, etc) ulimit =====Mount/Share==== * defaut mount mount /dev/hda1 /mnt/hda1 * user mount for ntfs (by defaut mount as root) mount -t ntfs /dev/hda1 /mnt/hda1 -o user, gid=,uid= * monte un repertoire Windows sous Linux mount -t smbfs -o username=myname,uid=my_uid,gid=my_gid //server/share /mnt/smb smbmount //server/share /mnt/smb -o "username=myname,uid=my_uid,gid=my_gid" * list the shares on a computer smbclient -L 192.168.1.2 * Voir le voisinage reseau smbclient -N -L ip_address_of_your_PC | less nmblookup -T "*" * smb mount mount //192.168.0.1/c /mnt/smb -o username=CTAF[,password=SuperLePass] * monte une partie de l'arborescence, c'est un peu l'equivalent d'un symlink (ex: monte /proc sur /mnt/gentoo/proc, pr pouvoir se chrooter dans /mnt/gentoo) mount -o bind /proc /mnt/gentoo/proc * Colinux mount, permettant d'acceder au partition windows depuis colinux mount -o cofs cofs1 /mnt/c * Connaitre quels processus utilise un certain point de montage fuser -cu /mnt/c * To terminate all of the processes using a given file system, enter: fuser -kxuc /dev/hda1 * To list all processes that are using a file which has been deleted from a given file system, enter: fuser -d /usr * affiche tous les utilisateurs qui utilisent un fichiers (LiSt Open File) lsof * Pour proteger un repertoire contre les suppression accidentelles avec **rm -rf**. il faut creer un fichier vide appelle "-i", qui passe rm -rf en mode interactif! touch -- "-i" * change les attributs d'un fichier ou dossier, et permet entre autres de le rendre insupprimable meme par le root,(pour reiser fs, monter la partition avec l'option attr) chattr * supprime definitivement un fichier chattr +s file * interdit la suppression d'un fichier chattr +i file * affiche les attributs d'un fichier lsattr file * Essaye de recupperer les fichiers dernierement supprimes (par erreur) reiserfsck --rebuild-tree --scan-whole-partition /dev/partition =====Gestion des processus===== ^usefull key for zsh^^ |Ctrl-c | (control+c) in a terminal kill current processus| |ctrl-z | (control+z) suspend current processus| |ctrl-s | suspend term (your shell will not answer after)| |ctrl-q | resume term (after a ctrl-s)| * liste des processus top * liste des processus ps * liste de tous les processus (syntaxe POSIX) ps -e * liste de tous les processus (syntaxe BSD) ps aux * arbre de tous les processus (ps -axjf fait la mm chose) ps -ejH * tuer un processus kill PIDNUMBER #envoie le signal 9 kill -9 PIDNUMBER #envoie un SIGHUP kill -SIGHUP PIDNUMBER #tuer tous les processus(attention machine inutilisable aprés) kill -1 -9 * tuer un processus par le nom killall gdm * tuer un processus par le nom, utilise des regexp pkill namepattern * afficher les pid associer a un programme (utilise les regexp) pgrep gnome * sous zsh: permet de detacher un processus (on peut fermer la session et le processus marche encore) disown * permet aussi de detacher un processus et de rediriger sa sortie vers un fichier nohup * affiche la liste des processus en arrierre plan ou en suspend jobs * (background) resume suspended jobs in background bg * (foreground) resume suspended jobs in foreground fg * ex d'utilisation de jobs et bg: * on lance un xemacs en graphique zsh$ xemacs * on appuie sur ctrl-z dans le terminal pour susprendre le processus en cours(xemacs) zsh: suspended xemacs * on affiche la liste des processus appartenant au terminal en cours #la liste des jobs zsh$ jobs [1] + suspended xemacs * on resume le processus de xemacs en arrière plan #on peut maintenant travailler dans le terminal et dans xemacs en même temps zsh$ bg # resume xemacs in background [1] - continued xemacs =====Les Editeurs de textes===== * il fais tous (mail, news, jeux) sauf ce que les gens normaux espèrent (avis aux geeks :-) ) #il fonction sous x et en console (pratique en ssh) #il gere la coloration syntaxique, affiche une arborescences avec les fichiers #se controle entierrement au clavier!! * control + x, puis control + c pour quitter emacs * pour le forcer a s'ouvrir en console: emacs -nw * beurk, mais ceux qui aime emacs deteste vi et inversement! #shit + ZZ pour quitter, sinon echap puis :q! (sisi c'est bien ca avec le point d'exclamation à la fin!!) vi * vi improved, j'en dis pas plus! vim * mini editeur present partout qui reprend les raccourcis claviers de emacs en partie #Control + X pour quitter nano =====Changer d'utilisateur===== * en console pour changer d'utilisateur: su ctaf * passer en root: su * executer une commande en root: sudo COMMAND * frontend a sudo, demande le mot de passe dans une fenetre graphique * -X : mode graphique * -p : choisi l'utilisateur que l'on doit utiliser pour lancer la commande (root par defaut) * -c : commande a executer su-to-root -X -p USER -c COMMAND =====Conversion de fichiers===== * convertir les CRLF en LF (passe les fichiers DOS en fichier UNIX) fromdos fichier_dos dos2unix fichier_dos * convertir les LF en CRLF (passe les fichier UNIX en fichier DOS) todos fichier_unix * convertir entre mac,linux et windows (permet aussi de changer de charset) recode /cl../cr mac.txt recode /cr.. unix.txt recode ../cl dos.txt * Postscript en pdf ps2pdf * convertir un document word en postscript doc2ps * convertir presque **tout en** presque **tout** convert file.jpg file.pdf convert file1.jpg file2.jpg file3.jpg file123.pdf * convertir en majuscule/minuscule #minuscule=>majuscule echo roger | tr [:lower:] [:upper:] ROGER #majuscule=>minuscule echo ROGER | tr A-Z a-z roger ======Commandes UNIX Reseau====== =====Configuration du Reseau ===== * info sur les interfaces reseau ifconfig ifconfig -a * change le mtu d'une interface ifconfig eth1 mtu 1500 * active une interface reseau ifconfig eth0 up #commande specifique debian et derive ifup eth0 * desactive une interface reseau ifconfig eth0 down #commande specifique debian et derive ifdown eth0 =====DNS & route===== * affiche les routes route Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 default CTAF-FCD 0.0.0.0 UG 0 0 0 eth0 * supprime la route par default (gateway) route del default * Change la route par default (gateway), il faut dabord supprimer la route par default si il y en a une route add default Gw 192.168.0.1 * interoge un serveur DNS nslookup * interoge le serveur DNS sur 192.168.0.1 a propos de l'adresse ip de google nslookup www.google.fr 192.168.0.1 * similaire a nslookup interoge un serveur DNS host * interroge les serveurs dns definis dans /etc/resolv.conf a propos de l'ip de google host www.google.fr =====Outils===== #trace la route d'un paquet tcp/ip #affiche tout les serveurs par lequel passe le paquet avant d'atteindre l'ip specifie traceroute #route de google traceroute www.google.fr #teste si une adresse ip est 'up' et son ping #attention la plupart des firewalls maintenant ont des options pour ne pas repondre au requete ICMP #et ainsi etre en mode 'furtif' (d'apres le firewall!! ping www.ctaf.free.fr #connection reseau active sur la machine netstat ftp # Programme de recuperation de fichier (HTTP, FTP,HTTPS) wget #pour telecharger recursivement tout les fichiers et dossiers du site internet de la poste #permet de recupperer des albums mp3 facilement sur un serveur http, sans cliquer sur chaque chanson !!! wget -r -N -l inf --connect-timeout=10 www.laposte.fr =====SSH/SCP===== ====Clefs==== #genere une clef ssh2 #-N indique que l'on ne veux pas de passphrase ssh-keygen -t dsa -N '' -d #ajoute notre clef public dans authorised key, comme ca plus besoin de tapper de mot de passe cat ~/.ssh/id_dsa.pub >>~/.ssh/authorised_keys #genere une clef ssh1 (par forcement necessaire) ssh-keygen -t rsa1 -N '' cat ~/.ssh/identity.pub >> ~/.ssh/authorized_keys ====Commandes==== * copie des fichiers par ssh scp :fichierlocal root@localhost:/etc/network/fichierlocal ctaf@serveurssh.fr:. * copie un dossier et tout ses fichiers scp -r :~/.ctafconf/ ctaf@IPSERVEURSSH:~/. * connection ssh sur le port 22 de serveur en temps que user ssh -p 22 user@serveur * execute des commandes sur une machine distante #commande distante: retabli la connection internet par ppp sur mon serveur ssh user@monserveurdsl "poff; pon dsl-provider;" * se connecte sur un premier serveur ssh, et de la, redirigire encore la connection sur un autre serveur, le **-t** permet de demander un pseudo terminal sur le premier serveur ssh -t user@serveur1 "ssh user@serveur2" * escape command,avec un pseudo terminal: * ~. : deconnecte ssh * ~# : liste les connections forwardes * forward la passphrase ssh sur le serveur, comme ca ya pas besoin de retapper la passphase, si on se connecte a un autre serveur ssh, depuis le premier serveur (-a pour desactiver le forwarding) ssh -A server * forward de W (pour le realiser ssh, cree un serveur X local puis ssh mettra la variable DISPLAY à la bonne valeur (adresse local + numero du serveurX de forward). Attention le serveur ssh distant doit supporter le **forwarding** ("X11Forwarding yes" dans /etc/ssh/sshd_config). * -X : active le forward * -x : le desactive ssh -X server * lance un emacs a distance et l'affiche sur notre serveur X local (un emacs graphique) ssh -X monserveur.free.fr emacs & * Local port forwarding, le port "port" sur la machine local sera redirige vers host:hostport apres avoir franchi le tunnel ssh ssh -L port:host:hostport user@serveurhost * le port 23 de la machine local est redirige sur le port 45 du serveur distant, le localhost correspond a celui du serveur distant ssh -L 23:localhost:45 user@serveurdistant * sous localhost (ouvrir un navigateur qui pointe vers localhost:4200 et magie google s'affiche!) ssh -L 4200:www.google.fr:80 serveurdistant * Remote port forwarding, le port "port" de la machine distante sera redirige vers host:hostport apres avoir franchi le tunnel ssh ssh -R port:host:hostport user@serveur * le port 42 de la machine distante sera redirige sur www.google.fr:80 apres etre passe par le tunnel, le reel acces a google.fr se fera de la machine local ssh -R 42:www.google.fr:80 user@serveurdistant ====Astuces==== Si un serveur change de clef vous ne pouvez plus vous y connecter. Vous recevez ce message: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is f3:78:8f:da:43:ad:22:2a:36:5f:46:9e:6b:ca:8e:d1. Please contact your system administrator. Add correct host key in /home/ctaf/.ssh/known_hosts to get rid of this message. Offending key in /home/ctaf/.ssh/known_hosts:1 Password authentication is disabled to avoid man-in-the-middle attacks. Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks. Permission denied (publickey,password,keyboard-interactive). Il vous suffit de supprimer la clef correspondant au serveur incrimine (ou carement le fichier know_hosts) dans votre .ssh/know_hosts et de recommencer. l'option stricthostkeychecking peut etre specifier dans le cas d'un configuration globale strict: ssh -o stricthostkeychecking=no ctaf@sshserver@ssh.org ======Zsh====== Pour des exemples de configuration de zsh la [[ctafconf]]. #les processus lance en tache de fond, ou avec un & à la fin sont detache de leur processus pere zsh #si on ferme zsh, on ne ferme pas le processus detache setopt nohup ======Zmv====== ====Introduction==== Zmv, est un outils develloper avec zsh, il permet de renomer un groupe de ficher en un autre avec des expressions regulieres. Pour l'activer il faut avoir dans son fichier de configuration zsh: #load zmv module autoload zmv ====Examples d'utilisation==== >ls 12-mortobozore-r3.mp3 05-ctaf-vs-himself.mp3 13-CTAF-ctsmple-r2.mp3 #si les expressions passees en parametre ne permettent pas d'assigner #un nom different a chaque >zmv "([0-9][0-9])-(*).mp3" "\$1-CTAF-\$2.mp3" >ls 12-CTAF-mortobozore-r3.mp3 05-CTAF-ctaf-vs-himself.mp3 13-CTAF-ctsmple-r2.mp3 #renomme tous les fichiers en 1.foo , 2.foo, 3.foo etc... >ls * 1.c asd.foo bla.foo fnord.foo foo.fnord foo.foo >c=1 zmv '*.foo' '$((c++)).foo' >ls * 1.c 1.foo 2.foo 3.foo 4.foo foo.fnord #pareil mais seulement avec les noms de fichiers #dont la taille est plus grande ou egale a 30 >c=1 >zmv "${(l:30-4::?:)}*.foo" '$((c++)).foo' Remplace les espaces par des underscores >zmv '* *' '$f:gs/ /_' #renomme les .sh en .pl >zmv -W '*.sh' '*.pl' #passe en majuscule/majuscule tous les fichiers et dossiers #Lower, minuscule >zmv '(*)' '${(L)1}' #Upper majuscule >zmv '(*)' '${(U)1}' #supprime l'extension .c a tous les fichiers c >zmv '(*).c' '$1' #met en majuscule la premier lettre de tous les fichiers mp3 >zmv '([a-z])(*).mp3' '${(C)1}$2.mp3' #Copie README dans chaque repertoire contenant un Makefile >zmv -C '(**/)Makefile' '${1}README' #Renomme pic1.jpg, pic2.jpg,.. en pic0001.jpg, pic0002.jpg,... >zmv 'pic(*).jpg' 'pic${(l:4::0:)1}.jpg' >zmv '(**/)pic(*).jpg' '$1/pic${(l:4::0:)2}.jpg' # recursive ======Screen, le gestionnaire de fenetre en console====== screen permet d'avoir plusieur fenetre en console et de splitter les fenetres. Si l'on ferme le terminal contenant screen, il suffit de faire un screen -r pour recupperer la session exactement comme avant. screen c'est magique : ^**Windows**^^ |ctrl-a c | create a windows| |ctrl-a k | kill the windows| |ctrl-a n | next window (ctrl-a space)| |ctrl-a p | prev window (ctrl-a backspace)| |ctrl-a " | list all window| |ctrl-a ctrl-a | prev window (previously displayed)| ^**Regions (window split)**^^ |ctrl-a K | kill the current regions| |ctrl-a S | split the windows into 2 regions| |ctrl-a Q | kill all regions but the current one| |ctrl-a tab | switch regions| ^**others**^^ |ctrl-a d | detach le screen en cours| |ctrl-a ctrl-x | verrouille la session (mot de passe)| |screen -r | reatach to detached screen, attention ceci est une commande shell|