informatique:linux:commandes_linux
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| informatique:linux:commandes_linux [2020/02/04 13:32] – [history] HISTSIZE et cie pteu | informatique:linux:commandes_linux [2025/09/15 14:10] (current) – [NetworkManager] 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 266: | Line 294: | ||
| Pour modifier la date d' | Pour modifier la date d' | ||
| <code bash> | <code bash> | ||
| - | chage -E YYYY-MM-DD < | + | chage -E YYYY-MM-DD < |
| </ | </ | ||
| + | ou lancer l' | ||
| + | <code bash> | ||
| + | chage < | ||
| + | </ | ||
| =====chattr/ | =====chattr/ | ||
| Line 390: | Line 421: | ||
| * '' | * '' | ||
| + | =====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 438: | Line 476: | ||
| # 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 443: | Line 484: | ||
| </ | </ | ||
| + | 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 497: | Line 547: | ||
| =====diff===== | =====diff===== | ||
| - | diff permet d' | + | diff permet d' |
| - | < | + | < |
| cd /tmp ; echo " | cd /tmp ; echo " | ||
| diff toto titi | diff toto titi | ||
| Line 506: | Line 556: | ||
| > titi | > titi | ||
| </ | </ | ||
| + | |||
| + | On peut ignorer des motifs avec l' | ||
| Un patchfile c'est un fichier qui contient la sortie d'un diff : | Un patchfile c'est un fichier qui contient la sortie d'un diff : | ||
| - | < | + | < |
| diff -u toto titi > toto_titi.patch | diff -u toto titi > toto_titi.patch | ||
| </ | </ | ||
| Pour patcher toto avec les modifications de titi on utilise la commande **patch** avec le patchfile : | Pour patcher toto avec les modifications de titi on utilise la commande **patch** avec le patchfile : | ||
| - | < | + | < |
| patch -b toto toto_titi.patch | patch -b toto toto_titi.patch | ||
| | | ||
| Line 534: | Line 586: | ||
| dig mx pteu.fr | dig mx pteu.fr | ||
| dig pteu.fr @9.9.9.9 | 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 698: | Line 766: | ||
| 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 742: | Line 811: | ||
| </ | </ | ||
| - | Liste des options | + | Liste des options |
| * '' | * '' | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| * '' | * '' | ||
| Line 778: | Line 848: | ||
| find . -regextype posix-egrep -iregex ' | find . -regextype posix-egrep -iregex ' | ||
| - | # supprimer toutes ces maudites miniatures Windows : | + | # afficher puis supprimer |
| - | find . -name Thumbs.db -exec rm {} \; | + | find . -name Thumbs.db |
| # attribuer des permissions à tous les sous-répertoires contenus dans le répertoire pics : | # attribuer des permissions à tous les sous-répertoires contenus dans le répertoire pics : | ||
| Line 804: | Line 874: | ||
| # 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 895: | Line 967: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| Il est possible d' | Il est possible d' | ||
| Line 1004: | Line 1079: | ||
| * '' | * '' | ||
| Exemple : | Exemple : | ||
| - | <code bash> | + | <file bash .bashrc> |
| HISTCONTROL=ignoredups: | HISTCONTROL=ignoredups: | ||
| HISTTIMEFORMAT=" | HISTTIMEFORMAT=" | ||
| HISTSIZE=10000 | HISTSIZE=10000 | ||
| HISTFILESIZE=20000 | HISTFILESIZE=20000 | ||
| - | </code> | + | </file> |
| On peut relancer une commande de l' | On peut relancer une commande de l' | ||
| Line 1075: | Line 1150: | ||
| ymir | ymir | ||
| </ | </ | ||
| + | |||
| + | =====iconv===== | ||
| + | |||
| + | iconv est un utilitaire de conversion et d' | ||
| + | <code bash> | ||
| + | # Supprimer les caractères accentués: | ||
| + | echo " | ||
| + | eei | ||
| + | </ | ||
| + | |||
| =====id===== | =====id===== | ||
| Line 1202: | Line 1287: | ||
| =====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 | # afficher les interfaces | ||
| Line 1230: | Line 1315: | ||
| </ | </ | ||
| + | É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 1487: | Line 1591: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| <code bash> | <code bash> | ||
| Line 1549: | Line 1654: | ||
| Pour lister le hardware de la machine. | Pour lister le hardware de la machine. | ||
| + | |||
| + | =====lslogins===== | ||
| + | |||
| + | **lslogins** affiche des informations sur les utilisateurs du système. | ||
| + | |||
| + | <code bash> | ||
| + | lslogins -u dude | ||
| + | Nom d' | ||
| + | UID: 1000 | ||
| + | Champ gecos: | ||
| + | Répertoire personnel: | ||
| + | Interpréteur de commandes: | ||
| + | Aucun identifiant: | ||
| + | Groupe primaire: | ||
| + | GID: 1000 | ||
| + | Groupes supplémentaires: | ||
| + | Identifiants de groupes supplémentaires: | ||
| + | Dernière connexion: | ||
| + | Dernier terminal: | ||
| + | Dernier nom d’hôte: | ||
| + | Silencieux: | ||
| + | Processus en cours d' | ||
| + | |||
| + | Dernières connexions : | ||
| + | 09:18 sshd[417179]: | ||
| + | 10:21 sshd[428104]: | ||
| + | 10:21 sshd[428104]: | ||
| + | </ | ||
| =====lsmod===== | =====lsmod===== | ||
| Line 1742: | Line 1875: | ||
| =====netcat===== | =====netcat===== | ||
| - | Permet | + | Netcat (nc) est un couteau-suisse réseau qui permet |
| * '' | * '' | ||
| * '' | * '' | ||
| Line 1749: | Line 1882: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | |||
| + | * 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 1793: | Line 1942: | ||
| * '' | * '' | ||
| + | =====NetworkManager===== | ||
| + | |||
| + | Utilitaire de configuration réseau utilisé par défaut sous certaines distribution Linux comme Debian 12 actuellement (2025), mais ça évolue. | ||
| + | |||
| + | Il existe plusieurs interfaces pour amnipuler cet outil: | ||
| + | * **nmcli** en ligne de commande | ||
| + | * **nmtui** interface semi-graphique (s' | ||
| + | * **NetworkManager** sous Gnome, KDE ou tout autre Windows Manager | ||
| + | |||
| + | Pour voir quel service réseau gère la conf réseau sur votre Linux: | ||
| + | <code bash> | ||
| + | echo "Quel service gère le réseau sur cette machine ?" | ||
| + | if systemctl is-active --quiet NetworkManager; | ||
| + | echo " | ||
| + | elif systemctl is-active --quiet systemd-networkd; | ||
| + | echo " | ||
| + | elif [ -d / | ||
| + | echo " | ||
| + | else | ||
| + | echo "Aucun apparemment!" | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | src: https:// | ||
| + | <code bash> | ||
| + | # Etat du service | ||
| + | systemctl status NetworkManager | ||
| + | |||
| + | # Editer fichier de conf / | ||
| + | vim / | ||
| + | TYPE=Ethernet | ||
| + | PROXY_METHOD=none | ||
| + | BROWSER_ONLY=no | ||
| + | BOOTPROTO=none | ||
| + | DEFROUTE=yes | ||
| + | IPV4_FAILURE_FATAL=no | ||
| + | IPV6INIT=no | ||
| + | NAME=ens18 | ||
| + | UUID=xxxx-xx | ||
| + | DEVICE=ens18 | ||
| + | ONBOOT=yes | ||
| + | IPADDR=192.168.0.1 | ||
| + | PREFIX=24 | ||
| + | GATEWAY=192.168.0.254 | ||
| + | DNS1=192.168.0.254 | ||
| + | DNS2=1.1.1.1 | ||
| + | IPV6_DISABLED=yes | ||
| + | |||
| + | # Appliquer la conf réseau | ||
| + | nmcli connection up ens18 | ||
| + | |||
| + | # Vérifier bonne application de la conf : | ||
| + | nmcli device show ens18 | ||
| + | ip a | ||
| + | ip route | ||
| + | </ | ||
| + | |||
| + | Quelques commandes de diagnostique: | ||
| + | <code bash> | ||
| + | nmcli device status | ||
| + | DEVICE | ||
| + | br0 bridge | ||
| + | docker0 | ||
| + | lo | ||
| + | enp1s0 | ||
| + | enp2s0 | ||
| + | wlp3s0 | ||
| + | veth8881b47 | ||
| + | |||
| + | nmcli connection show | ||
| + | NAME UUID TYPE DEVICE | ||
| + | br0 | ||
| + | docker0 | ||
| + | lo edd7c96b-1336-44f4-8106-1caf773d1d91 | ||
| + | br0 port 1 7f58ed28-4a46-47d9-8ef7-e32cc5663b76 | ||
| + | br0 port 2 920763f3-3e3e-46db-9231-09b1b58deeef | ||
| + | |||
| + | nmcli device wifi list | ||
| + | IN-USE | ||
| + | |||
| + | nmcli device show | ||
| + | GENERAL.DEVICE: | ||
| + | GENERAL.TYPE: | ||
| + | GENERAL.HWADDR: | ||
| + | GENERAL.MTU: | ||
| + | GENERAL.STATE: | ||
| + | GENERAL.CONNECTION: | ||
| + | GENERAL.CON-PATH: | ||
| + | IP4.ADDRESS[1]: | ||
| + | IP4.GATEWAY: | ||
| + | IP4.ROUTE[1]: | ||
| + | IP4.ROUTE[2]: | ||
| + | IP4.DNS[1]: | ||
| + | IP4.DOMAIN[1]: | ||
| + | IP6.ADDRESS[1]: | ||
| + | IP6.ADDRESS[2]: | ||
| + | IP6.GATEWAY: | ||
| + | IP6.ROUTE[1]: | ||
| + | IP6.ROUTE[2]: | ||
| + | IP6.ROUTE[3]: | ||
| + | </ | ||
| + | |||
| + | Configurer une interface en IP statique sur le device " | ||
| + | <code bash> | ||
| + | nmcli con mod " | ||
| + | nmcli con mod " | ||
| + | nmcli con mod " | ||
| + | nmcli con mod " | ||
| + | </ | ||
| =====nslookup===== | =====nslookup===== | ||
| Line 1992: | Line 2250: | ||
| </ | </ | ||
| + | =====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 2016: | Line 2299: | ||
| </ | </ | ||
| + | Afficher les processus les plus consommateurs de mémoire/de CPU : | ||
| + | <code bash> | ||
| + | ps -eo pmem, | ||
| + | ps -eo pmem, | ||
| + | </ | ||
| =====pstree===== | =====pstree===== | ||
| Line 2056: | Line 2344: | ||
| **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 2093: | Line 2391: | ||
| * 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 2117: | Line 2415: | ||
| <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 2130: | Line 2438: | ||
| .. à peu près similaire à la commande '' | .. à peu près similaire à la commande '' | ||
| + | |||
| + | =====scp===== | ||
| + | |||
| + | **Ssh CoPy** (SCP) est une commande qui permet de transférer des fichiers par une connexion SSH. | ||
| + | |||
| + | Sous Windows il existe les programmes '' | ||
| + | |||
| + | La syntaxe en CLI est la suivante : | ||
| + | <code bash> | ||
| + | scp fichier_local user@serveur.com:/ | ||
| + | </ | ||
| + | Il faut noter qu'un //path// relatif (sans le "/" | ||
| + | |||
| + | Exemples | ||
| + | <code bash> | ||
| + | # uploader le fichier local test.txt vers la home de l' | ||
| + | scp test.txt toto@serveur.com: | ||
| + | |||
| + | # télécharger dans le répertoire courant (.) test.txt, qui se trouve sur serveur.com | ||
| + | scp toto@serveur.com: | ||
| + | |||
| + | # uploader tout le dossier test vers le sous répertoire incoming : | ||
| + | scp -r test toto@serveur.com: | ||
| + | |||
| + | # 3 façon d' | ||
| + | scp 1.zip 2.zip serveur.com: | ||
| + | scp {1,2}.zip serveur.com: | ||
| + | scp *.zip serveur.com: | ||
| + | |||
| + | # télécharger plusieurs fichiers en une même commande SCP (ici 1.zip et 2.zip) | ||
| + | scp serveur.com:/ | ||
| + | |||
| + | # copier un fichier entre 2 serveurs distants (remote to remote) | ||
| + | scp toto@serveur1.com: | ||
| + | </ | ||
| + | |||
| + | Les paramètres possibles sont : | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| =====script===== | =====script===== | ||
| Line 2150: | Line 2498: | ||
| <code bash> | <code bash> | ||
| # afficher le contenu du fichier en remplaçant toto par titi | # afficher le contenu du fichier en remplaçant toto par titi | ||
| - | cat fichier.txt | sed ' | + | cat fichier.txt | sed ' |
| # même chose en plus simple | # même chose en plus simple | ||
| - | sed ' | + | sed ' |
| </ | </ | ||
| + | A noter que le délimiteur ''/'' | ||
| Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d' | Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d' | ||
| Line 2164: | Line 2513: | ||
| sed -i" | sed -i" | ||
| </ | </ | ||
| + | |||
| + | <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 (plusieurs méthodes) : | * Afficher la 3ème ligne d'un fichier (plusieurs méthodes) : | ||
| Line 2193: | Line 2546: | ||
| <code bash> | <code bash> | ||
| sed '/ | sed '/ | ||
| + | </ | ||
| + | |||
| + | * remplacer le motif " | ||
| + | <code bash> | ||
| + | sed '/ | ||
| + | </ | ||
| + | |||
| + | * Supprimer la 5eme ligne du fichier toto.txt | ||
| + | <code bash> | ||
| + | sed -i ' | ||
| </ | </ | ||
| Line 2281: | Line 2644: | ||
| <code bash> | <code bash> | ||
| 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 ' | ||
| + | </ | ||
| + | |||
| + | ====Remplacer un quote==== | ||
| + | |||
| + | Pour ne pas interpréter le quote il faut découper le sed pour qu'il concatène son contenu : | ||
| + | <code bash> | ||
| + | echo \' | ||
| + | ' | ||
| + | |||
| + | echo \' | ||
| + | " | ||
| + | </ | ||
| + | Ici sed va concaténer les 3 parts : | ||
| + | <code bash> | ||
| + | s/ | ||
| + | \' | ||
| + | /\"/g | ||
| </ | </ | ||
| ====Liens utiles==== | ====Liens utiles==== | ||
| Line 2387: | Line 2785: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | * '' | ||
| Exemple : | Exemple : | ||
| Line 2480: | Line 2879: | ||
| </ | </ | ||
| + | |||
| + | =====strace===== | ||
| + | |||
| + | Permet de débugguer les appels système d'un processus. | ||
| + | |||
| + | Liens : | ||
| + | * [[https:// | ||
| =====strings===== | =====strings===== | ||
| Line 2534: | Line 2940: | ||
| =====tar===== | =====tar===== | ||
| - | Un outil d' | + | Un outil d' |
| - | par exemple on veut archiver | + | |
| - | tar cvf toto.tar ./toto | + | |
| - | (// | + | |
| - | On peut archiver ET compresser le fichier grâce à gunzip (option | + | Options courantes de création d'archive: |
| - | | + | * ''-h / < |
| + | | ||
| + | * '' | ||
| + | * ''< | ||
| - | Plus tar__d__, | + | <code bash> |
| - | tar zxf toto.tar | + | # pour archiver |
| + | # (toto.tar désigne le nom de l' | ||
| + | tar cf toto.tar | ||
| + | # archiver ET compresser le fichier grâce à gunzip (-z) ou bunzip (-y) : | ||
| + | # -c pour compresser, -v pour un affichage verbeux, -f pour préciser le fichier de sortie | ||
| + | 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 2597: | Line 3036: | ||
| Connection closed by foreign host. | Connection closed by foreign host. | ||
| </ | </ | ||
| + | |||
| + | Pour fermer une connexion telnet qui ne répond plus ou dont on n' | ||
| + | |||
| =====time===== | =====time===== | ||
| Line 2612: | Line 3054: | ||
| <code bash> | <code bash> | ||
| time -f " | 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===== | ||
| Affiche la liste des processus et permet d' | Affiche la liste des processus et permet d' | ||
| + | =====touch===== | ||
| + | Permet de modifier les dates de dernier accès et de dernière modification d'un fichier. | ||
| + | |||
| + | <code bash> | ||
| + | # modifier les dates d' | ||
| + | touch toto.txt | ||
| + | # pour ne changer que l'une d' | ||
| + | |||
| + | # modifier avec la date spécifiée en option | ||
| + | touch -d " | ||
| + | </ | ||
| =====tr===== | =====tr===== | ||
| Line 2634: | Line 3097: | ||
| </ | </ | ||
| =====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 2656: | Line 3120: | ||
| </ | </ | ||
| + | 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 permet de savoir à quoi correspond un " | + | **type** est une commande interne de bash qui permet de savoir à quoi correspond un " |
| <code bash> | <code bash> | ||
| type -t ls | type -t ls | ||
| | | ||
| + | |||
| type -t l | type -t l | ||
| alias | alias | ||
| + | |||
| type l | type l | ||
| l is aliased to 'ls -p --color' | l is aliased to 'ls -p --color' | ||
| Line 2789: | Line 3287: | ||
| <code bash> | <code bash> | ||
| usermod -G "" | usermod -G "" | ||
| + | </ | ||
| + | |||
| + | Simplement ajouter un utilisateur dans un groupe existant : | ||
| + | <code bash> | ||
| + | usermod -aG GROUP USER | ||
| </ | </ | ||
| =====vi===== | =====vi===== | ||
| Line 2916: | Line 3419: | ||
| 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 2936: | Line 3445: | ||
| 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===== | =====yum===== | ||
informatique/linux/commandes_linux.1580823138.txt.gz · Last modified: 2020/02/04 13:32 by pteu