informatique:linux:commandes_linux
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
informatique:linux:commandes_linux [2018/09/06 10:06] – [readlink] realpath pteu | informatique:linux:commandes_linux [2024/03/15 05:58] – auditd pteu | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{tag> | ||
- | |||
====== Commandes Linux ====== | ====== Commandes Linux ====== | ||
Cet article présente des commandes système sous Linux. En général on obtient de l'aide sur une commande en tapant '' | Cet article présente des commandes système sous Linux. En général on obtient de l'aide sur une commande en tapant '' | ||
- | Les commandes réseaux sont décrites ici : [[linux | + | Les commandes réseaux sont décrites ici : [[informatique: |
Line 67: | Line 65: | ||
+ | =====arping===== | ||
+ | |||
+ | Détecter une adresse IP usurpée / duplicate : | ||
+ | <code bash> | ||
+ | arping -D -q -I eth0 -c 2 192.168.0.5 | ||
+ | </ | ||
=====aspell===== | =====aspell===== | ||
Vérificateur d' | Vérificateur d' | ||
Line 86: | Line 90: | ||
Permet de programmer l' | Permet de programmer l' | ||
- | Enfin, on peut spécifier l' | + | On peut spécifier l' |
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
<code bash> | <code bash> | ||
Line 112: | Line 121: | ||
On peut utiliser les fichier ''/ | On peut utiliser les fichier ''/ | ||
+ | On peut consulter les journaux d' | ||
+ | <code bash> | ||
+ | Jul 19 02:30:00 bast2 atd[221981]: | ||
+ | </ | ||
+ | |||
+ | =====auditd===== | ||
+ | |||
+ | Permet d' | ||
+ | <code bash> | ||
+ | apt install auditd | ||
+ | |||
+ | # mise en place de l' | ||
+ | auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET | ||
+ | # lister les logs de l' | ||
+ | ausearch -i -ts today -k SOCKET | ||
+ | # supprimer l' | ||
+ | auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET | ||
+ | </ | ||
+ | src: [[https:// | ||
=====awk===== | =====awk===== | ||
Line 146: | Line 174: | ||
(voir '' | (voir '' | ||
+ | =====blkid===== | ||
+ | Affiche les attributs des disques/ | ||
+ | <code bash> | ||
+ | /dev/sda1: UUID=" | ||
+ | /dev/sda2: UUID=" | ||
+ | /dev/sdb1: UUID=" | ||
+ | /dev/sdb2: UUID=" | ||
+ | /dev/md0: LABEL=" | ||
+ | /dev/md1: UUID=" | ||
+ | </ | ||
=====cal===== | =====cal===== | ||
Line 268: | Line 306: | ||
* effacement total : '' | * effacement total : '' | ||
+ | |||
+ | =====chkconfig===== | ||
+ | |||
+ | Commande pour configurer les services activer au démarrage du système. | ||
+ | <code bash> | ||
+ | # lister les états de tous les services | ||
+ | chkconfig --list | ||
+ | |||
+ | # activer le service toto (resp. désactiver avec " | ||
+ | # optionnel : préciser les runlevels concernés, par défaut 2345) | ||
+ | chkconfig toto on [--level 35] | ||
+ | |||
+ | # lister l' | ||
+ | chkconfig --list toto | ||
+ | toto 0: | ||
+ | </ | ||
=====chmod===== | =====chmod===== | ||
Line 364: | Line 418: | ||
* '' | * '' | ||
+ | =====command===== | ||
+ | Permet de lancer la commande fournie en paramètre en ne la recherchant que dans les commandes système ou dans le PATH. Invoquée avec '' | ||
+ | |||
+ | <code bash> | ||
+ | command -V cd | ||
+ | cd est une primitive du shell | ||
+ | </ | ||
=====cp===== | =====cp===== | ||
**c**o**p**y ; copier de fichier. | **c**o**p**y ; copier de fichier. | ||
Line 396: | Line 457: | ||
<code bash> | <code bash> | ||
# Pour afficher la date au format YYYY/ | # Pour afficher la date au format YYYY/ | ||
- | date +%Y/%m/%d-%H:%M:%S | + | date "+%Y/%m/%d %H:%M:%S" |
- | 2009/06/25-15:07:56 | + | 2009/06/25 15:07:56 |
# afficher le compteur (timestamp) de l' | # afficher le compteur (timestamp) de l' | ||
- | date +%s | + | date "+%s" |
1441816670 | 1441816670 | ||
Line 412: | Line 473: | ||
# afficher la date dans 5 mois et 4 jours (regarde, on peut même faire des fautes, c'est pris en compte !) : | # afficher la date dans 5 mois et 4 jours (regarde, on peut même faire des fautes, c'est pris en compte !) : | ||
date --date=' | date --date=' | ||
+ | # afficher la date, 89 jours après le 26 mai 2022 : | ||
+ | date -d "26 may 2022 +89 days" | ||
+ | Tue Aug 23 00:00:00 UTC 2022 | ||
# mettre à jour la date et l' | # mettre à jour la date et l' | ||
Line 417: | Line 481: | ||
</ | </ | ||
+ | Pour comparer des dates, on les convertit au format '' | ||
+ | <code bash> | ||
+ | date=$(date -d 2020-12-15 +%s) | ||
+ | now=$(date +%s) | ||
+ | |||
+ | if [ $date -lt $now ]; then | ||
+ | echo "date est dans le passé !" | ||
+ | fi | ||
+ | </ | ||
=====dd===== | =====dd===== | ||
Line 434: | Line 507: | ||
<code bash> | <code bash> | ||
pkill -USR1 dd | pkill -USR1 dd | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====declare===== | ||
+ | |||
+ | Permet de déclarer des variables en bash et leur affecter des attributs ; il équivaut à la commande '' | ||
+ | |||
+ | Liste des attributs existants : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Utiliser '' | ||
+ | |||
+ | <code bash> | ||
+ | # exemple d' | ||
+ | declare -i int=2 | ||
+ | echo "int vaut $int" | ||
+ | let "int += 1" | ||
+ | echo "int vaut $int" | ||
+ | unset int | ||
+ | |||
+ | # exemple d' | ||
+ | declare -r const=pierre | ||
+ | echo "const vaut $const" | ||
+ | const=sable | ||
+ | echo "const vaut $const" | ||
</ | </ | ||
Line 471: | Line 577: | ||
dig +trace google.fr | dig +trace google.fr | ||
+ | |||
+ | dig txt pteu.fr | ||
+ | dig mx pteu.fr | ||
+ | dig pteu.fr @9.9.9.9 | ||
+ | dig pteu.fr @127.0.0.1 -p5353 | ||
+ | dig +noall +answer pteu.fr | ||
</ | </ | ||
+ | Récupérer le numéro de série (serial number) d'une zone (enlever //+short// pour un résultat plus verbeux) : | ||
+ | <code bash> | ||
+ | dig +short SOA pteu.fr | ||
+ | dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 | ||
+ | </ | ||
+ | |||
+ | Interroger tous les serveurs faisant autorité d'une zone : | ||
+ | <code bash> | ||
+ | dig +nssearch pteu.fr | ||
+ | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 213.251.188.149 in 0 ms. | ||
+ | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 2001: | ||
+ | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 2001: | ||
+ | SOA dns105.ovh.net. tech.ovh.net. 2018110900 86400 3600 3600000 300 from server 213.251.128.149 in 2 ms. | ||
+ | </ | ||
=====dirname===== | =====dirname===== | ||
Line 495: | Line 621: | ||
=====dmesg===== | =====dmesg===== | ||
- | Affiche les messages émis lors du boot (on y trouve aussi les messages lors du branchement d'un disque USB). | + | Affiche les messages émis par le noyau depuis le dernier démarrage. |
+ | <code bash> | ||
+ | dmesg | head -1 | ||
+ | [ 0.000000] Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 | ||
+ | (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27) | ||
+ | [..] | ||
+ | # pour convertir les temps en date | ||
+ | dmesg -T | ||
+ | [mer. janv. 2 18:18:44 2019] Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version | ||
+ | 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27) | ||
+ | [..] | ||
+ | </ | ||
=====df===== | =====df===== | ||
Line 624: | Line 761: | ||
ethtool -s eth0 speed 1000 duplex full autoneg on | ethtool -s eth0 speed 1000 duplex full autoneg on | ||
+ | Afficher les statistiques de la carte eth0: '' | ||
=====exit===== | =====exit===== | ||
Line 672: | Line 810: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
Line 730: | Line 869: | ||
# on peut additionner les conditions de recherches avec -a (AND) et -o (OR) | # on peut additionner les conditions de recherches avec -a (AND) et -o (OR) | ||
find . \( -name ' | find . \( -name ' | ||
- | </ | ||
+ | Pour trier les résultats par date de modification : | ||
+ | find . \( -name ' | ||
+ | </ | ||
=====flock===== | =====flock===== | ||
Line 821: | Line 962: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
Il est possible d' | Il est possible d' | ||
Line 912: | Line 1056: | ||
=====history===== | =====history===== | ||
- | Permet d' | + | Permet d' |
<code bash> | <code bash> | ||
history | history | ||
Line 922: | Line 1066: | ||
| | ||
</ | </ | ||
+ | |||
+ | Lors de la fermeture de session, cette liste est ajoutée au fichier indiqué dans la variable '' | ||
+ | * le format de timestamp de chaque commande avec la variable '' | ||
+ | * la taille de l' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | Exemple : | ||
+ | <file bash .bashrc> | ||
+ | HISTCONTROL=ignoredups: | ||
+ | HISTTIMEFORMAT=" | ||
+ | HISTSIZE=10000 | ||
+ | HISTFILESIZE=20000 | ||
+ | </ | ||
On peut relancer une commande de l' | On peut relancer une commande de l' | ||
Line 944: | Line 1102: | ||
</ | </ | ||
- | On efface l' | + | On efface l' |
On peut loguer (dans ''/ | On peut loguer (dans ''/ | ||
Line 987: | Line 1145: | ||
ymir | ymir | ||
</ | </ | ||
+ | |||
+ | =====iconv===== | ||
+ | |||
+ | iconv est un utilitaire de conversion et d' | ||
+ | <code bash> | ||
+ | # Supprimer les caractères accentués: | ||
+ | echo " | ||
+ | eei | ||
+ | </ | ||
+ | |||
=====id===== | =====id===== | ||
Line 1114: | Line 1282: | ||
=====ip===== | =====ip===== | ||
- | Couteau suisse réseau, il permet de configurer les paramètres ip d'une interface réseau. | + | Couteau suisse réseau, il permet de configurer les paramètres ip d'une interface réseau. Dans de plus en plus de distributions, |
<code bash> | <code bash> | ||
+ | # afficher les interfaces | ||
ip addr show | ip addr show | ||
1: lo: < | 1: lo: < | ||
Line 1127: | Line 1296: | ||
3: eth1: < | 3: eth1: < | ||
| | ||
+ | |||
+ | # afficher la table de routage | ||
+ | ip route | ||
+ | default via 10.10.22.249 dev ens3 onlink | ||
+ | 10.10.22.0/ | ||
+ | |||
+ | # affecter ou supprimer une adresse IP à une interface | ||
+ | ip addr add 10.0.0.1 255.255.255.0 dev eth0 | ||
+ | ip addr del 10.0.0.1 255.255.255.0 dev eth0 | ||
+ | |||
+ | # afficher les voisins | ||
+ | ip neigh | ||
</ | </ | ||
+ | Équivalence anciennes/ | ||
+ | ^ anciennes commandes ^ équivalent ip ^ | ||
+ | | ifconfig -a | ip a | | ||
+ | | ifconfig enp6s0 down | ip link set enp6s0 down | | ||
+ | | ifconfig enp6s0 up | ip link set enp6s0 up | | ||
+ | | ifconfig enp6s0 10.0.0.24 netmask 255.255.255.0 dev enp6s0 | ip addr add 10.0.0.24/ | ||
+ | | ifconfig enp6s0 mtu 9000 | ip link set enp6s0 mtu 9000 | | ||
+ | | ifconfig enp6s0:0 10.0.0.25 | ip addr add 10.0.0.25/ | ||
+ | | netstat | ss | | ||
+ | | netstat -tulpn | ss -tulpn | | ||
+ | | netstat -neopa | ss -neopa | | ||
+ | | netstat -g | ip maddr | | ||
+ | | route | ip r | | ||
+ | | route add -net 10.0.0.0 netmask 255.255.255.0 dev enp6s0 | ip route add 10.0.0.0/24 dev enp6s0 | | ||
+ | | route add default gw 10.0.0.254 | ip route add default via 10.0.0.254 | | ||
+ | | arp -a | ip neigh | | ||
+ | | arp -v | ip -s neigh | | ||
+ | | arp -s 10.0.0.33 1:2:3:4:5:6 | ip neigh add 10.0.1.33 lladdr 1:2:3:4:5:6 dev enp6s0 | | ||
+ | | arp -i enp6s0 -d 10.0.0.254 | ip neigh del 10.0.0.254 dev wlp7s0 | | ||
=====ipcs===== | =====ipcs===== | ||
Line 1282: | Line 1482: | ||
=====lastb===== | =====lastb===== | ||
- | Comme '' | + | **lastb** (last bad logins) |
+ | <code bash> | ||
+ | # lastb | ||
+ | toto | ||
+ | titi | ||
+ | toto | ||
+ | tata | ||
+ | tatoo ssh: | ||
+ | </ | ||
=====lastlog===== | =====lastlog===== | ||
Line 1379: | Line 1586: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
<code bash> | <code bash> | ||
Line 1454: | Line 1662: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
=====lspci===== | =====lspci===== | ||
Line 1634: | Line 1842: | ||
=====netcat===== | =====netcat===== | ||
- | Permet | + | Netcat (nc) est un couteau-suisse réseau qui permet |
* '' | * '' | ||
* '' | * '' | ||
Line 1641: | Line 1849: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | |||
+ | * pour tester si des ports sont ouverts sur une machine distante: | ||
+ | <code bash> | ||
+ | # -z = on n' | ||
+ | # -v = mode verbeux | ||
+ | # -t = TCP (-u pour UDP) | ||
+ | # 80: numéro de port à tester | ||
+ | $ nc -zvt 10.0.0.1 80 | ||
+ | Connection to 10.0.0.1 80 port [tcp/ssh] succeeded! | ||
+ | |||
+ | # On peut remplacer un port par une liste de port (séparés par des espaces : "80 443") | ||
+ | # ou une plage de ports (" | ||
+ | # Par défaut on teste en TCP ; pour utiliser UDP, ajouter le paramètre -u | ||
+ | # (ex ici pour tester le DNS et le SYSLOG) : | ||
+ | $ nc -zv 10.0.0.1 -u 53 514 | ||
+ | </ | ||
* Créer un automate qui renvoie au client tout ce que ce dernier envoie dans la socket : | * Créer un automate qui renvoie au client tout ce que ce dernier envoie dans la socket : | ||
Line 1688: | Line 1912: | ||
Permet d' | Permet d' | ||
- | | + | <code bash> |
- | | + | nslookup google.fr |
- | | + | |
- | + | | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | Cet outil est " | + | |
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | # pour interroger un serveur (ici 10.1.1.24) en particulier : | ||
+ | nslookup google.fr 10.1.1.24 | ||
+ | # utiliser nslookup en mode interactif | ||
+ | nslookup | ||
+ | > server 10.1.1.24 | ||
+ | Default server: 10.1.1.24 | ||
+ | Address: 10.1.1.24# | ||
+ | > google.fr | ||
+ | Server: | ||
+ | Address: | ||
+ | |||
+ | Non-authoritative answer: | ||
+ | Name: | ||
+ | Address: 216.58.209.227 | ||
+ | </ | ||
+ | |||
+ | Cet outil est " | ||
+ | |||
+ | |||
+ | =====NTP===== | ||
+ | |||
+ | NTP est le protocole de synchronisation d' | ||
+ | |||
+ | / | ||
+ | <code bash> | ||
+ | # spécification des serveurs sur lesquels se synchroniser | ||
+ | pool 0.fr.pool.ntp.org iburst | ||
+ | pool 0.ch.pool.ntp.org iburst | ||
+ | pool 0.debian.pool.ntp.org iburst | ||
+ | pool 1.debian.pool.ntp.org iburst | ||
+ | pool 2.debian.pool.ntp.org iburst | ||
+ | pool 3.debian.pool.ntp.org iburst | ||
+ | |||
+ | # si besoin, préciser les clients qui peuvent se synchroniser sur nous | ||
+ | restrict 127.0.0.1 | ||
+ | restrict ::1 | ||
+ | </ | ||
+ | |||
+ | Forcer la mise à jour de la date sur un serveur en particulier : '' | ||
+ | |||
+ | Vérifier le bon fonctionnement : | ||
+ | <code bash> | ||
+ | ntpq -p | ||
+ | | ||
+ | ============================================================================== | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | # | ||
+ | -178.249.167.0 ( 195.66.241.2 | ||
+ | *eudyptula.init7 162.23.41.10 | ||
+ | -smtp1.xipalia.c 193.190.230.65 | ||
+ | -bart.nexellent. 194.242.34.149 | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | -tick.ntp.infoma .GPS. 1 u | ||
+ | +sunflower.spide 145.238.203.14 | ||
+ | -ip139.ip-5-196- 145.238.203.14 | ||
+ | +cluster009.lino 193.190.230.66 | ||
+ | # | ||
+ | -2001: | ||
+ | +2001: | ||
+ | x78.192.0.158 (c .DCFa. | ||
+ | # | ||
+ | # | ||
+ | </ | ||
=====passwd===== | =====passwd===== | ||
Line 1745: | Line 2038: | ||
* '' | * '' | ||
+ | ====fping==== | ||
+ | [[https:// | ||
+ | <code bash> | ||
+ | # va PINGer 5 fois (-c5) le réseau 10.1.2.200/ | ||
+ | # va faire une résolution DNS inversée des IPs (-n) et n' | ||
+ | fping -c5 -g 10.1.2.200/ | ||
+ | test201.local | ||
+ | test202.local | ||
+ | test203.local | ||
+ | test204.local | ||
+ | test205.local | ||
+ | test206.local | ||
+ | |||
+ | # ici les IPs .203, .204 et .206 ne répondent pas | ||
+ | </ | ||
=====pmap===== | =====pmap===== | ||
Line 1800: | Line 2108: | ||
</ | </ | ||
+ | =====printf===== | ||
+ | |||
+ | Comme [[informatique: | ||
+ | <code bash> | ||
+ | a=12; b=34; c=' | ||
+ | printf 'a=%i, b=%i, c=%s\n' | ||
+ | a=12, b=34, c=toto | ||
+ | </ | ||
+ | '' | ||
+ | |||
+ | Pour formater l' | ||
+ | <code bash> | ||
+ | a=12; b=34; c=' | ||
+ | # on aligne $a et $b à droite sur 5 colonnes, et $c à gauche sur 20 colonnes | ||
+ | printf ' | ||
+ | a= 12, b= 34, c=toto | ||
+ | </ | ||
+ | |||
+ | ====Afficher x fois le même caractère==== | ||
+ | |||
+ | Pour afficher 10 fois le caractère " | ||
+ | <code bash> | ||
+ | printf ' | ||
+ | ========== | ||
+ | </ | ||
=====ps===== | =====ps===== | ||
Line 1824: | Line 2157: | ||
</ | </ | ||
+ | Afficher les processus les plus consommateurs de mémoire/de CPU : | ||
+ | <code bash> | ||
+ | ps -eo pmem, | ||
+ | ps -eo pmem, | ||
+ | </ | ||
=====pstree===== | =====pstree===== | ||
Line 1864: | Line 2202: | ||
**pwck** vérifie l´intégrité des fichiers de mots de passe. Il vaut mieux le lancer en root car il doit accéder notamment à ''/ | **pwck** vérifie l´intégrité des fichiers de mots de passe. Il vaut mieux le lancer en root car il doit accéder notamment à ''/ | ||
+ | |||
+ | =====readarray===== | ||
+ | |||
+ | Créer un tableau à partir d'un flux ou d'un fichier, d'une case par ligne. | ||
+ | <code bash> | ||
+ | readarray -t T_LINES < fichier.txt | ||
+ | |||
+ | cat fichier.txt | readarray -t T_LINES | ||
+ | </ | ||
+ | |||
=====readlink===== | =====readlink===== | ||
Line 1901: | Line 2249: | ||
* Ajouter l' | * Ajouter l' | ||
<code bash> | <code bash> | ||
- | route add default gw 192.168.0.1 | + | route add default gw 192.168.0.1 |
</ | </ | ||
Line 1925: | Line 2273: | ||
<code bash> | <code bash> | ||
echo " | echo " | ||
+ | </ | ||
+ | |||
+ | Pour ajouter des routes persistantes, | ||
+ | * __sous Redhat/ | ||
+ | <code bash / | ||
+ | 10.0.211.0/ | ||
+ | </ | ||
+ | * sous Debian, il faut ajouter une ligne dans le fichier : | ||
+ | <code bash / | ||
+ | up route add -net 10.0.211.0/ | ||
</ | </ | ||
Line 1955: | Line 2313: | ||
=====sed===== | =====sed===== | ||
- | **S**tream **ED**itor est une commande qui permet d' | + | **S**tream **ED**itor est une commande qui permet d' |
+ | <code bash> | ||
+ | # afficher le contenu du fichier en remplaçant toto par titi | ||
+ | cat fichier.txt | sed ' | ||
- | * Filtre pour remplacer une IP par X.X.X.X | + | # même chose en plus simple |
+ | sed ' | ||
+ | </ | ||
+ | |||
+ | Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d' | ||
<code bash> | <code bash> | ||
- | sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1, | + | # remplacer toto par titi dans le fichier (sans afficher le résultat) |
+ | sed -i 's/toto/ | ||
+ | # idem, mais en sauvegardant le fichier original avec l' | ||
+ | # cela créra 2 fichiers : fichier.txt (modifié) et fichier.txt.bck (l' | ||
+ | sed -i".bck" | ||
</ | </ | ||
- | | + | <WRAP center round important 60%> |
+ | Les caractères suivants doivent être échappés (préfixés par un '' | ||
+ | </ | ||
+ | |||
+ | * Afficher la 3ème ligne d'un fichier | ||
+ | Afficher la 3ème ligne d'un fichier : | ||
<code bash> | <code bash> | ||
- | echo "La PhraSe avec Des LeTTres | + | sed -n '3p' < |
- | la phrase avec des lettres | + | sed '3!d' |
- | # et respectivement | + | sed ' |
+ | </code> | ||
+ | |||
+ | | ||
+ | <code bash> | ||
+ | sed -n ' | ||
+ | </code> | ||
+ | |||
+ | * Afficher les lignes de 2 à 5 d'un fichier ; alternative : afficher les lignes de 2 jusqu' | ||
+ | <code bash> | ||
+ | sed -n '2,5p' < | ||
+ | sed -n '2,/sys/p' | ||
</ | </ | ||
Line 1975: | Line 2360: | ||
(il s'agit d'un " | (il s'agit d'un " | ||
- | * Afficher | + | * Afficher |
<code bash> | <code bash> | ||
- | sed -i" | + | sed '/ |
</ | </ | ||
- | * Afficher un fichier à partir de la 3ème ligne : | + | * Supprimer |
<code bash> | <code bash> | ||
- | sed -n '3,$p' | + | sed -i '5d' |
</ | </ | ||
- | * Afficher | + | * Supprimer |
- | <code bash>sed -n '2,5p' | + | <code bash>sed -i '/toto/d' |
- | <code bash> | + | |
+ | * Supprimer les lignes __ne contenant pas__ toto dans le fichier toto.txt | ||
+ | <code bash>sed -i '/toto/!d' | ||
+ | |||
+ | * Supprimer les lignes vides | ||
+ | <code bash>sed '/^$/d' | ||
* supprimer ('' | * supprimer ('' | ||
Line 1993: | Line 2383: | ||
sed -e ' | sed -e ' | ||
</ | </ | ||
+ | |||
+ | * Remplacer les adresses IP par X.X.X.X | ||
+ | <code bash> | ||
+ | sed " | ||
+ | </ | ||
+ | |||
+ | * Convertir les minuscules en majuscules (ou inversement) | ||
+ | <code bash> | ||
+ | echo "La PhraSe avec Des LeTTres n' | ||
+ | la phrase avec des lettres n' | ||
+ | # et respectivement ' | ||
+ | </ | ||
+ | (Le "&" | ||
* On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules : | * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules : | ||
Line 2054: | Line 2457: | ||
ls --color=y | sed ' | ls --color=y | sed ' | ||
</ | </ | ||
+ | |||
+ | ====Supprimer les lignes paires==== | ||
+ | |||
+ | <code bash> | ||
+ | sed ' | ||
+ | </ | ||
+ | (en commençant à la ligne 2, puis toutes les 2 lignes ('' | ||
+ | |||
+ | Équivalent : en partant de la première ligne, puis toutes les 2 lignes ('' | ||
+ | <code bash> | ||
+ | sed -n ' | ||
+ | </ | ||
+ | |||
+ | Autres équivalents : | ||
+ | <code bash> | ||
+ | sed -n ' | ||
+ | sed -n ' | ||
+ | </ | ||
+ | |||
====Liens utiles==== | ====Liens utiles==== | ||
Line 2158: | Line 2580: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
+ | * '' | ||
Exemple : | Exemple : | ||
Line 2223: | Line 2647: | ||
ss dport \> 1024 | ss dport \> 1024 | ||
</ | </ | ||
+ | =====stat===== | ||
+ | |||
+ | Commande permettant d' | ||
+ | |||
+ | <code bash> | ||
+ | # Affichage des informations du fichier toto.txt | ||
+ | $ stat toto.txt | ||
+ | Fichier : « toto.txt » | ||
+ | | ||
+ | Périphérique : | ||
+ | Accès : (0644/ | ||
+ | | ||
+ | Modif. : 2018-08-30 18: | ||
+ | Changt : 2018-08-30 17: | ||
+ | Créé : - | ||
+ | </ | ||
+ | |||
+ | On peut filtrer le résultat par type d' | ||
+ | <code bash> | ||
+ | # N' | ||
+ | $ stat -c " | ||
+ | 2018-08-30 18: | ||
+ | |||
+ | # Afficher la taille du fichier (ici il est vide) | ||
+ | $ stat -c " | ||
+ | 0 | ||
+ | </ | ||
+ | |||
=====strings===== | =====strings===== | ||
Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte). | Affiche les chaines de caractères imprimable dans le fichier spécifié (c'est donc peu utile sur les fichiers texte). | ||
- | | + | <code bash> |
+ | strings toto.exe | ||
+ | </ | ||
=====su===== | =====su===== | ||
Line 2276: | Line 2729: | ||
=====tar===== | =====tar===== | ||
- | Un outil d' | + | Un outil d' |
- | par exemple on veut archiver | + | |
- | tar cvf toto.tar ./toto | + | |
- | (// | + | |
- | On peut archiver | + | <code bash> |
- | tar czvf toto.tar.gz ./toto | + | # pour archiver le répertoire ./toto/ et tout son contenu |
+ | # (toto.tar désigne le nom de l'archive qu'on veut créer, il doit avoir l' | ||
+ | tar cf toto.tar ./toto | ||
- | Plus tar__d__, pour le désarchiver : | + | # archiver ET compresser le fichier grâce à gunzip (-z) ou bunzip (-y) : |
- | tar zxf toto.tar | + | # -c pour compresser, -v pour un affichage verbeux, -f pour préciser |
+ | tar cvzf toto.tar.gz ./toto | ||
+ | # extraire (-x) le contenu d'une archive gunzip (-z) : | ||
+ | tar zxf toto.tar | ||
+ | |||
+ | # exclure le répertoire " | ||
+ | tar cfz toto.tar --exclude=./ | ||
+ | |||
+ | # équivalent en listant les fichiers à exclure dans un fichier externe | ||
+ | cat exclude-fic.txt | ||
+ | ./ | ||
+ | ./toto/dir | ||
+ | |||
+ | tar cfz toto.tar --exclude-from exclude-fic.txt ./toto | ||
+ | </ | ||
+ | |||
+ | =====tee===== | ||
+ | |||
+ | Permet de copier l' | ||
+ | <code bash> | ||
+ | $ echo toto | tee fic.log | ||
+ | toto | ||
+ | |||
+ | $ echo titi | tee -a fic.log | ||
+ | titi | ||
+ | |||
+ | $ cat fic.log | ||
+ | toto | ||
+ | titi | ||
+ | </ | ||
=====telnet===== | =====telnet===== | ||
Line 2295: | Line 2776: | ||
Le port (ici 80) est facultatif (par défaut 23). | Le port (ici 80) est facultatif (par défaut 23). | ||
+ | ====Envoi d'un mail==== | ||
+ | |||
+ | Pour envoyer un mail en SMTP via l' | ||
+ | <code bash> | ||
+ | # lancer l' | ||
+ | $ telnet | ||
+ | |||
+ | telnet> open 10.1.1.55 25 | ||
+ | Trying 10.1.1.55... | ||
+ | Connected to 10.1.1.55. | ||
+ | Escape character is ' | ||
+ | 220 exemple.fr ESMTP Server Ready. Tue, 9 Apr 2019 14:39:14 +0200 | ||
+ | |||
+ | EHLO toto | ||
+ | 250-exemple.fr Hello client.exemple.fr [10.1.2.201], | ||
+ | 250-ENHANCEDSTATUSCODES | ||
+ | 250-PIPELINING | ||
+ | 250-EXPN | ||
+ | 250-VERB | ||
+ | 250-8BITMIME | ||
+ | 250-SIZE 25000000 | ||
+ | 250-DSN | ||
+ | 250-ETRN | ||
+ | 250-DELIVERBY | ||
+ | 250 HELP | ||
+ | |||
+ | MAIL from: | ||
+ | 250 2.1.0 toto@exemple.fr... Sender ok | ||
+ | |||
+ | RCPT to: | ||
+ | 250 2.1.5 dest@domaine.fr... Recipient ok | ||
+ | |||
+ | DATA | ||
+ | 354 Enter mail, end with " | ||
+ | |||
+ | Subject: Test de mail | ||
+ | Ceci est un test de msg | ||
+ | . | ||
+ | 250 2.0.0 x39CdEPw012136 Message accepted for delivery | ||
+ | |||
+ | QUIT | ||
+ | 221 2.0.0 exemple.fr closing connection | ||
+ | Connection closed by foreign host. | ||
+ | </ | ||
+ | |||
+ | Pour fermer une connexion telnet qui ne répond plus ou dont on n' | ||
=====time===== | =====time===== | ||
Permet de calculer le temps d' | Permet de calculer le temps d' | ||
- | | + | <code bash> |
- | + | time sleep 3 | |
- | real 0m3.015s | + | |
- | | + | |
- | | + | |
+ | </ | ||
La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//). | La commande retourne le temps réel (//real//), le temps en mode utilisateur (//user//) et le temps en mode système (//sys//). | ||
+ | Pour mesurer le temps de plusieurs commandes pipées (chainées avec un pipe '' | ||
+ | <code bash> | ||
+ | time -f " | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====timeout===== | ||
+ | |||
+ | **timeout** permet de lancer une commande et de la killer si elle n'est pas terminée dans le laps de temps indiqué. Syntaxe : '' | ||
+ | |||
+ | <code bash> | ||
+ | timeout 10s ping google.fr | ||
+ | </ | ||
=====top===== | =====top===== | ||
Line 2329: | Line 2870: | ||
</ | </ | ||
=====traceroute===== | =====traceroute===== | ||
- | [[http:// | ||
- | L' | ||
- | Certains routeurs ne communiquent pas d'informations | + | [[http:// |
+ | L' | ||
+ | |||
+ | Certains routeurs ne communiquent pas d'information | ||
<code bash> | <code bash> | ||
traceroute google.fr | traceroute google.fr | ||
Line 2351: | Line 2893: | ||
</ | </ | ||
+ | Par défaut le protocole UDP/33434-5 est utilisé mais il peut être filtré. On peut donc demander au traceroute de changer de port ('' | ||
+ | =====trap===== | ||
+ | |||
+ | **trap** permet d' | ||
+ | * '' | ||
+ | <code bash> | ||
+ | 1) SIGHUP | ||
+ | 6) SIGABRT | ||
+ | 11) SIGSEGV | ||
+ | 16) SIGSTKFLT | ||
+ | 21) SIGTTIN | ||
+ | 26) SIGVTALRM | ||
+ | 31) SIGSYS | ||
+ | 38) SIGRTMIN+4 | ||
+ | 43) SIGRTMIN+9 | ||
+ | 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 | ||
+ | 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 | ||
+ | 58) SIGRTMAX-6 | ||
+ | 63) SIGRTMAX-1 | ||
+ | </ | ||
+ | Le code '' | ||
+ | * '' | ||
+ | |||
+ | Par exemple, pour afficher un message lors d'une erreur provoquant un EXIT, ainsi que la ligne qui la génère : | ||
+ | <code bash> | ||
+ | trap "echo Erreur à la ligne $LINENO" | ||
+ | </ | ||
+ | |||
+ | C'est utile pour effacer les fichiers temporaires en cas d' | ||
+ | <code bash> | ||
+ | trap "rm -f $TMPFIC1 $TMPFIC2 $TMPFIC3" | ||
+ | </ | ||
=====type===== | =====type===== | ||
- | **type** est une commande interne de bash qui indique comment chaque | + | **type** est une commande interne de bash qui permet de savoir à quoi correspond un "nom" |
- | * '' | ||
<code bash> | <code bash> | ||
- | # lister toutes les fonctions | + | type -t ls |
- | declare | + | builtin |
- | [..] | + | |
- | declare | + | type -t l |
+ | alias | ||
+ | |||
+ | type l | ||
+ | l is aliased to ' | ||
+ | |||
+ | type -t ssh | ||
+ | | ||
+ | type ssh | ||
+ | ssh is hashed (/ | ||
- | # afficher le code de celle-ci (équivalent de " | ||
type -a titreterm | type -a titreterm | ||
- | titreterm | + | titreterm |
- | titreterm () | + | |
- | { | + | { |
if [[ $# -eq 1 && -n $1 ]]; then | if [[ $# -eq 1 && -n $1 ]]; then | ||
echo -ne " | echo -ne " | ||
fi | fi | ||
- | } | + | } |
</ | </ | ||
+ | |||
+ | Voir aussi : [[informatique: | ||
=====update-rc.d===== | =====update-rc.d===== | ||
Line 2480: | Line 3063: | ||
=====vi===== | =====vi===== | ||
- | Un éditeur de texte en mode texte plus ou moins fourni | + | Vi (abréviation de **vi**sual) est un éditeur de texte en mode console présent |
- | =====vipw===== | + | =====vi*===== |
- | C'est la commande à utiliser pour éditer, avec vi, le fichier | + | Composés du préfixe **vi** (comme d'éditeur de texte) suivi de la commande à configurer, **vipw**, **vigr** ou **visudo** sont des " |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | Leur utilisation est vivement recommandée dans la mesure où, souvent, leur action ne se limite pas à l' | ||
+ | * de mettre à jour d' | ||
+ | * de vérifier la syntaxe pour ne pas bloquer le système en cas d' | ||
+ | L' | ||
+ | |||
+ | Au passage, pour configurer l' | ||
+ | * **update-alternatives --config editor** sous Debian | ||
+ | * **select-editor** (utilise la variable $SELECTED_EDITOR, | ||
+ | * éditer le fichier ~/.bashrc pour y ajouter l'une des lignes suivantes : | ||
+ | <code bash> | ||
+ | export VISUAL=vi | ||
+ | export EDITOR=vi | ||
+ | </ | ||
=====vmstat===== | =====vmstat===== | ||
Line 2588: | Line 3187: | ||
Affiche les utilisateurs connectés à la machine, et depuis quand. | Affiche les utilisateurs connectés à la machine, et depuis quand. | ||
- | | + | <code bash> |
- | | + | who |
- | + | | |
- | Permet aussi d' | + | dude |
- | | + | toto |
- | run-level 3 May 31 11:36 | + | |
+ | # afficher le runlevel précédent et courant (comme la commande '' | ||
+ | who -r | ||
+ | | ||
+ | # afficher uniquement l' | ||
+ | who -m | ||
+ | | ||
+ | </ | ||
=====xargs===== | =====xargs===== | ||
Line 2608: | Line 3213: | ||
permet de récupérer le pid de // | permet de récupérer le pid de // | ||
+ | Autre use case, en utilisant les paramètres '' | ||
+ | <code bash> | ||
+ | echo -ne ' | ||
+ | cat toto | xargs -L3 -P2 echo | ||
+ | 1 2 3 | ||
+ | 4 | ||
+ | </ | ||
+ | C'est utile pour des opérations plus CPUvore comme le calcul de hash MD5 par ex: | ||
+ | <code bash> | ||
+ | ls | ||
+ | tata toto | ||
+ | find . -maxdepth 1 -type f -print0 | xargs -L1 -P4 -0 md5sum >> md5sums | ||
+ | |||
+ | cat md5sums | ||
+ | b4af4c692f2a8c7dda9abc8ee657997d | ||
+ | 257cde944bf50d4fe05001bc33dd0ca4 | ||
+ | e5084550439c3c39e1b0e53b47018058 | ||
+ | </ | ||
+ | =====yum===== | ||
+ | |||
+ | <code bash> | ||
+ | # lister les fichiers installés par un package : | ||
+ | # (cette cmd est installée par le package yum-utils) | ||
+ | repoquery -l package | ||
+ | |||
+ | # activer tous les repos pour une recherche : | ||
+ | yum --enablerepo=* search pdsh | ||
+ | |||
+ | # installer un rpm local : | ||
+ | yum localinstall pdsh-rcmd-rsh-2.31-1.el7.x86_64.rpm pdsh-rcmd-ssh-2.31-1.el7.x86_64.rpm pdsh-2.31-1.el7.x86_64.rpm | ||
+ | </ | ||
===== Liens externes ===== | ===== Liens externes ===== | ||
* http:// | * http:// | ||
* http:// | * http:// |
informatique/linux/commandes_linux.txt · Last modified: 2024/04/05 06:58 by pteu