16ar Posté(e) le 16 mars 2005 Partager Posté(e) le 16 mars 2005 les quotes simples sont des... ......... ........... simple quotes (ok caynul )les autres renvoyoient le résultat de la commande qu'elles contiennent : VARIABLE = cat `ls fichier[0123456789]` | grep coucou est en fait la même chose que VAR2=$(ls fichier[0123456789]) VARIABLE=cat $VAR2 | grep coucou mouaif, je suis moyennement convaincu par mon exemple. en fait ` a le même effet que $() , c'est à dire renvoyer le résultat de la commande qu'elle encadre merci, donc j'ai pas tout perdu de mes cours de bash ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuxbubling Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 MAJ du script de ripp de cd (j'ais editer mon precedent post pour pas prendre de place.) - Possibilité de mettre les infos cd manuellement en cas d'echec cddb Lien vers le commentaire Partager sur d’autres sites More sharing options...
P-A Posté(e) le 17 mars 2005 Auteur Partager Posté(e) le 17 mars 2005 Merci TFC69 pour ton petit script de rippage si il y a d'autres amateurs de bash, postez vos petits scripts egalement ça serait bien d'avoir une bonne petite base de donnée de scripts pour les inpactiens Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 Bon, allez, tant que j'y suis... comment enregistrer la télé avec ma carte BT848 (et sans doute beaucoup d'autres :)) #!/bin/sh if [ ! -n "$1" ]; then echo "You must specify a channel!" exit fi rm -i audio.wav video.avi video.yuv mkfifo -m 660 video.yuv cat video.yuv | yuv2lav -o video.avi & arecord -f cd audio.wav & mplayer -quiet -tv driver=v4l2:device=/dev/video0:normid=2:chanlist=france:amode=1:channels=21-fr2,24-fr3,27-TF1,34-fr5,60-M6 tv://$1 -noframedrop -vo yuv4mpeg:file=video.yuv killall arecord (il faut pas oublier de mettre "Capture" et "Aux" en capture dans alsamixer...sinon c'est raté pour arecord) et pour lire : #!/bin/sh mplayer video.avi -audiofile audio.wav -delay -0.2 -vf pp=lb Bon, ça servira pas forcément à tout le monde, mais bon, ça montre au moins les possibilités de mkfifo (j'avais essayé avec mplayer -vo jpeg... ben c'est pas facile à gérer, 2 millions de fichiers jpeg ) Des scripts bash, j'en fait plein, si j'en ai d'autres intéressants, j'essairais de les poster... mais bon, je vais sûrement oublier ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
16ar Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 Merci TFC69 pour ton petit script de rippage si il y a d'autres amateurs de bash, postez vos petits scripts egalement ça serait bien d'avoir une bonne petite base de donnée de scripts pour les inpactiens Le seul script bash un tant soit peu évolué que j'ai fait, ct un script de ripping de cd audio avec notre prof. Mais la red hat qu'on avait (8 je crois :o ) ne m'enregistrait pas les données sur ma clé usb au umount ... Donc j'ai tout perdu Et de toute facon, je pense que celui de TFC est mieux :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuxbubling Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 J'va encore le modifier Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 Ah oui très bonne idée. Qu'avez-vous dans votre ~/bin, et qu'est-ce que vous utilisez le plus souvent dans tout ça ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Poulpatine Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 en passant, personne n'a d'idée sur les problemes que me pose mon script ? merci ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 dans ~/bin? euh... cvscedega? J'ai aussi un script qui permet de démarrer un nouveau serveur X avec l'appli de son choix (et éventuellement de changer les touches "&é"'(-è_çà" en "1234567890", pour jouer à ut2004), mais bon, il est trop simple... Lien vers le commentaire Partager sur d’autres sites More sharing options...
16ar Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 dans ~/bin?euh... cvscedega? J'ai aussi un script qui permet de démarrer un nouveau serveur X avec l'appli de son choix (et éventuellement de changer les touches "&é"'(-è_çà" en "1234567890", pour jouer à ut2004), mais bon, il est trop simple... En gros, tu lances un jeu, ca se met dans un autre terminal, c ca ? Si oui, ca m'interesse M'en fous si c simple ^^Du coup, avec CTRL + ALT + F7..F12, on peut revenir a son desktop, c ca ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Abetsic Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 Pour retailler des images à la volée qui sont dans le repertoire courant. #!/bin/sh #Script pour retailler des images jpg a la volee en 640x480 for i in `ls *.jpg`; do resolution=`identify $i | grep [0-9]*x[0-9]* -o` h_res=`echo $resolution | grep [0-9]* -o` v_res=`echo $resolution | grep [0-9]*$ -o` if [ $h_res -lt $v_res ]; then echo Traitement de $i convert -resize 480x640 $i `echo $i | sed s/".jpg"/"_resized.jpg"/` else echo Traitement de $i convert -resize 640x480 $i `echo $i | sed s/".jpg"/"_resized.jpg"/` fi done Pour archiver les logs : #!/bin/bash CHEMIN="/var/log" kill -SIGTERM `cat /var/run/syslogd.pid` #Termine syslogd if [ -d $CHEMIN/archives ]; then echo Archivage des logs else mkdir $CHEMIN/archives fi if [ "$#" = "1" ]; then mkdir $CHEMIN/archives/$1 for i in $CHEMIN/* do if [ -f $i ]; then #si le fichier courant est un fichier (et non un dossier) cp $i $CHEMIN/archives/$1/ #copie du log vers le dossier créé dans archives rm -f $i #Suppression de l'original elif [ -d $i ]; then #si le fichier courant est un dossier if [ "$i" = "$CHEMIN/archives" ]; then #Si c'est le dossier archives on n'y touche pas echo Compression en cours... else cp -r $i $CHEMIN/archives/$1/ #on copie vers le dossier crée dans archives for k in $i/* #On supprime les fichier à l'intérieur des repertoires do rm -f $k done fi fi done cd $CHEMIN/archives tar -czf $1.tar.gz $1 rm -Rf $1 else echo Utilisation : cleanlog mois-jj-yyyy fi syslogd Ces deux scripts sont loins d'être parfait et peuvent être optimisés mais je suis pas un expert en programmation bash et j'avais besoin d'une solution rapidement. Un exemple d'amélioration pour le premier pourrait être de fournir le format de sortie de l'image sur la ligne de commande (on les récupère par $1 et $2 il me semble) Have fun :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 En gros, tu lances un jeu, ca se met dans un autre terminal, c ca ? Si oui, ca m'interesse M'en fous si c simple ^^Du coup, avec CTRL + ALT + F7..F12, on peut revenir a son desktop, c ca ? ben ça démarre un nouveau serveur X (genre ça marche pas avec les ATI ) en gros... X :1 export DISPLAY=:1 <programme ou $1 ou n'importe> Lien vers le commentaire Partager sur d’autres sites More sharing options...
16ar Posté(e) le 17 mars 2005 Partager Posté(e) le 17 mars 2005 ben ça démarre un nouveau serveur X (genre ça marche pas avec les ATI )en gros... X :1 export DISPLAY=:1 <programme ou $1 ou n'importe> En effet, j'ai essayé, et ca a crashé mon serveur X (quake3) Fatal server error: Caught signal 11. Server aborting ou bien crashé tout court avec ut2004 avec un segmentation fault :( Ca vient d'ou ce probleme ? Hardware qui gere pas ? Ou pilote ? Chuis decuuuuu :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 18 mars 2005 Partager Posté(e) le 18 mars 2005 Pour ceux qui utilisent nautilus, il faut savoir qu'il y a moyen d'ajouter des scripts dans le répertoire "~/.gnome2/nautilus-scripts" Ils apparaissent ensuite lors du clic droit sur un élément... Voici par exemple un script qui permet d'ouvrir une console dans le répertoire sélectionné (ou le répertoire courant si l'élément sélectionné est un fichier) : #!/bin/sh NEWTERM="gnome-terminal" BASE=`pwd` # repertoire courant FILES=0 # aucun fichiers du repertoire courant selectionne for uri in $NAUTILUS_SCRIPT_SELECTED_URIS # pour chaque selection do uri=`echo $uri | sed 's.file://..' | sed 's.%20. .'` # on transforme l'uri en path (attention en reseau;)) if [ -d $uri ] # si c'est un dossier then pushd $uri #on rentre dans le dossier $NEWTERM & # et on lance le term popd # on revient else if [ $base=`dirname $uri` ] # si le fichier est dans le repertoire courant then FILES=1 # on ouvrira un term dans le rep courant fi fi done if [ $FILES -eq 1 ] # si FILES est a 1 then $NEWTERM & # on ouvre un term dans le rep courant fi C'est commenté, donc ça devrait permettre à ceux qui veulent comprendre de voir plus ou moins comment ça marche... La ligne "#!/bin/sh", c'est pas utilisé par nautilus, mais ça met la couleur dans vim, donc voilà Donc au final, il est possible de choisir des fichiers/dossier, et ce script ouvrira un term pour chaque dossier, plus un term dans le dossier courant si il y a des fichiers sélectionnés... EDIT : et pas oublier de mettre le script dans ~/.gnome2/nautilus-scripts, chez moi je l'ai nommé "terminal" et surtout le mettre en +x :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
easyzik Posté(e) le 31 mars 2005 Partager Posté(e) le 31 mars 2005 Bonjour à tous ! j'espère que c'est le bon endroit pour poster mon message, je n'ai pas osé ouvrir un nouveau post... Voila je souhaiterais manipuler les dates sous BASH et je ne sais pas trop comment faire... Y a t'il des commandes qui permettent de faire ça et lesquelles ?? En fait, je souaiterais récupérer le mois en cours (sur 2 chiffre) et l'année (sur 4 chiffre) Par exemple 2005-04 pour avril 2005 ou 2002-12 pour décembre 2002 !! Voila, c'est surement tout bête mais je suis pas super fort dans le domaine... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 31 mars 2005 Partager Posté(e) le 31 mars 2005 man date date +'%Y-%m' : 2005-03 date +'%Y-%m-%d' : 2005-03-31 le man te donnera tout ce que tu peux mettre comme % ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
easyzik Posté(e) le 31 mars 2005 Partager Posté(e) le 31 mars 2005 merci Sandeman !! Trop rapide en plus ;-) Je connaissais bien la commande cal, mais pas la commande date ... comme koi !!! Désolé pour dérangement pour une question si triviale... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 31 mars 2005 Partager Posté(e) le 31 mars 2005 padprobz, le tout est de trouver la bonne commande ... ensuite pour faire un archivage automatique, tu peux faire un script du style : #!/bin/sh #script d'archivage (à mettre dans la crontab, à lancer juste avant minuit;) year=`date +'%Y'` monthyear=`date +'%Y%m'` arcpath="/var/archives" # créer le répertoire # la version sale : # mkdir $arcpath/$year >/dev/null 2>&1 # la version propre : [ -d $arcpath ] || mkdir $arcpath [ -d $arcpath/$year ] || mkdir $arcpath/$year [ -d $arcpath/$year/$monthyear ] || mkdir $arcpath/$year/$montyear # les commandes d'archivages ... # exemple (archivage manuel des logs de squid) squid -k logrotate awk -f /usr/local/bin/split_squid_logs.awk /var/log/squid/access.log.0 >> $arcpath/$year/$monthyear/squid.mylog Lien vers le commentaire Partager sur d’autres sites More sharing options...
P-A Posté(e) le 26 avril 2005 Auteur Partager Posté(e) le 26 avril 2005 la suite arrive, desolé encore pour l'abandon momentané de ce topic ! je fini d'ecrire les dernieres parties et je met tout ça a jour Lien vers le commentaire Partager sur d’autres sites More sharing options...
Squall NTCK Posté(e) le 6 mai 2005 Partager Posté(e) le 6 mai 2005 Vraiment chouette ce petit tuto, il m'a bien aidé et à toi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Squall NTCK Posté(e) le 9 mai 2005 Partager Posté(e) le 9 mai 2005 Petite question, il existe une commande, permettant d'attendre un laps de temps genre wait 5sec ou quelque chose comme ca? Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 9 mai 2005 Partager Posté(e) le 9 mai 2005 sleep x avec x un nombre de secondes Lien vers le commentaire Partager sur d’autres sites More sharing options...
nonas Posté(e) le 18 septembre 2005 Partager Posté(e) le 18 septembre 2005 Alors voilà mon premier script bash, c'est basique (pas de boucles ou de tests) mais ça me sort ce que je veux. Qu'en pensez-vous, tant sur le font que sur la forme ? #!/bin/bash # fah2conky by nonas (nonas@rediffmail.com) # v0.4 2005 sep 18 # Folding@Home # Retrieve information from unitinfo.txt and psummary.txt # You need to create psummary.txt : # rm psummary.html & rm psummary.txt & wget http://vspx27.stanford.edu/psummary.html && html2text psummary.html > psummary.txt # # This script is released under GNU-GPL v2 # http://www.gnu.org/copyleft/gpl.html ##### # Usage : fah2conky.sh unitinfo.txt psummary.txt # Just modify the output to get what you want. Enjoy;) ### unitinfo.txt & psummary.txt UNITINFO=$1 PSUMMARY=$2 ### data from unitinfo.txt NAME=$(grep Name $1 | sed -e "s/Name: //") PROGRESS=$(grep % $1 | cut -c 11-14 | sed -e "s/[ ][ ]*$//") DL_TIME=$(grep Download $1 | sed -e "s/Download time: //") DUE_TIME=$(grep Due $1 | sed -e "s/Due time: //") ### data from psummary.txt NUMBER=$(grep $NAME $2 | cut -c 1-4 | sed -e "s/[ ][ ]*$//") SERVER_IP=$(grep $NAME $2 | cut -c 9-23 | sed -e "s/[ ][ ]*$//") ATOMS=$(grep $NAME $2 | cut -c 61-67 | sed -e "s/[ ][ ]*$//") PREF_DAYS=$(grep $NAME $2 | cut -c 68-77 | sed -e "s/[ ][ ]*$//") DEADLINE=$(grep $NAME $2 | cut -c 78-86 | sed -e "s/[ ][ ]*$//") CREDIT=$(grep $NAME $2 | cut -c 87-93 | sed -e "s/[ ][ ]*$//") FRAMES=$(grep $NAME $2 | cut -c 94-100 | sed -e "s/[ ][ ]*$//") CORE=$(grep $NAME $2 | cut -c 101-110 | sed -e "s/[ ][ ]*$//") echo "Name: $NAME, #$NUMBER, $CREDIT points, $CORE, $PROGRESS, IP: $SERVER_IP, Atoms: $ATOMS, Pref_days: $PREF_DAYS, Dead: $DEADLINE, Frames: $FRAMES, DL_T: $DL_TIME, DUE_T: $DUE_TIME." Je sais bien que le coup des cut c'est pas très propre, c'est pourquoi j'espère que psummary.html aura toujours la même tronche J'ai pas voulu mettre la création de psummary.txt dedans car c'est un script qui est amené à être appelé toutes les 10 minutes en gros et le fichier psummary.html change assez rarement ... enfin j'espère ^_^ Pour les updates si y'a ça sera là : http://nitrotoxine.free.fr/www/scripts/conkyfah/ Merci à ce tuto, aux exos bash de lorinc et à google mon fidèle ami EDIT: mouahaha c'est trop moche, Inpact- KoinKoin (le plus gros plieur de la team INpact) m'a envoyer une version amélioer avec des awk. Ben oui forcement avec awk c'est beaucoup beaucoup plus propre, ça permettra même de s'adapter plus facilement à un nouveau psummary.html. Donc je vais bosser ça. Merci à lui ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
nonas Posté(e) le 24 septembre 2005 Partager Posté(e) le 24 septembre 2005 re- Bon voilà la dernière version, avec des awk, toujours pas de tests pour vérifier la syntaxe, ça alourdirai beaucoup. Normalement ça fonctionne même pour les WorkUnit ayant des espaces dans leu nom. Si vous avez des idées d'amélioration ou que vous voyez des bugs, n'hésitez pas #!/bin/bash # fah2conky by nonas (nonas@rediffmail.com) - Merci à Inpact- KoinKoin et theocrite;) # v0.8 - 2005 sep 24 # Retrieve information from Folding@Home files (unitinfo.txt, FAHlog.txt and psummary.txt) # You need to create psummary.txt : # rm psummary.html & rm psummary.txt & wget http://vspx27.stanford.edu/psummary.html && html2text psummary.html > psummary.txt # # This script is released under GNU-GPL v2 # http://www.gnu.org/copyleft/gpl.html # ##### # Usage : fah2conky.sh path/client_folder/ path/psummary.txt # Just modify the output to get what you want. Enjoy;) ### client folder & psummary.txt FAH_DIR=$1 PSUMMARY=$2 ### data from unitinfo.txt NAME="$(grep Name $1/unitinfo.txt | sed -e "s/Name: //")" PROGRESS=$(grep % $1/unitinfo.txt | awk {'print $2'} | sed -e "s/%//") DL_TIME="$(grep Download $1/unitinfo.txt | sed -e "s/Download time: //")" DUE_TIME="$(grep Due $1/unitinfo.txt | sed -e "s/Due time: //")" ### data from psummary.txt NUMBER=$(grep "$NAME" $2 | awk {'print $1'}) SERVER_IP=$(grep "$NAME" $2 | awk {'print $2'}) ATOMS=$(grep "$NAME" $2 | awk {'print $(NF-7)'}) PREF_DAYS=$(grep "$NAME" $2 | awk {'print $(NF-6)'}) DEADLINE=$(grep "$NAME" $2 | awk {'print $(NF-5)'}) CREDIT=$(grep "$NAME" $2 | awk {'print $(NF-4)'}) FRAMES=$(grep "$NAME" $2 | awk {'print $(NF-3)'}) CORE=$(grep "$NAME" $2 | awk {'print $(NF-2)'}) CONTACT="$(grep "$NAME" $2 | awk {'print $NF'})" ### data from FAHlog.txt RUN=$(grep -i run $1/FAHlog.txt | tail -n 1 | awk {'print $5'} | sed -e "s/,//") CLONE=$(grep -i clone $1/FAHlog.txt | tail -n 1 | awk {'print $7'} | sed -e "s/,//") GEN=$(grep -i gen $1/FAHlog.txt | tail -n 1 | awk {'print $9'} | sed -e "s/)//") PERF_FRACTION=$(grep performance $1/FAHlog.txt | tail -n 1 | awk {'print $5'}) echo -e "Name: "$NAME",\nNumber: $NUMBER,\nCredit: $CREDIT,\nCore: $CORE,\nProgress: $PROGRESS%,\nIP: $SERVER_IP,\nNumber of Atoms: $ATOMS,\nPref_days: $PREF_DAYS,\nDeadline: $DEADLINE,\nNumber of Frames: $FRAMES,\nDownload_time: "$DL_TIME",\nDue_time: "$DUE_TIME",\nRun: $RUN,\nClone: $CLONE,\nGen: $GEN,\nContact: "$CONTACT",\nPerformance fraction: $PERF_FRACTION." Un petit script pour mettre à jour psummary.html (ou le créer) (merci à Inpact- KoinKoin pour le code ) #!/bin/bash rm psummary.html & rm psummary.txt wget=`which wget` if [ "x" = "x$wget" ]; then echo "wget is not installed on your system, can't retrieve psummary.html." exit 1 fi html2text=`which html2text` if [ "x" = "x$html2text" ]; then echo "html2text is not installed on your system, can't convert psummary.html to psummary.txt" exit 1 fi $wget http://vspx27.stanford.edu/psummary.html && $html2text psummary.html > psummary.txt Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 24 septembre 2005 Partager Posté(e) le 24 septembre 2005 sed -e "s/,//" à la place tu dois pouvoir faire : tr -d "," (ou bien avec des simple quotes, ou même sans) à moins que tu ne veuille réellement enlever que la première virgule, dans ce cas là c'est bon Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.