Ceci est une ancienne révision du document !
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.
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.
Il est possible de contaténer différents fichiers et de les afficher sur la sortie standard.
type <fichier1> <fichier2>
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.
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
.
# 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.cygcheck --check-setup
# 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.# 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.# 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
curl
-L
ou --location
refait la requête en cas de redirection.tar
-x
ou --extract
extrait les fichiers de l'archive.-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}
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}
Il faut modifier le fichier .ackrc et y ajouter :
# 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
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.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> # 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>