Outils pour utilisateurs

Outils du site


informatique:divers

Ceci est une ancienne révision du document !


Divers

Cette page est un fourre-tout de tout ce qui ne peut pas faire l'objet d'une page. Quand il y aura plusieurs choses qui pourront faire l'objet d'une page, elles seront déplacées.

Modifier le contenu d'un fichier avec Perl

perl -i -p -e 's/search/replacement/g' <fichier>
  • -i permet de modifier le fichier directement.
  • -p permet d'ajouter une boucle autour du programme à appliquer.
  • -e permet de saisir un programme d'une ligne.

Bien sur il est possible de le faire depuis l'interface web. C'est facile mais pas très rapide. Il est aussi possible de le faire depuis la console en utilisant CURL.

curl -u '<utilisateur>:<mot de passe>' 'http://192.168.0.1/reboot.xgi'

Et pour aller encore plus vite, pourquoi ne pas en faire un alias.

Concaténer des fichiers sous Windows

Il est possible de contaténer différents fichiers et de les afficher sur la sortie standard.

type <fichier1> <fichier2>

Déplacer des colonnes de données dans Excel

Il y a la méthode fastidieuse qui consiste à sélectionner les colonnes, les copier, insérer des colonnes vides, coller le contenu des copiées, supprimer les colonnes copiées.

Il y a aussi la méthode simple qui consiste à sélectionner les colonnes et les déplacer en appuyant sur la touche Shift et en cliquant sur l'icône de déplacement.

Relancer l'explorer de Windows

Après une mise à jour de Git pour Windows, j'ai eu ma barre de tâche qui a disparue. Il suffit de relancer le programme explorer.exe.

Copier un répertoire avec rsync

# Version courte
rsync -avz --delete --force <source> <destination>
 
# Version courte étendue
rsync -rlptgoDvz --delete --force <source> <destination>
 
# Version longue
rsync --archive --verbose --compress --delete --force <source> <destination>
 
# Version longue étendue
rsync --recursive --links --perms --times --group --owner --devices --specials --verbose --compress --delete --force <source> <destination>
  • -a ou --archive active le mode archive. Il est équivalent à -rlptgoD ou --recursive --links --perms --times --group --owner --devices --specials.
  • -v ou --verbose augmente la verbosité.
  • -z ou --compress compresse les fichiers durant le transfert.
  • --delete supprime les éléments présents dans le répertoire de destination qui n'existent pas dans le répertoire source.
  • --force force la suppression des répertoires même s'ils ne sont pas vides.
  • -r ou --recursive traite les répertoires récursivement.
  • -l ou --links copie les liens symboliques comme des liens symboliques.
  • -p ou --perms conserve les droits d'accès.
  • -t ou --times conserve les dates de modification.
  • -g ou --group conserve les groupes.
  • -o ou --owner conserve le propriétaire (uniquement pour le super utilisateur).
  • -D ou --devices --specials :
    • --devices conserve les fichiers device.
    • --specials conserve les fichiers spéciaux.

Afficher la liste des paquets installés avec Cygwin

cygcheck --check-setup

Télécharger des photos depuis un appareil photo

# Version courte
gphoto2 --auto-detect -P --skip-existing
 
# Version longue
gphoto2 --auto-detect --get-all-files --skip-existing
  • --auto-detect permet de lister les appareils connectés.
  • -P ou --get-all-files permet de récupérer l'ensemble des fichiers trouvés.
  • --skip-existing permet de ne télécharger que ceux absents.

Pour plus de détails sur l'utilisation de gphoto2, il y a la documentation officielle.

# Version courte
wget -r -l2 -H --spider -np -D ainw.org -nv -T 20 https://www.ainw.org
 
# Version longue
wget --recursive --level=2 --span-hosts --spider --no-parent --domains=ainw.org --no-verbose --timeout=20 http://www.ainw.org
  • -r ou --recursive active la récupération récursive.
  • -l ou --level détermine le niveau de récursion maximum.
  • -H ou --span-hosts étend la recherche sur d'autres hôtes.
  • --spider vérifie la présence des pages mais ne les télécharge pas.
  • -np ou --no-parent limite la recherche aux répertoires enfants.
  • -D ou --domains liste les domaines à suivre.
  • -nv ou --no-verbose affiche uniquement les messages d'erreurs et les informations minimales.
  • -T ou --timeout fixe la limite d'attente sur le réseau.

Extraire les images d'un site

# Version courte
wget -nd -r -P ainw.org -Ajpg,jpeg --reject-regex ".*thumb.*" -l2 https://www.ainw.org
 
# Version longue
wget --no-directories --recursive --directory-prefix ainw.org --accept jpg,jpeg --reject-regex ".*thumb.*" --level 2 https://www.ainw.org
  • -nd ou --no-directories ne cré pas l'arbre des répertoires.
  • -r ou --recursive active la récupération récursive.
  • -P ou --directory-prefix indique le répertoire d'enregistrement des fichiers téléchargés.
  • -A ou --accept conditionne la fin des noms des fichiers à télécharger.
  • --reject-regex rejette les URL ne respectant pas le motif.
  • -l ou --level détermine le niveau de récursion maximum.

Extraire des fichiers d'une archive en ligne

# Version courte
curl -L https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz | tar -x -J -f - -C /usr/local/sbin --strip 2 wkhtmltox/bin/wkhtmltopdf wkhtmltox/bin/wkhtmltoimage
 
# Version longue
curl --location https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz | tar --extract --xz --file - --directory /usr/local/sbin --strip 2 wkhtmltox/bin/wkhtmltopdf wkhtmltox/bin/wkhtmltoimage
  • Option de curl
    • -L ou --location refait la requête en cas de redirection.
  • Option de tar
    • -x ou --extract extrait les fichiers de l'archive.
    • -J ou --xz filtre l'archive avec xz.
    • -f ou --file utilise l'archive spécifiée.
    • -C ou --directory change le répertoire de travail avant toute opération.
    • --strip supprime les n répertoires précédant le fichier.

Cette syntaxe est obligatoire lors de l'écriture de fichier Docker. Dans le cas de l'utilisation dans bash, on peut écrire la commande différemment :

curl -L https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz | tar -x -J -f - -C /usr/local/sbin --strip 2 wkhtmltox/bin/wkhtmlto{pdf,image}

Renommer des fichiers

Pour renommer des fichiers numérotés avec espaces de la forme mon fichier 01.txt en 01-mon fichier 01.txt, on peut utiliser sed et mv de la manière suivante :

IFS=$'\n'
for SOURCE in *; do
    TARGET=$(echo $SOURCE| sed -e 's/\(.*\([0-9][0-9]\).*\)/\2-\1/')
    mv $SOURCE $TARGET
done
IFS=$' \t\n'

Il faut noter que l'utilisation de sed dans cette configuration est gourmande. Si on essaye de renommer mon fichier 01 - 55.txt, on aura le fichier 55-mon fichier 01 - 55.txt au lieu de 01-mon fichier 01 - 55.txt. Dans ce cas, il faudra utiliser la commande suivante :

IFS=$'\n'
for SOURCE in *; do
    TARGET=$(echo $SOURCE| sed -e 's/\([^0-9]*\([0-9][0-9]\).*\)/\2-\1/')
    mv $SOURCE $TARGET
done
IFS=$' \t\n'

Il existe aussi un script Perl qui permet de faire cela à l'aide d'expressions régulières. Il est installé par défaut sur certaines distributions (ex : Ubuntu) mais pas sur d'autres (ex : Archlinux). On peut l'utiliser de la manière suivante :

# Renommer "fichier1" et "fichier2" en "fichier1.bak" et "fichier2.bak"
rename 's/$/.bak/' fichier{1,2}
 
# Renommer "fichier 1" et "fichier 2" en "fichier1.bak" et "fichier2.bak"
rename 's/ ([1,2])$/$1.bak/' fichier\ {1,2}
 
# Renommer "premier gros fichier" en "premier.Gros.Fichier"
rename 's/ (.)/.\u$1/g' premier\ gros\ fichier
 
# Renommer "exemple d'un gros fichier" en "exemple.D.Un.Gros.Fichier"
rename 's/[ '"'"'](.)/.\u$1/g' exemple\ d\'un\ gros\ fichier
 
# Renommer "fichier1" et "fichier2" en "FICHIER1" et "FICHIER2"
rename 's/(.)/\u$1/g' fichier{1,2}
rename 'y/a-z/A-Z/' fichier{1,2}
 
# Renommer "FICHIER1" et "FICHIER2" en "fichier1" et "fichier2"
rename 's/(.)/\l$1/g' FICHIER{1,2}
rename 'y/A-Z/a-z/' FICHIER{1,2}

Sur Ubuntu, les commandes sont utilisables directement. Sur Archlinux, il faut préfixer toutes les commandes par perl-. Par exemple :

perl-rename 's/$/.bak/' fichier{1,2}
# au lieu de
rename 's/$/.bak/' fichier{1,2}

Ajouter un type dans ack

Il faut modifier le fichier .ackrc et y ajouter :

.ackrc
# Avec une seule extension
--type-set=api:ext:apib

# Avec plusieurs extensions
--type-set=markdown:ext:md,apib

On peut visualiser le nouveau type en lançant la commande :

ack --help=types

Pour plus d'information, voir ici et dans la documentation officielle

Extraire une liste de chaînes de caractères

J'ai envie de récupérer l'ensemble des codes d'erreurs générés par mon API pour pouvoir les documenter.

# Version courte
grep -roh --exclude="*.apib" "api.error[^'\"]*" src/
 
# Version longue
grep --recursive --only-matching --no-filename --exclude="*.apib" "api.error[^'\"]*" src/
  • -r ou --recursive traite les répertoires récursivement.
  • -o ou --only-matching affiche ce qui correspond à la recherche.
  • -h ou --no-filename supprime l'affichage des noms de fichiers.
  • --exclude exclus les fichiers correspondants lors du traitement.

Utiliser youtube-dl

C'est un outil en ligne de commande qui permet de télécharger des vidéos sur différents sites (youtube, …).

# Télécharger une vidéo
youtube-dl <url>
 
# Télécharger une liste de vidéos depuis un fichier
youtube-dl -a <file>
youtube-dl --batch-file <file>
 
# Télécharger une vidéo en spécifiant la meilleur qualité
youtube-dl -f best <url>
youtube-dl --format best <url>
 
# Télécharger une vidéo en spécifiant le format
youtube-dl -f mp4 <url>
youtube-dl --format mp4 <url>
informatique/divers.1550833096.txt.gz · Dernière modification : 2019/02/22 02:58 de alexis