Accueil
 

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 <fichier1> ... <fichiern>
rm -rf <fichier1> ... <fichiern>
  • ln <source> [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 <fichier>
  • 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 <directory path>
  • 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
<code bash>

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 <dos.txt >mac.txt
recode /cr.. <mac.txt >unix.txt
recode ../cl <unix.txt >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
<code bash>
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
<code bash>
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

 
shell.txt · Last modified: 2005/09/21 00:41 by ctaf
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki