Rechercher : dans
Par :

Script shell - écriture dans un fichier

Dernière réponse le 19 sep 2007 à 10:19:56 Jérôme, le 1 déc 2004 à 18:17:38 
 Signaler ce message aux modérateurs

Bonjour,

Je chercher à insérer une valeur à la suite d'un fichier existant avec la commande :

"valeur" >> fichier.txt

mais en évitant que cette valeur aille directement à la ligne suivante dans le fichier.
Quelqu'un saurait si c'est possible juste avec un commande ou un script shell?

La commande doit insérer la valeur à la suite de la dernière ligne du fichier.

Merci d'avance à ceux qui me répondront.

Jérôme

Meilleures réponses pour « Script shell écriture dans un fichier » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha-Bang Premièrement,...

1

jipicy, le 1 déc 2004 à 20:42:59

Salut,

Tu peux essayer par l'intermédiaire de la commande "echo" et de l'option "-n" (empêche le retour à la ligne). Ce qui donnerait :

echo -n $valeur >> fichier.txt
Par contre cette commande n'aura d'effet que lors du prochain ajout. Si comme tu le précises, la "valeur" doit s'incsrire à la suite de ton fichier, c'est la dernière ligne de ton fichier qui ne doit pas avoir de retour à la ligne.

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
sh:/bin/laden: Not found !

Répondre à jipicy

2

Ahmed S., le 13 déc 2004 à 21:30:14

Salut,

Je projéte d'installer wwwblast server sous lamppix mini. En effet, wwwblast server est un programme (utilisé en bioinformatique pour l'alignement local de séquences ADN ou acides aminés) installable sous apache dans un répertoire nommé blast mis sous le document root directory d'apache(www par exemple). Ce programme permet d'aligner des séquences "input" en exécutant des scripts cgi. Pour ceci, j'ai besoin de configurer apache pour permettre l'exécution des cgi présents sous me répertoire "blast"
et ce, en modifiant le fichier http.conf par l'ajout de quelques lignes.
Je précise que j'ai déjà effectué ce genre de manoeuvre sous Linux Mdk 9.0 et ça marche.

Le problème avec lamppix c'est qu'on ne peut modifier http.conf qu'à travers un script shell qui va écrire 6 lignes dans ce fichier pour permettre aux cgi de wwwblast server de tourner sous le réperoire blast qu'on créer.

Je précise que :
* le document root directory est : ./opt/lampp/htdocs
* le répertoire de blast est donc : ./opt/lampp/htdocs/blast
* http.conf existe sous /opt/lampp/etc/httpd.conf
* Les 6 lignes à ajouter sont :
[code]
<Directory "./opt/lampp/htdocs/blast">
Options Indexes FollowSymLinks Includes MultiViews ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
[/code]

Pour ceci, je me demande s'il faut utiliser 6 variables (une pour chaque ligne) ou il est possible de mettre les 6 lignes en une seule variable ?

sachant que je vais utiliser la commande :
[code]
echo $variable >> /opt/lampp/etc/httpd.conf
[/code]

Merci d'avance pour votre aide et j'espère que j'étais pas long dans l'explication de mon problème.

Ahmed S.

Répondre à Ahmed S.

3

fablac, le 13 déc 2004 à 21:40:03

Fait un "diff -uNr " fichier original fichier modifier >>fichier.patch"
puis créer un script qui patchera ton fichier original avec la commande patch

exemple "patch -p0 < fichier.patch"


Bon courage

Répondre à fablac

4

Ahmed S., le 13 déc 2004 à 22:28:05

Salut,

Ce code serait il correct ?

[code]

#!/bin/bash

#j'affecte mes lignes
$ligne1 = "<Directory "./opt/lampp/htdocs/blast"> \n"
$ligne2 = "Options Indexes FollowSymLinks Includes MultiViews ExecCGI \n"
$ligne3 = "AllowOverride None \n"
$ligne4 = "Order allow,deny \n"
$ligne5 = "Allow from all \n"
$ligne6 = </Directory> \n"
#j'ajoute mes lignes au fichier http.conf
echo $ligne1 >> /opt/lampp/etc/httpd.conf
echo $ligne2 >> /opt/lampp/etc/httpd.conf
echo $ligne3 >> /opt/lampp/etc/httpd.conf
echo $ligne4 >> /opt/lampp/etc/httpd.conf
echo $ligne5 >> /opt/lampp/etc/httpd.conf
echo $ligne6 >> /opt/lampp/etc/httpd.conf

[/code]

Merci.

Ahmed S.

Répondre à Ahmed S.

5

fablac, le 14 déc 2004 à 09:54:19

C'est sur que cela va marcher enfin presque mais si tu as un prog
qui te demande de modifier d'autres endroits dans le fichier
la solution patch est beaucoup plus propre ( c'est ce qui est utilisé pour le kernel )
Alors autant le faire proprement

sinon ton script sera mieux ainsi

#!/bin/bash

#j'affecte mes lignes
ligne1 = "<Directory "./opt/lampp/htdocs/blast"> \n"
ligne2 = "Options Indexes FollowSymLinks Includes MultiViews ExecCGI \n"
ligne3 = "AllowOverride None \n"
ligne4 = "Order allow,deny \n"
ligne5 = "Allow from all \n"
ligne6 = </Directory> \n"
#j'ajoute mes lignes au fichier http.conf
echo $ligne1 >> /opt/lampp/etc/httpd.conf
echo $ligne2 >> /opt/lampp/etc/httpd.conf
echo $ligne3 >> /opt/lampp/etc/httpd.conf
echo $ligne4 >> /opt/lampp/etc/httpd.conf
echo $ligne5 >> /opt/lampp/etc/httpd.conf
echo $ligne6 >> /opt/lampp/etc/httpd.conf

Bon courage

Répondre à fablac

6

bob031, le 15 déc 2004 à 19:46:05

Salut Ahmed S.,

Je suis curieux de savoir si tes séquences sont en "local" ou sur des bases de données publiques.
D'autant plus que curieux que je fais un peu de "bio-info" et que je suis sous Mdk 9.0.

bob031

Répondre à bob031

7

Ahmed S., le 15 déc 2004 à 22:33:18

Salut bob,

Les séquences que j'utilise sont en fait des compilations (mélange) de séquences collectées à partir des banques publiques mais elles sont en "local" comme tu dis.

Voila, j'espère satisfaire ta curiosité !!

A mon tour, je voudrais bien savoir que veux tu dire par peu de bio info sous Mdk 9.0 c'est à dire té étudiant, prof, ingénieur, ... ?

@+

Ahmed S.

Répondre à Ahmed S.

8

 bob031, le 16 déc 2004 à 19:13:36

Salut Ahmed,

Disons que j'essaie de me parfaire à la bio-informatique "chez moi" sous Mdk 9.0.
Sinon mon parcours est très biologie moléculaire + petite formation en informatique ( programmation C,C++, bases de données, un peu d'administration, un peu de réseau).
Voilà pour résumé !!!!!

Bon courage,

bob

Répondre à bob031