More is less

31/07/2014

Not FAQ linux

Table des matières

Dans cet article :

Le shell est bash

moa est le nom de l’utilisateur, son dossier personnel est /home/moa

Script bash acceptant un nombre variable d’arguments

Soit le script autant :

#!/bin/bash
# script autant
# récupération des arguments dans args
while [ $# -gt 0 ]
   args=$args' '$1
   shift
done
# exécution
echo $args
# on remplacera echo par le programme qu'on souhaite lancer

Exécution :

$ autant
$ autant un deux
un deux
$ autant un deux trois quatre
un deux trois quatre

Table des matières

Créer une clé USB bootable

C’est incroyable les conneries qu’on trouve sur le web !

  1. mettre la clé sur une prise usb de la machine (quand même !)
  2. en root : # fdisk -l. Vous allez trouver quelque chose comme /dev/sbd ou /deb/sbc.
  3. # copy machin-truc-7.1-zob.iso /dev/sbx où /dev/sbx est celui qui a été révélé par fdisk.
  4. # sync pour s’assurer que le tampon a été vidé.

C’est tout !

Table des matières

CDPATH

C’est pénible de devoir tout le temps taper cd /home/moa/src/python/ pour aller dans un dossier qu'on fréquente souvent. En ce moment, pour moi, c'est cpp plutôt que python.

Comme PATH, CDPATH est une variable d’environnement qui permet de mettre à disposition des chemins fréquemment utilisés par la commande cd. Elle a la même syntaxe que PATH : les chemins sont séparés par des deux points.

Exemple :

$ export CDPATH=".:/home/moa:/home/moa/src/python"
$ ls ~/src/python/
classes doc math physique re
$ ls ~/src/python/math
infix2postfix.py  lex.py  __pycache__  symbolic.py  zob.py
$ cd math
/home/moa/src/python/math
~/src/python/math$ pwd
/home/moa/src/python/math
~/src/python/math$ ls
infix2postfix.py  lex.py  __pycache__  symbolic.py  zob.py
Utilisation

Dans vim on peut simplement taper :cd math puis :e symbolic.py

source

The UNIX School

Table des matières

PWD et OLDPWD

Vous connaissez pwd, qui permet de savoir dans quel dossier on se trouve. La variable environnement PWD contient ce dossier. Les commandes pwd et echo $PWD donnent le même résultat.

Il y aussi une variable similaire $OLDPWD qui mémorise le dernier dossier qu’on a fréquenté.

Exemple : vous étiez dans un merdier du genre :

/usr/share/pyshared/numpy/lib/tests

que vous avez quitté pour retourner à votre $HOME/src/python/math. Mince ! vous avez oublié de jeter un œil sur le fichier test_format.py. Tapez :

less $OLDPWD/test_format.py

Table des matières

Renommer en masse

Pour renommer tous les fichiers *.dat en *.txt :

$ rename  's/\.dat$/\.txt/' *.dat

ou

for f in *.dat;do mv $f ${f%dat}txt ;done
Explications

Pour la première méthode voir le man de rename.

La deuxième méthode est plus intéressante, parce qu’elle ouvre la voie à d’autres manipulations sous bash. Le patron général est :

for f in ensemble_de_fichiers  ;do action_sur $f  ;done

Observez for f in ... et en action sur $f : f est une variable bash, et $f en est le contenu.

Exemple
for f in *.py ; do python3 -m py_compile $f; done

va compiler tous les fichiers *.py du dossier courant avec python3.

Autre méthode

Ayant des fichiers préfixés qlam_index.html qlam_listes.html, ... on se propose de supprimer les préfixes pour obtenir index.html, listes.htm, ...

find . -type f | sed -r 's/^\.\/qlam_(.*)/mv & \1/' | bash

find . -type f va renvoyer des chaînes comme ./qlam_index.html

La syntae de sed est sed -r 's/regexp/replace/'

La partie de l'expression régulière ^\.\/qlam_(.+) va revoyer dans \1 l le nom du fichier purgé de ./qlam_ qui se trouvait au début.

La deuxième partie de sed est la commande bash mv qlm_index.html index.html

Enfin le pipe transmet le texte de cette commande à bash.

Table des matières

La variable $PS1

Elle contient le format (indigeste) du prompt du shell.

On peut la modifier pour changer l’apparence du prompt. echo $PS1 donne quelque chose du genre :

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

Si on veut un retour de ligne avant le $, on tape en ligne de commande :

$ export PS1="\u@\h:\w\n$"

On obtient ce genre d’affichage :

grognon@vieux:~/src/python/qlam
$ vim ~/.bashrc
grognon@vieux:~/src/python/qlam
$

Si en plus on veut afficher le prompt en rouge clair, on tape :

$ export PS1="\e[1;31m\u@\h:\w\n$ \e[m"

Pour rendre permanente la modification, ajoutez la ligne à votre .bashrc

Source : thegeekstuff

Table des matières

Vim et le X clipboard

Si vim est compilé avec l’option +clipboard (vim --version), on peut accéder au X clipboard (celui du gestionnaire de fenêtres).

Pour coller depuis le presse-papier système : "*p

Pour copier depuis vim vers le presse-papier système : "*y

Table des matières

Script ftp

Le but est de se passer de filezilla et autre client GUI. On utilise donc exclusivement ftp. Les notations sont les suivantes :

Dossier local : /data/local/
Hôte : ftp.server.net
Utilisateur : grognon

Envoyer un seul fichier à la racine de l'hôte.
#!/bin/bash
cd /data/local/$1
ftp -in ftp.server.net<<FIN2
user grognon
put $1
bye
FIN2
Evoyer un fichier à la racine ou dans un répertoire
#!/bin/bash
   
if [ $# -eq 0 ]
then
	echo Usage : qput [dir/]file
	exit 0
fi
   
bn=$(basename $1)
dn=$(dirname $1)
   
echo upload $1
cd /data/www/grognon/
ftp -in ftp.arad.free.fr << FIN
user username
cd $dn
lcd $dn
put $bn
bye
FIN
Envoyer tous les fichiers du site

L'arborescence est supposée être celle de Qlam

Racine : *.html
Racine/css : *.css
Racine/img : *.img
...

#!/bin/bash
cd /data/local/
ftp -inv ftp.server.net<<FIN
user grognon
mput *.html
lcd qlm
cd qlm
mput *.qlm
cd ../css
lcd ../css
mput *.css
cd ../img
lcd ../img
mput *.*
cd ../doc
lcd ../doc
mput *.*
cd ../script
lcd ../script
mput *.js
bye
FIN

Table des matières

Activer et désactiver les Beep

$ amixer set -c 0 Bepp 80% unmute
$ amixer set -c 0 Beep mute

Table des matières


Réalisé avec Qlam - LGPL