[Memo] BASH SHELL - se moquer des espaces blancs dans un for

13 Janvier 2010 20:14 | Par Miss Lemon dans Linux

 , , , , , ,

Dans les variables internes des scripts BASH on connaissait:
  • $HOME - le répertoire personnel de l'utilisateur
  • $BASH - le chemin vers le binaire Bash
  • $GROUPS - les groupes auxquels appartient l'utilisateur
  • ...

Je vous présente $IFS.
$IFS détermine la façon dont Bash reconnaît les champs ou les limites de mots lorsqu'il interprète des chaînes de caractères. La valeur par défaut est un espace blanc (espace, tabulation et retour chariot) mais peut être changé, par exemple, pour analyser un fichier de données séparées par des virgules.

Cette variable peut être utile lorsque vous souhaitez traiter un fichier ligne par ligne, et que ces même lignes comportent des espaces.
Pour des besoins personnels, je souhaitez exécuter un ensemble de commande sur une liste de fichiers récupérés via la commande find à partir d'un for.
Malheureusement pour moi, certains de ces fichiers possédaient des espaces dans leur nom.
$ find . -type f

mon fichier 1.doc
mon fichier 2.pdf

Mon script initial était comme suit:
for i in $(find . -type f)
do
     zip all_files.zip $i
done

(Il était un peu plus compliqué que ça en fait mais je simplifie pour l'exemple ;) )


Malheureusement, les espaces contenus dans les noms empêchaient que la commande s'exécute correctement:
zip warning: name not matched: ./zip all_files.zip mon
zip error: Nothing to do! (all_files.zip)
zip warning: name not matched: ./zip all_files.zip fichier
zip error: Nothing to do! (all_files.zip)
zip warning: name not matched: ./zip all_files.zip 1.doc
zip error: Nothing to do! (all_files.zip)
zip warning: name not matched: ./zip all_files.zip mon
zip error: Nothing to do! (all_files.zip)
zip warning: name not matched: ./zip all_files.zip fichier
zip error: Nothing to do! (all_files.zip)
zip warning: name not matched: ./zip all_files.zip 2.pdf
zip error: Nothing to do! (all_files.zip)
Grâce à la variable $IFS, j'ai pu obtenir le résultat que je voulais, avec le script suivant
oldIFS=$IFS     # sauvegarde du séparateur de champ
IFS=$'\n'     # nouveau séparateur de champ, le caractère fin de ligne
for i in $(find . -type f)
do
     zip all_files.zip $i
done
IFS=$old_IFS     # rétablissement du séparateur de champ par défaut
Par défaut $IFS contient l'espace comme séparateur de champs. En lui affectant le caractère de fin de ligne, le bash ne considérera plus que le nom de fichier sera terminé lorsqu'il rencontrera un espace.
Ce qui dans mon cas concret nous donne :
adding: zip all_files.zip mon fichier 1.doc (deflated xx%)
adding: zip all_files.zip mon fichier 2.pdf (deflated xx%)
Et voilà !
MAJ du 15/01/2010:
En partant du fait que iL vaut mieux faire 1 zip de 100 fichiers, plutôt que 100 zip de 1 fichiers, la boucle for est à utiliser avec modération.
Dans certains cas il est donc plus judicieux d'utiliser xargs qui possède une option nous permettant de spécifier le champs séparateur.
find -type f | xargs -d "\n" zip all_files.zip

Merci Nico P. pour cette option qui m'avait échappée

[Memo] Envoyer un mail avec mutt en ligne de commande

21 Octobre 2009 10:41 | Par Miss Lemon dans Linux

 , , ,

invite de commande

Etant donné que je ne me rappelle jamais, voici un petit mémo
mutt -a PIECE_JOINTE -s "SUJET" EMAIL_DESTINATAIRE < FICHER_AVEC_CORPS_DU_MSG

[Memo] Connaitre l'espace disque utilisé sur chacune de vos partitions

21 Octobre 2009 09:54 | Par Miss Lemon dans Linux

 , , ,

invite de commande

df -H | grep -vE '^[a-zA-Z]|tmpfs|cdrom|udev'  | awk '{ print $5 " " $1 }'
Cette commande liste les partitions et ne ressort que la capacité utilisée en pourcentage.

Source: www.crashdump.fr

Se connecter en 3G avec Ubuntu, Orange et un Nokia N95

19 Février 2009 00:08 | Par Miss Lemon dans Linux

 , , , , ,

Nokia N95 - Ubuntu - 3G

Quand on est un peu geek, on aime bien partir en vacances avec son bébé PC sous le bras et la certitude de pouvoir se connecter.
Alors bien sûr, on peut prier auprès du dieu Wifi pour qu'une connexion non sécurisée existe, mais bon, finalement ça arrive rarement.
La dernière fois que je suis partie en vacances, j'ai donc cherché une solution pour me servir de mon Nokia N95 comme modem. C'est prévu de base, seulement voilà, ça ne marche pas en bluetooth, uniquement par infrarouge, et mon bébé PC ne possède pas de capteur infrarouge. De plus, il est sous Ubuntu (oui je sais je cherche :) )
Heureusement, un post sur le blog equinoxefr.org est venu à mon secours.
Comme j’ai un abonnement Orange, cela fonctionne pour moi.
Voici donc la procédure:
Tout d'abord installez wvdial sur votre ordinateur.
sudo apt-get install wvdial
Une fois installé, il faut modifier le fichier de configuration:
vim /etc/wvdial.conf
[Dialer Defaults]
Modem = /dev/ttyACM0
Baud = 460800
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init5 = AT+CGDCONT=1,"IP","orange";
ISDN = 0
Modem Type = Analog Modem
Phone = *99***1#
username = orange
password = orange
Stupid Mode = 1
Une fois celà fait, c'est opérationnel, il n'y a plus qu'à tester.

Il vous faut votre cable USB pour connecter le PC et le téléphone.
Une fois le téléphone branché, vous sélectionnez le mode "PC Suite" sur votre téléphone.
Enfin, dans un terminal, tapez
sudo wvdial
Et voilà! C'est tout.
Et sans surfacturation (Internet Max)

Le plein d'ubuntu avec "Full Circle Magazine"

12 Janvier 2009 14:31 | Par Miss Lemon dans Linux

 , , , ,

FullCircle Magazine

FullCircle Magazine est un magazine online indépendant et gratuit pour les utilisateurs d'Ubuntu.

Le premier numéro est paru en juin 2007. Je ne suis pas sure qu'il y ait réellement une fréquence de parution, mais actuellement, il "fête" la parution du vingtième numéro. Le magazine sort systématiquement en langue anglaise, mais est traduit par la suite en différent langage (dont parfois le français, mais mieux vaut comprendre l'anglais).
Le magazine aborde des sujets divers comme l'environnement de travail, des comparatif de logiciels, les livres à lire, des interviews, des "How To ?", ...
Le tout est edité sous licence Creative Commons.

EquinoxeFR nous donnait un petit script shell pour récupérer certains numéros, le voici un peu modifié pour récupérer TOUS les numéros en VO, en one shot.
mkdir fullcircle ;
cd fullcircle ;
wget http://fullcirclemagazine.org/download/Issue%200%20-%20English.pdf ;
wget http://fullcirclemagazine.org/download/fullcircle-issue01-english.pdf ;
for i in 2 3;
do wget http://fullcirclemagazine.org/download/fullcircle-issue${i}-eng.pdf ;
done ;
for i in `seq 4 20` ;
do wget http://dl.fullcirclemagazine.org/issue${i}_en.pdf ;
done

Vous trouverez ici un index des articles pour les numéros allant de 0 à 17.
Bonne lecture.


Source: EquinoxeFR

Hello ... Im' a Linux !!

22 Décembre 2008 23:24 | Par Miss Lemon dans Linux

 ,

Et oui après "Hello I'm a PC" ou "Hello I'm a Mac" le pingouin s'y met.



Histoire de rester dans l'esprit communautaire, il semblerait que ces vidéos Linux soient réalisées par les utilisateurs eux mêmes, et non pas par des grosses agences de comm, lors d'un futur concours.
En tout cas, dans cette vidéo ci je remercie l'auteur d'avoir représenté Linux par une demoiselle, sans qu'elle ne ressemble au cliché de la geekette. C'est tout con, mais ça fait plaisir.

Source: Mind Overflow

Installer un serveur DNS sur Ubuntu

10 Décembre 2008 19:11 | Par Miss Lemon dans Linux

 , , ,

Bind9

Installer le package
apt-get install bind9
Pour connaitre la version du serveur DNS installé
named -v
Ajouter la zone en fin de fichier de configuration local
vi /etc/bind/named.conf.local
zone "mondomaine.com"{
    type master;
    file "/etc/bind/db.mondomaine.com";
};
Pour des raisons de sécurité limiter au serveur local
vi /etc/bind/named.conf.options
Modification du paramètre allow-recursion en
allow-recursion {localhost;};
Création du fichier de description de zone db.mondomaine.com
vi /etc/bind/db.mondomaine.com
Remplacer le domaine, les serveurs dns, et l'ip par les valeurs adéquates.
Le numéro de série du fichier doit être mis à jour à chaque modification, et correspond à la nomenclature suivante:
YYYYMMDD: Date de la mise à jour ex: 20081210 NN: Numéro de la mise à jour sur 2 chiffres ex: 01 la première fois, incrémenté de 1 à chaque modification
Attention aux points à la suite de mondomaine.com qui ne doit pas être oublié.
$ORIGIN     mondomaine.com.
$TTL         86400
@             IN             SOA          dns1.dom.com root.domaine.com.(
                               YYYYMMDDNN               ; Serial
                               21600                    ; Refresh
                               3600                     ; Retry
                               604800                   ; Expire
                               3600 )                   ; Minimum
@             IN             NS            dns1.dom.com.
@             IN             NS            dns2.dom.com.
@             IN             A              xxx.xxx.xxx.xxx
www           IN             CNAME          mondomaine.com.
Vérification de la configuration
named-checkconf -z
Redémarrage du serveur Bind
/etc/init.d/bind9 restart
Il est aussi possible de relancer le serveur DNS à l'aide la commande suivante
rndc reload
Le numéro affiché YYYYMMDDNN doit correspondre à celui que l'on vient de préciser dans le fichier de zone.

Linux: le journal d'un novice

18 Juillet 2008 16:50 | Par Miss Lemon dans Linux

 ,

Une jolie initiative de Erwan Cario, l'un des journalistes de Ecrans

Ecrans

Habitué à utiliser Windows, et parti de la simple réflexion que, aujourd'hui son utilisation logicielle se portait sur des solutions Open Source telle que VLC ou Firefox, ou encore sur des solutions online, telle que les applications Google (Gmail, Documents, ..), il a décidé de profiter de l'achat d'un nouveau matériel pour se mettre à Linux, en portant son choix sur une distribution Ubuntu 7.10 (« Gutsy Gibbon » - le gibbon fougueux).

Ubuntu Startup Screen

Au rythme prévu d'un chapitre par semaine, il se propose de nous décrire ses premiers pas et avancées dans le monde libre.
Les linuxiens n'apprendront probablement donc rien, mais pour les autres, surement un moyen de voir que Linux aujourd'hui n'est pas forcement plus compliqué à utiliser que les autres.
Personnellement, je trouve que cela permet d'obtenir un avis objectif et un regard neuf sur le sujet, loin de l'éternelle gue-guerre inter OS que se prête les détracteurs de chaque camp.
Cette semaine:
A lire et à suivre, donc ..
© Miss Lemon 2007 | Graphisme: Merci Dam's pour le coup de main | Plateforme: Dotclear