bash tips and tricks - RayGutt/PersonalWiki GitHub Wiki

echodo

Une fonction echodo à ajouter dans un script ou dans le .profile :

echodo()
{
 echo "$*"
 eval "$*"
}

Utilisation

$ 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

Brace expansion tricks

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

la commande split

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

Tilde expansion tricks

~-/ 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]

⚠️ **GitHub.com Fallback** ⚠️