Je recopie ici la commande (un peu adaptée) pour obtenir :
.abc
./path
et ses sous-répertoires.find /path -regex ".*/.*\.abc" -exec ls -l {} \; | awk '{ Total += $5} END { print Total }'
Note : d'autres exemples existent avec la commande du
. Cependant l'option du -b
ne semble pas fonctionner sur tous les shells.
Les principales commandes curl sous le coude.
Pour mémoire.
Compresser avec 7z :
a
: option pour créer l'archive.-v123m
: [facultatif] l'archive sera découpée en parties de 123 Mo. Il y a aussi b (byte), k (kilo) et g (giga).-mx=9
: [facultatif] 7z utilisera le plus fort taux de compression (par défaut c'est 5). Pour l'archivage simple sans compression c'est 0. Il y a aussi 1, 3 et 7.archive.7z
: le nom de l'archive (les parties auront un suffixe 001, 002, ..., le cas échéant. Par exemple archive.7z.023
). L'archive sera créée dans le répertoire courant. Pour la créer ailleurs, il suffit de spécifier le chemin de l'archive : /mon/repertoire/archive.7z
.répertoire_à_compresser/
: comme son nom l'indique ...7z a -v123m -mx=9 archive.7z répertoire_à_compresser/
Décompresser avec 7z :
x
: pour extraire l'archive.archive.7z
: le nom de l'archive à décompresser. S'il s'agit d'une archive coupée en parties, il faut utiliser la partie 001.-o/target/directory/
: pas d'espace entre l'option et le chemin. Indique l'endroit où l'archive sera décompressée. Si cette option est absente, l'archive est décompressée dans le répertoire courant (celui où la commande est lancée).7z x /source/directory/archive.7z -o/target/directory/
Ah le Bash ! Ce vrai et beau langage qui continue son exécution même après qu'une erreur s'est produite.
Dans leur grande sagesse, les développeurs ont eu la bonne idée d'y associer un mode de débuggage, qui permet d'afficher la valeur des variables.
Quand on en a marre de débugger un script à coup de echo
toutes les deux lignes, cela s'avère pratique.
Pour l'activer :
1) On peut lancer tout le script en mode débug :
bash -x monScript.sh
2) On peut également intégrer l'option directement au niveau du shebang :
#!/usr/bin/env bash -x
3) On peut enfin ne placer qu'une partie du script en mode débug. Il suffit d'activer le mode avant le code suspect, et de le désactiver ensuite :
#!/usr/bin/env
# Le code qui ne pose pas de problème
...
# Activation du mode debug
set -x
# Le code foireux
...
# Désactivation du mode debug
set +x
# Code exécuté après
Il y a quelques autres options, mais en gros c'est l'idée.
La liste des commandes supportée par hadoop sur un système HDFS.
Pour télécharger le jdk d'oracle depuis leur saleté de site quand on n'a que le shell de disponible.
Je remet le script ici:
#!/bin/bash
# You must accept the Oracle Binary Code License
# http://www.oracle.com/technetwork/java/javase/terms/license/index.html
# usage: get_jdk.sh <jdk_version> <ext>
# jdk_version: 8(default) or 9
# ext: rpm or tar.gz
jdk_version=${1:-8}
ext=${2:-rpm}
readonly url="http://www.oracle.com"
readonly jdk_download_url1="$url/technetwork/java/javase/downloads/index.html"
readonly jdk_download_url2=$(
curl -s $jdk_download_url1 | \
egrep -o "\/technetwork\/java/\javase\/downloads\/jdk${jdk_version}-downloads-.+?\.html" | \
head -1 | \
cut -d '"' -f 1
)
[[ -z "$jdk_download_url2" ]] && echo "Could not get jdk download url - $jdk_download_url1" >> /dev/stderr
readonly jdk_download_url3="${url}${jdk_download_url2}"
readonly jdk_download_url4=$(
curl -s $jdk_download_url3 | \
egrep -o "http\:\/\/download.oracle\.com\/otn-pub\/java\/jdk\/[8-9](http://u[0-9]+|\+).*\/jdk-${jdk_version}.*(-|_)linux-(x64|x64_bin).$ext"
)
for dl_url in ${jdk_download_url4[@]}; do
wget --no-cookies \
--no-check-certificate \
--header "Cookie: oraclelicense=accept-securebackup-cookie" \
-N $dl_url
done
Je ne suis pas sûr que le débutant dont parle sebsauvage tire un grand bénéfice de l'apprentissage sur ce genre de shell. Il aurait mieux valu, à mon avis, adapter le shell bash classique en modifiant la coloration syntaxique. De plus, la suggestion de commande (à l'aide de la tabulation) existe déjà, ainsi que la recherche inversée (CTRL+R).
La petite phrase qui tue au milieu de l'article:
Cependant, c'est une excellente idée que d'avoir mis la configuration de l'outil dans une interface web je trouve. Je garde l'idée, pour faire ça en bash si l'envie me prend.
Une petite particularité des shell dérivés du shell sh.
Il existe la commande : (deux-points). Et elle ... ne fait rien! Ou plus exactement, elle agit comme un non-opérande.
Quand on la "lance", elle retourne un code d'erreur 0:
$ :
$ $?
$ 0
Alors à quoi ça sert?
Dans les vieilles version des shell, cette commande est utilisée en remplacement de la commande "true" (qui n'existait pas).
Alors on peut voir des choses comme:
if commande; then
:
else
autre-commande
fi
Ou avec un double pipe en fin de commande, pour envoyer un code d'erreur 0:
commande || :
Sympa à savoir si on travail à décortiquer de vieux scripts.
Edit: sur le même sujet https://superuser.com/questions/423980/colon-command-for-bash
Pour les avoir rencontrées plusieurs fois récemment, les commandes "pushd" et "popd" sous linux peuvent faire des adeptes (ou pas).
Pour faire court, ces deux commandes, en lien avec la commande "dirs", permettent de mémoriser une suite de répertoires sous la forme d'une pile.
On peut alors naviguer entre ces répertoires numérotés (cf "dirs -v"), comme on utiliserait des alias classiques.
La navigation se fait par exemple ainsi: "cd ~3" pour entrer dans le 4eme répertoire de la pile.
Cela peut être intéressant pour naviguer dans un shell. Mais dans un script je préfère encore créer des variables.