bash tips and tricks - RayGutt/PersonalWiki GitHub Wiki
Une fonction echodo à ajouter dans un script ou dans le .profile :
echodo()
{
echo "$*"
eval "$*"
}
$ echodo "ps -ef | grep scp"
ps -ef | grep scp
matthieu 29874 29849 0 11:27 pts/7 00:00:00 grep scp
(utile dans un script pour tracer la commande lancée).
- Un grep récursif sous Solaris :
find . | xargs grep "pattern"
find . -type f -exec grep "pattern" {} +
/usr/sfw/bin/ggrep -H -R -I "pattern" * # -I : ignore binary files
cp -p filename{,.old}
# is like:
cp -p filename filename.old
cp -p filename.{txt,old}
# is like:
cp -p filename.txt filename.old
cp -p filename{.txt,.`date '+%A'`}
# is like
cp -p filename.txt filename.mardi
f
for host in x{0..9}0
# or
for host in x{00..90..10}
# is like
for host in x00 x10 x20 x30 x40 x50 x60 x70 x80 x90
Permet d'éclater un gros fichier en plein de petits fichiers
split -d -l 20 input_file suffix_
# split input_file into files names suffix_01, suffix_02, etc of 20 lines each
~-/ représente le répertoire de travail précédent.
{code} $ pwd /repertoire_1 $ cd /repertoire_2 $ cp -p file ~-/ ### copie le fichier /repertoire_2/file dans le répertoire /repertoire_1 $ {code}
h3. Ré-exécution
"Control+." permet de récupérer le dernier argument de la commande précédente (très pratique mais ne fonctionne pas avec PuttY).
{code} $ mkdir dir_name $ cd C-. {code}
Récupérer les derniers arguments de la commande précédente.
{code} $ echo a b c d e a b c d e $ echo !!:2 echo b b {code}
ou encore :
{code} $ echo a b c d e a b c d e $ echo !!:3-$ echo c d e c d e {code}
h3. Une commande qu'elle est bien : csplit
Découper un gros fichier xml en plusieurs petits fichiers xml, en séparant au niveau d'une balise.
{code} csplit --digits=3 --prefix=output_file_prefix- input_file_to_split.xml /"<env:Envelope"/ * {code}
h1. Solaris
h2. Voir la ligne de commande complète qui a lancé un processus
{code} /usr/ucb/ps auxwww {code}
h1. Linux
h2. Trouver quel processus écoute sur un port TCP
{code} sudo lsof -i : {code} Pour Solaris, l'article suivant propose un script shell qui permet d'avoir l'information équivalente.
[http://confluence.apec.fr/display/ULv21/Articles+utiles#Articlesutiles-Trouverleprocessusqui%C3%A9couteunportTCPsursolaris%28%3DlsofsurLinux%29]