« Le système d'exploitation GNU-Linux/Autres commandes utiles » : différence entre les versions
Ligne 19 : | Ligne 19 : | ||
Exemples : |
Exemples : |
||
* Pour remplacer toute « chaine1 » avec « chaine2 » dans le fichier « chemin1 » : |
* Pour remplacer toute « chaine1 » avec « chaine2 » dans le fichier « chemin1.txt » : |
||
<source lang=bash> |
<source lang=bash> |
||
sed -i 's/chaine1/chaine2/g' chemin1 |
sed -i 's/chaine1/chaine2/g' chemin1.txt |
||
</source> |
</source> |
||
* Pour substituer toute « chaine1 » dans le fichier « chemin1 » avec « chaine2 » et envoyer le résultat dans le fichier « chemin2 » : |
* Pour substituer toute « chaine1 » dans le fichier « chemin1.txt » avec « chaine2 » et envoyer le résultat dans le fichier « chemin2.txt » : |
||
<source lang=bash> |
<source lang=bash> |
||
sed 's/chaine1/chaine2/g' chemin1 > chemin2 |
sed 's/chaine1/chaine2/g' chemin1.txt > chemin2.txt |
||
</source> |
</source> |
||
Ligne 36 : | Ligne 36 : | ||
2015-11-03 23:54:03 |
2015-11-03 23:54:03 |
||
* Si erreur d’édition |
* Si erreur d’édition sous Windows : ^M, convertir avec : |
||
<source lang=bash> |
<source lang=bash> |
||
sed -i 's/\r//' chemin1 |
sed -i 's/\r//' chemin1 |
Version du 6 janvier 2020 à 16:44
Manipulation des flux et des fichiers textes
awk
La commande awk permet d'effectuer des manipulations sur des fichiers texte (ou un flux redirigé en entrée), dont notamment afficher une colonne particulière. Exemple :
$ dpkg -l | awk '{print $2}'
Cette commande dit à dpkg que l'on ne veut que la deuxième colonne.
sed
sed
est un utilitaire de traitement de données capable d'utiliser les expressions régulières.
Exemples :
- Pour remplacer toute « chaine1 » avec « chaine2 » dans le fichier « chemin1.txt » :
sed -i 's/chaine1/chaine2/g' chemin1.txt
- Pour substituer toute « chaine1 » dans le fichier « chemin1.txt » avec « chaine2 » et envoyer le résultat dans le fichier « chemin2.txt » :
sed 's/chaine1/chaine2/g' chemin1.txt > chemin2.txt
- Exemple de changement de format de date :
echo "03/11/2015 23:54:03" | sed -r "s/([0-9]+)\/([0-9]+)\/([0-9]+)/\3-\2-\1/g"
donne :
2015-11-03 23:54:03
- Si erreur d’édition sous Windows : ^M, convertir avec :
sed -i 's/\r//' chemin1
Trouver les commandes et les programmes
which
La commande which permet de connaitre dans quel répertoire se situe une commande (présente dans le PATH) :
$ which ls /bin/ls
updatedb et locate
La commande locate (ou slocate) permet une recherche rapide sur le système de fichier (suite à une indexation réalisée par updatedb).
$ locate maillog
warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old /etc/log.d/conf/logfiles/maillog.conf /var/log/maillog
Lorsque l'indexation a eu lieu il y a plus de 8 jours, la commande locate l'indique par un message.
Pour réindexer le système de fichier :
$ sudo updatedb ou # updatedb
Note sur les droits : updatedb utilise par défaut une base d'indexation globale. Il faut donc avoir les droits super-utilisateur pour mettre à jour l'indexation globale.
Outils réseaux
wget
La commande wget permet de télécharger un fichier depuis la ligne de commande :
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 --13:16:02-- http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 => `linux-2.6.23.tar.bz2' Résolution de www.kernel.org... 204.152.191.5, 204.152.191.37 Connexion vers www.kernel.org[204.152.191.5]:80...connecté. requête HTTP transmise, en attente de la réponse...200 OK Longueur: 45,488,158 [application/x-bzip2] 9% [===> ] 4,245,225 630.29K/s ETA 01:28
Pour utiliser un proxy, il faut définir la variable d'environnement http_proxy. Exemple :
http_proxy=monproxy:3128 wget http://apache.cict.fr/ant/source/apache-ant-1.7.0-src.tar.gz
wget sur ftp
wget est également compatible avec le protocole ftp. Il est ainsi capable de télécharger un fichier ou un ensemble de fichier depuis un ftp distant.
# wget ftp://login:passwd@ftp.host.net/thedir/*
Pour télécharger les sous-répertoire et fichiers on utilise l'option "-r".
L'option "-nH" permet de ne pas sauvegarder le nom d'hôte, autrement wget fera la copie vers un nouveau dossier créé portant le nom de l'hôte du serveur ftp.
Utilisation de base
Typiquement Wget s'utilise par la ligne de commande, avec un ou plusieurs URLs passés en paramètres. De nombreuses options permettent d'affiner le comportement souhaité (téléchargement multiple, suivre les liens...).
# Télécharge la page à la racine du site exemple.fr dans un ficher # nommé "index.html". wget http://www.exemple.fr/
# Télécharger les sources de Wget depuis le serveur FTP de GNU. wget ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz
Il est possible de télécharger automatiquement plusieurs URLs dans une hiérarchie de dossiers.
# Télécharge tous les fichiers *.gif d'un serveur web # (Les syntaxes de type glob, comme "wget http://www.serveur.com/dir/*.gif", ne marche que avec FTP) wget -e robots=off -r -l1 --no-parent -A.gif http://www.serveur.com/dir/
# Télécharge la page racine de exemple.fr, avec les images et les # feuilles de styles utilisées pour afficher la page, et convertit les # URLs internes pour fonctionner avec les copies locales. wget -p -k http://www.exemple.fr/
# Télécharge le contenu entier de exemple.fr wget -r -l 0 http://www.exemple.fr/
cURL
Pour appeler une page web en GET ou en POST.
Divers
file
La commande "file" permet de connaître le type du fichier indiqué en paramètre.
# file TmDedicatedServer_2006-05-30.tgz TmDedicatedServer_2006-05-30.tgz: gzip compressed data, was "fr.22968.0.TmDedicatedServer_20", from Unix, last modified: Tue May 30 13:41:35 2006
du
La commande "du" sert à afficher la taille des grandes espaces (partitions de disque et répertoires)
# du -sh /var/temp
L'option "s" affiche seulement un total pour chaque type d'argument.
L'option "h" permet l'affichage automatique de l'unité adaptée (Ko, Mo, Go...).
df
La commande df affiche l'espace occupé par les systèmes de fichiers.
# df -h
L'option "h" permet l'affichage automatique de l'unité adaptée (Ko, Mo, Go...).
timeout
Permet de lancer une commande qui se stoppera au plus tard après le temps défini. Ex :
timeout 60 test.sh