Un .bashrc pratique, avec historique et autocompletion

• Pour ajouter l’autocompletion :
# Case insensitive
bind "set completion-ignore-case on"

• Pour ajouter l’historique :
# History search
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

Ensuite, pour que ces changement prennent effet, depuis le home (que l’on peut retrouver en tapant cd dans le terminal), taper :
source .bashrc

Petites notes de commandes shell

• empty trash on Mac OS X using Terminal:
rm -rf ~/.Trash/*
Sometimes you need to force it so use a sudo command:
sudo rm -rf ~/.Trash/* (your password will be required).
____________________________________________________________________________
• Voir combien il reste d’espace disque :
df -h (-h pour avoir les données en octets)
____________________________________________________________________________
• Faire une recherche d’un mot dans Vim :
/puis_le_mot puis shift+n (« n » pour « next »)
____________________________________________________________________________
• Rechercher une chaine de caractère dans la sortie d’une autre instruction :
your_shell_command | grep the_string_you_are_looking_for
e.g.:
ps | grep IPA Here I am looking within the process currently running (using the command Process Status ps the process called IPA).
____________________________________________________________________________
• install top sur Mac Os X : avec Homebrew
brew install htop
____________________________________________________________________________
• pour compiler en C mon code contenu dans main.c (et en faire un executable que l’on appelle par exemple CCC : se mettre dans le dossier contenant le main.c puis :
gcc -o CCC main.c (sur Linux, il faut linker la bibliothèque Math donc ajouter -lm à la fin de la ligne de commande)

• ensuite, lancer le calcul depuis l’executable :
./CCC
(NB: on peut lancer le calcul avec un nohup ou encore en utilisant screen 😉
____________________________________________________________________________
• lancer une command line qui survit à la mort du shell qui l’a lancé :
nohup [ma ligne de commande, le programme que je veux lancer]

• si en plus on souhaite écrire la sortie de ce programme et l’écrire dans un fichier :
nohup ./mon_programme > sortie.txt

• si en revanche on veut écrire dans un fichier sortie sans afficher la sortie à l’écran et continuer d’utiliser le Terminal, alors :
nohup ./mon_programme > sortie.txt &

• si installé, on peut aussi utiliser screen puis on lance sa commande dedans. Ensuite pour détacher la fenêtre du terminal (de la commande qui tourne toujours) :
crtl+a crtl+d (ou crtl+a d)
puis pour re-attacher le terminal virtuel de screen depuis un autre terminal :
screen -rd

____________________________________________________________________________
• lorsque l’on écrit un script shell (.sh), il faut le rendre executable pour pouvoir le lancer. On utilise alors la commande chmod avec l’option +x:
chmod +x script.sh
Je reviendrai sur l’écriture de scripts shell plus tard.
____________________________________________________________________________
• Installation de SSHFS sur Mac OS:
1. Télécharger FUSE et l’installer : http://sourceforge.net/projects/osxfuse/files/
2. Télécharger SSHFS et l’installer : https://github.com/osxfuse/sshfs/releases
Plus d’explications (installation, désinstallation sur https://github.com/osxfuse/osxfuse/wiki/SSHFS)

• Utilisation de SSHFS
1. créer le lien entre les deux ordi. Là on crée l’image disque virtuelle qui lie mon home sur ingres et on le met dans testcluster/
mkdir testcluster
sshfs login@cluster: testcluster/
2. ensuite, on peut aller dans l’arborescence de Ingres (ordinateur distant) depuis mon mac (sur lequel je suis) en allant dans le dossier testcluster/
3. Parfois, on n’arrive pas à faire le sshfs car le dossier testcluster n’a pas été démonté. Il faut alors forcer le démontage du disque virtuel par la commande :
sudo diskutil umount force [path] (pour moi [path] = ~/testluster)
puis remonter à nouveau l’image virtuelle.
4. de manière générale je préconise de démonter le disque virtuel à chaque fois que l’on se déconnecte du réseau (et/ou que l’on éteint le mac).
____________________________________________________________________________
• Pour copier le même fichier dans plusieurs répertoires :
echo ./nomgenerique_*/ | xargs -n 1 cp datain.txt
Sinon, on peut aussi faire ça :
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Will copy file1 to dir1, dir2, and dir3. xargs will call cp 3 times to do this, see the man page for xargs for details.

De même, pour effacer plusieurs fichier (par exemple output*.txt) dans plusieurs répertoires :
echo ./nomgenerique_*/output* | xargs -n 1 rm
____________________________________________________________________________

Bonjour tout le monde !

Salut à tous !

Ce petit blog recense pour le moment des petites commandes shell (et autres choses du genre) que j’utilise au quotidien. Je vais les ajouter au fur et à mesure de mon apprentissage…

Pour ce qui est de ma configuration informatique, puisque cela se fait paraît-il : je suis sur Mac, j’ai un Macbook Pro 15′ fin 2013 sur lequel tourne Mac OS X 10.10.5 (Yosemite).

En ce qui me concerne, je suis doctorant en 3ème année au PMMH à l’ESPCI. Je travaille sur la rhéologie non-locale des milieux granulaires denses et secs. Une autre partie de mon travail de recherche porte sur l’acoustique dans les granulaires peu confinés et je participe ainsi à des campagnes de vols paraboliques (Airbus ZeroG) pour étudier la propagation acoustique dans de tels milieux.
Je fais donc de l’expérimental et que du numérique (C, Matlab, bases de Python). Vous pouvez en savoir plus sur ma page perso.

 

Bonne visite et n’hésitez pas à me contacter ou commenter les articles pour me corriger, partager vos connaissances ou autre !

 

Adrien