bash and shell tips and tricks
Le but de cet l’article est de partager avec vous des petits “trucs”, que nous rédacteur geekfault utilisons dans nos consoles préférées tous les jours, et souhaitons échanger avec vous petits scarabées.
En faite mon idée est partie de ce petit délire que m’a sorti khemael :
tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"
Les astuces sont livrées de façon brute de fonderie.
Noob s’abstenir.
Nota Noob : Ne tappe pas une commande sur ton shell que tu ne comprends pas.
Some of madx’s tricks
Redirections
commande 1> fichier : Redirige stdout dans fichier
commande 2> fichier : Redirige stderr dans fichier
commande 2>&1 : Redirige stderr vers stdout
commande &> fichier : Redirige stdout et stderr dans fichier
commande 2> fichier : Redirige stderr dans fichier
commande 2>&1 : Redirige stderr vers stdout
commande &> fichier : Redirige stdout et stderr dans fichier
Fork bomb ! Warning, ne pas utiliser ça sur un serveur non protégé 🙂
f(){ f|f&};f
Bash and perl regexp
for i in * ; do mv "$i" "`echo $i | perl -pe 's/foo_regex/bar/' `"; done
for i in *.gif ; do convert "$i" "`echo $i | perl -pe 's/gif$/png/' `"; done
for i in *.gif ; do convert "$i" "`echo $i | perl -pe 's/gif$/png/' `"; done
scp resume
rsync --partial --progress -e ssh file user@host:/dir
Remote backup
tar -cv / | ssh user@host -T -e none "cat > backup.tar"
ssh root@host "tar -c /" | cat > backup.tar
ssh root@host "tar -c /" | cat > backup.tar
burning
mkisofs -v -R -r -V "dvd title" -o dvd.iso file1 file2 ...
cdrecord -v -dao -fs=500m -dev=/dev/sg1 -data dvd.iso
cdrecord -dev=/dev/sg1 blank=fast
cdrecord -v -dao -fs=500m -dev=/dev/sg1 -data dvd.iso
cdrecord -dev=/dev/sg1 blank=fast
perl regex sur un fichier
perl -pi -e 's/^(#)?TIMEZONE=.*$/TIMEZONE="Europe\/Paris"/' /etc/conf.d/clock
encode to theora/ogg
ffmpeg -i whatever.avi -f ogg -vcodec libtheora -vb 2000k -acodec libvorbis -ab 128k -y whatever.ogg
Sympa mais la Fork Bomb n’a pas vraiment lieu d’être là, surtout en 2eme position…
Lire ligne par ligne un fichier:
Lire un fichier ligne par ligne et stocker chaque “colonne” dans une variable (IFS correspond au délimiteur):
il semble que la commande pour youtube ne marche pas. une erreur “404” apparait.
(j’ai bien mis un champs dans la variable youtube_url)
et oui, la commande fork est un peu mal placé…
faudrait mettre un article pour “comment se protéger d’un fork” voir un lien pour en prévenir.
dans /etc/security/limits.conf :
# Limit user processes to 100 processus
* soft nproc 100
* hard nproc 100
# limits size of any one of users’ files” /etc/security/limits.conf
* hard fsize 50000
Grace à ça un utilisateur de ton système ne peux pas avoir plus de 100 processus.
Un utilisateur de ton système ne peut pas posséder de fichiers supérieur à 50Mo.
for i in * ; do mv “$i” “`echo $i | perl -pe ‘s/foo_regex/bar/’ `”; done
-> man rename
`echo $i | perl -pe ‘s/gif$/png/’ `
-> ${i/gif/png}
@noob
“-> ${i/gif/png}”
si le fichier s’appèle “gifts.gif” ça le renomme en “pngts.gif”
De plus l’exemple donné est très basique mais l’intérêt de passer par perl est d’utiliser la puissance des regex, exemple : s/\D*(\d+)\.(gif|bmp|jpg|svg)$/plop_\1.png/