tag:linuxfr.org,2005:/tags/script_shell/public
LinuxFr.org : les contenus étiquetés avec « script_shell »
2023-03-01T14:50:21+01:00
/favicon.png
tag:linuxfr.org,2005:Bookmark/6008
2023-03-01T14:50:21+01:00
2023-03-01T14:50:21+01:00
The Missing Semester of Your CS Education
<a href="https://missing.csail.mit.edu/">https://missing.csail.mit.edu/</a> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/130453/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/nils--2/liens/the-missing-semester-of-your-cs-education#comments">ouvrir dans le navigateur</a>
</p>
Nils Ratusznik
https://linuxfr.org/nodes/130453/comments.atom
tag:linuxfr.org,2005:Post/43442
2023-01-28T21:29:08+01:00
2023-01-29T09:09:45+01:00
script qdisc
<p>Bonjour a tous</p>
<p>Je suis débutant avec linux et je tente de comprendre un script sur le qdisc prio.<br>
l'univers TC me fascine mais il est a la fois complexe donc je passe mon temps libre a essayer de comprendre et a reproduire des règles iptables etc… Mais la je sèche et j'aurais besoin un peu d'aide, donc je me tourne vers vous.</p>
<p>Voilà le script:</p>
<pre><code class="bash"><span class="ch">#!/bin/sh</span>
<span class="nv">TC</span><span class="o">=</span><span class="k">$(</span>which tc<span class="k">)</span>
<span class="nv">IPT</span><span class="o">=</span><span class="k">$(</span>which iptables<span class="k">)</span>
<span class="nv">IPTMO</span><span class="o">=</span><span class="s2">"</span><span class="nv">$IPT</span><span class="s2"> -t mangle -A POSTROUTING"</span>
<span class="nv">DEV</span><span class="o">=</span>pppoe-dsl
<span class="nv">$TC</span> qdisc add dev <span class="nv">$DEV</span> root handle <span class="m">1</span>: prio default <span class="m">30</span>
<span class="nv">$TC</span> class add dev <span class="nv">$DEV</span> parent <span class="m">1</span>: classid <span class="m">1</span>:1 prio
<span class="nv">$TC</span> class add dev <span class="nv">$DEV</span> parent <span class="m">1</span>:1 classid <span class="m">1</span>:10 prio
<span class="nv">$TC</span> class add dev <span class="nv">$DEV</span> parent <span class="m">1</span>:1 classid <span class="m">1</span>:20 prio
<span class="nv">$TC</span> class add dev <span class="nv">$DEV</span> parent <span class="m">1</span>:1 classid <span class="m">1</span>:30 prio
<span class="nv">$IPTMO</span> -N CHKTOS
<span class="nv">$IPTMO</span> -o <span class="nv">$DEV</span> -j CHKTOS
<span class="nv">$IPTMO</span> -A CHKTOS -m tos ! --tos Normal-Service -j RETURN
<span class="nv">$IPTMO</span> -A CHKTOS -p udp -j TOS --set-tos Minimize-Delay
<span class="nv">$IPTMO</span> -A CHKTOS -p udp -m length --length :160 -j TOS --set-tos Minimize-Delay
<span class="nv">$IPTMO</span> -A CHKTOS -p tcp -m length --length :128 -j TOS --set-tos Minimize-Delay</code></pre>
<p>La ou je sèche c'est si je devais remplacer $IPTMO par iptables quelle serait les règles exact.<br>
Je sais que la 1ere règle c'est:<br>
iptables -N CHKTOS<br>
Mais après j'ai essayer pas mal de chose qui ne fonctionne pas.<br>
Je vous remercie par avance.</p>
<div><a href="https://linuxfr.org/forums/linux-debutant/posts/script-qdisc.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/130147/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/linux-debutant/posts/script-qdisc#comments">ouvrir dans le navigateur</a>
</p>
Nathan974
https://linuxfr.org/nodes/130147/comments.atom
tag:linuxfr.org,2005:Post/43269
2022-11-22T18:29:48+01:00
2022-11-22T18:29:48+01:00
Script shell pour purge automatique d'un dossier
<p>Bonjour à tous,</p>
<p>J'ai créé un script permettant :</p>
<ol>
<li>Exporter (dump) une base de données PostGre</li>
<li>Compresser sous Zip le "dump"</li>
<li>Synchroniser (export) en Rsync avec un NAS distant le dossier d'exportation</li>
</ol>
<p>Le tout fonctionne très bien mais, comme j'ai un export/sauvegarde toutes les heures, je me retrouve avec des fichiers compressés de quelques 10 Mo grossissant toutes les heures. <br>
Ce n'est pas encore dérangeant car j'ai un gros disque dur mais je souhaiterais purger les anciennes sauvegardes automatiquement qui ne servent pas à grand chose sauf à prendre de la place.</p>
<p>Le format des fichiers compressés est sous la forme : YYYYmmdd_hhiiss.zip<br>
Est ce que vous connaissez des pistes sur lesquelles je pourrais me baser pour créer mon script ? Je souhaiterais le créer et comprendre plutôt que de faire un bête copier-coller…</p>
<p>Je pensais, à intervalle régulier, (cron) lister les fichiers dans le dossier de synchronisation grâce à stat puis si la date de création est > 4 mois (par exemple) => rm. Est ce que cela pourrait fonctionner ainsi ?</p>
<div><a href="https://linuxfr.org/forums/programmation-shell/posts/script-shell-pour-purge-automatique-d-un-dossier.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/129379/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-shell/posts/script-shell-pour-purge-automatique-d-un-dossier#comments">ouvrir dans le navigateur</a>
</p>
AureusMS
https://linuxfr.org/nodes/129379/comments.atom
tag:linuxfr.org,2005:Post/43248
2022-11-08T18:27:41+01:00
2022-11-08T18:27:41+01:00
Problème sur enchainement de commandes find et rsync
<p>Bonjour à tous, je parcours régulièrement ce forum dans lequel je trouve souvent des réponses mais après avoir passé pas mal de temps sur un enchainement de commandes, je sèche…<br>
Pour info je ne suis ni programmeur ni informaticien, mais passionné d'informatique pour me faciliter la vie.<br>
J'ai des fichiers de sauvegardes horaires très nombreux et je souhaite récupérer assez facilement certaines versions de fichiers à certaines dates et les recopier à un autre endroit pour exploitation. La ligne de commande suivante me convient et fonctionne pour rechercher toutes les versions du fichier "7964.vce" dans mon répertoire de sauvegarde courant "/share/data2/D/" et "recopier" les versions de ce fichier avec arborescence conservée dans mon repertoire d'export "/share/data2_export/7964/".</p>
<p>COMMANDE 1 [/share/data2/D/] /opt/bin/find . -name "7964.vce" -exec rsync -a -R {} /share/data2_export/7964/ \;</p>
<p>Le soucis est que j'ai des milliers de répertoires quotidiens et cette commande prend du temps et je voudrais cibler ma recherche sur novembre 2022 par exemple avec la commande suivante qui fonctionne :</p>
<p>COMMANDE 2 [/share/data2/D/] /opt/bin/find . -type d -name "22_11_*" -maxdepth 1</p>
<p>le résultat retourné est le suivant : <br>
./22_11_01<br>
./22_11_07<br>
./22_11_03<br>
./22_11_02<br>
./22_11_04<br>
./22_11_08</p>
<p>La commande suivante me crée bien un fichier liste.txt dont le contenu est repris ci-après</p>
<p>[/share/data2/D] # /opt/bin/find . -type d -name "22_11_*" -maxdepth 1 -exec /opt/bin/find {} -name "7964.vce" > liste.txt \;</p>
<p>./22_11_07/backup_22_11_07_17h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce<br>
./22_11_07/backup_22_11_07_13h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce<br>
./22_11_07/backup_22_11_07_12h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce<br>
./22_11_03/backup_22_11_03_09h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce<br>
./22_11_03/backup_22_11_03_10h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce<br>
./22_11_02/backup_22_11_02_11h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce<br>
./22_11_02/backup_22_11_02_15h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce<br>
./22_11_04/backup_22_11_04_13h00/share/archives/TBC/Save_VCE_Disque Ext/7964_Saint_André/7964.vce</p>
<p>Ce sont bien ces 8 versions de fichiers de 7964.vce qui doivent être recopiées via rsync.</p>
<p>Je voudrais faire la COMMANDE 1 mais uniquement sur les repertoires commençant par "22_11_*" extraits de la COMMANDE 2.<br>
J'ai essayé avec des pipes, des cat, des xargs, sans succès car je ne suis pas assez calé…</p>
<p>Je voudrais donc que la commande 2+1 suivante fonctionne </p>
<p>COMMANDE 1+2 [/share/data2/D] # /opt/bin/find . -type d -name "22_11_<em>" -maxdepth 1 -exec /opt/bin/find {} -name "7964</em>.vce" \; -exec rsync -a -R {} /share/data2_export/7964/ \;</p>
<p>J'ai bien conscience que le problème vient du {} qui suit la commande rsync mais je n'arrive pas à lui faire relire le résultat de la 2ème commande find…</p>
<p>Merci d'avance aux sachants pour qui le problème est surement basique mais pas pour moi !</p>
<div><a href="https://linuxfr.org/forums/programmation-shell/posts/probleme-sur-enchainement-de-commandes-find-et-rsync.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/129235/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-shell/posts/probleme-sur-enchainement-de-commandes-find-et-rsync#comments">ouvrir dans le navigateur</a>
</p>
Sioncarf59
https://linuxfr.org/nodes/129235/comments.atom
tag:linuxfr.org,2005:News/41057
2022-08-05T15:48:18+02:00
2022-08-05T15:48:18+02:00
Bash 5 : une introduction
Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr
<div><p>La troisième version du document « Introduction à la programmation en Bash » (IUT de Rodez) vient de paraître. Elle est principalement destinée aux étudiants de niveau Licence.</p>
</div><ul><li>lien nᵒ 1 : <a title="http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/" hreflang="fr" href="https://linuxfr.org/redirect/110834">Introduction à la programmation en Bash (page d'Eric Sanchis)</a></li></ul><div><h2 id="toc-contexte">Contexte</h2>
<p>Il s’agit de la troisième révision du cours donné par Eric Sanchis à l’IUT de Rodez.</p>
<h3 id="toc-cursus">Cursus</h3>
<p>L’<a href="http://www.iut-rodez.fr/">IUT de Rodez</a>, dans l’Aveyron, est un site délocalisé de <a href="http://www.univ-tlse1.fr/">l’Université Toulouse 1 Capitole</a>. Il délivre un Bachelor Universitaire de Technologie (BUT) au bout de deux années d’études, soit quatre semestres validés.</p>
<p>Il est possible ensuite, toujours à l’IUT de Rodez, de prolonger les études d’une année pour atteindre le niveau Licence dans le cursus LMD (Licence-Master-Doctorat). </p>
<p>« Introduction à la programmation en Bash » est le support de cours du <a href="https://www.ut-capitole.fr/accueil/formations/nos-diplomes/but/but-informatique">BUT Informatique</a>. </p>
<h3 id="toc-auteur">Auteur</h3>
<p>Eric Sanchis est Associate Professor à l’université de Laval au Québec depuis 2012. Il est aussi Maître de conférences en informatique à l’IUT Rodez où il enseigne depuis 1992, et y est membre permanent de <a href="http://aral.iut-rodez.fr/">l’équipe de recherche ARAL</a>.</p>
<p>Ce cours, dispensé depuis 2007, en est à sa troisième édition.</p>
<h2 id="toc-contenu">Contenu</h2>
<p>Bien, que contient cette ressource ? Qu’y trouve-t-on pas ou pas ?</p>
<h3 id="toc-essentiel">Essentiel</h3>
<p>Il est mentionné au point 1.1.3.</p>
<blockquote>
<p>Toutefois, afin de rendre l’étude de bash plus aisée, nous n’aborderons pas sa syntaxe de manière exhaustive ; en particulier, lorsqu’il existera plusieurs syntaxes pour mettre en œuvre la même fonctionnalité, seule la syntaxe la plus lisible sera présentée, parfois au détriment de la portabilité vers les autres shells ou de la compatibilité POSIX.</p>
</blockquote>
<p>Ainsi, on trouvera la forme <code>foo $(bar baz) fuu</code> et non <code>foo `bar baz` fuu</code> <br>
De même, il est directement question en 10.2.2 de <code>[[</code> sans jamais évoquer le plus portable <code>[</code> mais plus limité. <br>
Ce choix assumé devrait permettre d’apprendre rapidement bash quand on vient d’autres langages de scripting.</p>
<h3 id="toc-progressif">Progressif</h3>
<p>La table des matières montre un avancement progressif, et assez didactique. <br>
Les chapitres 2 et 3 traitent de l’expansion de la ligne de commande.<br>
Le chapitre 4 embrasse toute la problématique des méta-caractères et des expressions génériques.<br>
Le chapitre suivant discute des redirections et tubes qui font l’autre force des shell unixiens.<br>
Ensuite, on enchaîne sur les groupements de commandes et tout ce qui est relatif aux codes de retour. <br>
Les chapitres 9, 11 et 12, traitent respectivement : des chaînes de caractères, des expressions arithmétiques, et des tableaux.<br>
Les structures de contrôle du langage de programmation sont abordées aux chapitres 8 (pour <code>case</code> et <code>while</code>) et 10 (pour <code>for</code> et <code>if</code>)<br>
Les deux derniers chapitres évoquent les alias et les fonctions. </p>
<h3 id="toc-illustré">Illustré</h3>
<p>Les différents concepts évoqués sont accompagnés d’exemples que l’on peut reproduire. <br>
Pour ne rien gâcher, il y a quelques exercices intéressants.</p>
<h2 id="toc-critiques">Critiques</h2>
<p>Comme ce n’est pas une dépêche purement publicitaire, vous aurez bien entendu droit aux avis de l’équipe de rédaction.</p>
<p>D’abord, bash 5… Les exemples ont été en effet testés avec la version 5.1, mais il n’y à rien qui soit spécifique aux versions 4.x ou 5.x ! Pour les gourous du bash qui espéraient trouver quelque plus, il faudra passer son chemin.</p>
<p>Comme déjà dit, ce tutoriel va à l’essentiel en privilégiant les formes les plus lisibles. C’est une bonne chose de ne pas évoquer, quand c’est possible, les ésotérismes du shell…<br>
Par contre, la présentation des exemples peut dérouter quand il y a des commentaires. On trouve par exemple (en <a href="http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ch11s07-Structure-for-pour-les-expressions-arithmetiques.html">11.7</a>)</p>
<pre><code>declare -i x # affiche les dix chiffres
for (( x=0 ; x<10 ; x++ ))
do
echo $x
done
</code></pre>
<p>et aussi des trucs comme (en <a href="http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ch02-Substitution-de-parametres.html#idm601">2.1.1</a>)</p>
<pre><code>$ x=coucou y=bonjour => la variable x contient la chaîne de caractères coucou
$ => la variable y contient la chaîne bonjour
</code></pre>
<p>Le contrat initial de favoriser une seule forme (en <a href="http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ch01-Introduction-a-Bash.html#idm167">1.1.3.</a>) est rompu à la fin (en <a href="http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ch14s10-Appels-de-fonctions-dispersees-dans-plusieurs-fichiers.html">14.10.</a>) avec l’évocation de <code>source</code> et <code>.</code></p>
<p>Le contenu est disponible en deux versions : une web (cf. lien) découpée en plusieurs pages avec liens de navigation (précédant/sommaire/suivant), et un PDF téléchargeable. <br>
La version PDF utilise une étrange coloration syntaxique sans fond tandis que la version web n’utilise qu’un fond uni et du texte en noir, uni pour les exemples avec des variations de graisse et inclinaison dans le texte d’explication. <br>
Enfin, seule la version PDF comporte des exercices, ainsi que des références complémentaires </p>
<p>Malgré tout cela, c’est une bonne ressource complète en français qui est plus simple que le mythique <a href="http://abs.traduc.org">ABS</a> (listé parmi les références de l’auteur.)</p>
<p><strong>NdM :</strong> cette dépêche a été soumise par l’auteur du cours, mais sous une forme tellement succincte qu’elle ne pouvait pas passer sous les fourches caudines de la modération qui a, cependant, trouvé le sujet intéressant. <a href="//linuxfr.org/users/gilcot">Gil Cot</a> l’a quasiment entièrement récrite en l’enrichissant considérablement, notamment avec « le point de vue de la rédaction ». Il a mérité au passage les plus chaleureux remerciements de la modération.</p>
</div><div><a href="https://linuxfr.org/news/bash-5-une-introduction.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/127944/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/bash-5-une-introduction#comments">ouvrir dans le navigateur</a>
</p>
Ysabeau 🧶 🧦
Gil Cot ✔
Anonyme
Benoît Sibaud
palm123
https://linuxfr.org/nodes/127944/comments.atom
tag:linuxfr.org,2005:Post/42934
2022-05-31T11:55:48+02:00
2022-05-31T11:55:48+02:00
Script (Shell) EDR test ?
<p>Bonjour, Je souhaitais savoir si l'un de vous était au courant d'un script existant pour tester une solution anti viral (EDR).</p>
<p>J'en ai trouvé une tonne sur github pour tester via Powershell Windows, mais rien sur Linux.</p>
<p>Ici il s'agirait de tester un serveur Linux (Ubuntu/Debian) pour vérifier si la solution antiviral proposé par la société qui nous le vend fait l'affaire.</p>
<p>Du coup ci quelqu'un a quoi que se soit a me proposer, je suis totalement preneur.</p>
<p>A savoir que j'ai déjà tenté également d'injecter un virus par le Biais du Terminal et que la solution semble avoir fonctionner avec un Virus que je qualifierais de "Banal".</p>
<p>Merci d'avoir pris le temps de lire et j'espère que quelqu'un sera apte à m'aider.</p>
<div><a href="https://linuxfr.org/forums/g%C3%A9n%C3%A9raltest/posts/script-shell-edr-test.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/127882/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/g%C3%A9n%C3%A9raltest/posts/script-shell-edr-test#comments">ouvrir dans le navigateur</a>
</p>
Luis.flw
https://linuxfr.org/nodes/127882/comments.atom
tag:linuxfr.org,2005:Post/42688
2022-02-08T22:30:38+01:00
2022-02-08T22:30:38+01:00
traiter des blocs de texte pour composer de gros documents flexibles
<p>bonjour</p>
<p>je voudrais créer de manière flexible de gros documents à partir de blocs de texte préformulés dans de petits (ou non) documents individuels mémorisés au format texte sur le disque dur dans le même répertoire (ou un sous-répertoires …/ressources/…" par insertion</p>
<p>et l'idéal, même, serait de pouvoir le faire avec un simple script (comme on fait avec apt-get install dans debian pour installer des paquets… j'installerais là des segments de texte.</p>
<p>exemple:</p>
<p>insert textes-suivants monAdresse.txt adresse2tartempionBleu.txt lieuDateRef.txt salutations.txt referenceEtCoordonnées.txt gueuler.txt saluerPolimentQuandmeme.txt piecesJointes.txt</p>
<p>me permettrait de composer une lettre de réclamation standard, ou, vice-versa de répondre à une telle lettre, ou de proposer une nouveauté, ou des services, un rappel, une mise en demeure, etc.</p>
<p>et les textes étant préformulés, ils pourraient être dans une langue que je ne maîtrise pas vraiment.</p>
<p>je crois qu'un ancien éditeur de texte permettait cela (au moins en direct: la fonction "insert" ou équivalente y était au menu dans l'onglet "file", et, souvent, certainses applications consoles s'appropriaient à être utilisées par un script extérieur en ligne de commande via une telle ligne de noms de modules à traiter.</p>
<p>quelqu'un saurait-il encore de quel éditeur de texte il peut s'agir (en espérant que ce ne soit pas emacs, qui est une vraiment grosse horloge demandant beaucoup d'apprentissage avant de pouvoir l'utiliser beaucoup avec dextérité!)?</p>
<p>par ex. la minuscule puce "wordgrinder" peut en console exporter son text dans des formats absolument inattendus pour un tel outil minuscule! pourrait-il aussi récupérer des textes et les insérer?</p>
<p>crdlmt</p>
<div><a href="https://linuxfr.org/forums/astucesdivers/posts/traiter-des-blocs-de-texte-pour-composer-de-gros-documents-flexibles.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/126853/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/astucesdivers/posts/traiter-des-blocs-de-texte-pour-composer-de-gros-documents-flexibles#comments">ouvrir dans le navigateur</a>
</p>
pasApas
https://linuxfr.org/nodes/126853/comments.atom
tag:linuxfr.org,2005:Post/41473
2020-10-03T18:19:50+02:00
2020-10-04T15:37:45+02:00
shell et make
<p>salut,<br>
je n'ai jamais regardé de pres comment make fonctionnait et je m'y met<br>
jai regardé de la doc en anglais mais je n'ai pas tout compris<br>
<a href="https://www.gnu.org/software/make/manual/make.pdf">https://www.gnu.org/software/make/manual/make.pdf</a><br>
du coup j'ai besoin de quelques explications et quelques revisions du shell:</p>
<p>à quoi sert le @ dans une sequence make? par exemple </p>
<p>id : <br>
@echo blabla</p>
<p>ensuite le .PHONY: element1, element2<br>
de ce que j'ai compris cela sert à "éviter" des élements dans l'execution d'une sequence du fichier ? <br>
est ce que le .PHONY s'applique uniquement au bloc d'instruction qui le suit? (par exemple s'il y a un .PHONY avant un bloc et un .PHONY apres un bloc)</p>
<p>qu'est ce qu'un bloc entre define endef?</p>
<p>qu'est ce que %.zip? (le signe % designe quoi?) et est ce que ca peut faire office de *?<br>
par exemple que produit ce bout de code dans un make:</p>
<p>%: %.xml<br>
@cp $< file.xml</p>
<p>enfin les variables $ imbriquées: <br>
par exemple quelles déclarations de variables nécessite le code suivant?</p>
<pre><code class="bash"><span class="nb">export</span> <span class="k">$(</span>word <span class="m">1</span>, <span class="k">$(</span><span class="nv">subst</span> <span class="o">=</span>, , <span class="k">$(</span><span class="m">1</span><span class="k">)))</span> :<span class="o">=</span> <span class="k">$(</span>word <span class="m">2</span>, <span class="k">$(</span><span class="nv">subst</span> <span class="o">=</span>, , <span class="k">$(</span><span class="m">1</span><span class="k">)))</span></code></pre>
<p>merci</p>
<div><a href="https://linuxfr.org/forums/linux-debian-ubuntu/posts/shell-et-make.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/121799/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/linux-debian-ubuntu/posts/shell-et-make#comments">ouvrir dans le navigateur</a>
</p>
kr1p
https://linuxfr.org/nodes/121799/comments.atom
tag:linuxfr.org,2005:Post/40755
2020-01-02T15:37:15+01:00
2020-01-02T15:37:15+01:00
SCRIPT SHELL
<p>bonjour tout le monde, je suis nouveau sur Linux et dans le cadre d'un stage je dois faire un petit script shell pour vérifier la présence des répertoires et les trier</p>
<p>je dois vérifier si les répertoires sont bien present sinon envoyer un incident.<br>
Extraire les targets des fichiers.<br>
Faire le tri de cette liste pour qu’il n’y est pas de doublons ou autre chose que des répertoires.<br>
Vérifier que chaque ligne est un répertoire et qu’il est présent ;<br>
Si le répertoire n’est pas présent créer une alerte >>> écriture dans le application.log d’une erreur.<br>
Création d’un code Olga pour pouvoir envoyer vers un dossier </p>
<p>je suis arrivé a cette commande pour affiner un peu la liste, mais je dois quand meme faire le script et je suis perdu. merci d'avance du coup de main les gars.</p>
<p>grep target *|awk -F: '{print $2}'|sort -u|wc -l</p>
<div><a href="https://linuxfr.org/forums/programmation-shell/posts/script-shell-70ccc51d-79e3-45f4-bf5d-2061e46f8060.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/119048/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-shell/posts/script-shell-70ccc51d-79e3-45f4-bf5d-2061e46f8060#comments">ouvrir dans le navigateur</a>
</p>
sidi
https://linuxfr.org/nodes/119048/comments.atom
tag:linuxfr.org,2005:Bookmark/1010
2019-12-14T10:27:31+01:00
2019-12-14T10:27:31+01:00
Advanced Bash Scripting Guide
<a href="https://devconnected.com/advanced-bash-scripting-guide/">https://devconnected.com/advanced-bash-scripting-guide/</a> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/118911/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/schkn/liens/advanced-bash-scripting-guide#comments">ouvrir dans le navigateur</a>
</p>
schkn
https://linuxfr.org/nodes/118911/comments.atom
tag:linuxfr.org,2005:Post/40314
2019-07-16T18:19:02+02:00
2019-07-17T11:07:19+02:00
Script awk : Afficher le nom du fichier en cours de traitement ?
<p>Bonjour,</p>
<p>Je suis bloqué sur un script et je ne sais pas comment m'en sortir. Je sollicite donc votre aide.</p>
<p>J'ai un script qui me permet d'afficher avec une mise en page des informations provenant de plusieurs CSV.</p>
<p>Voici le script :</p>
<pre><code class="sh"> cat /var/www/cgi-bin/LPAR_MAP/*.csv <span class="p">|</span> grep foo <span class="p">|</span> awk -F<span class="s1">',|;'</span> <span class="s1">'{print $2","$5","$6","$7}'</span> <span class="p">|</span> awk <span class="s1">'{</span>
<span class="s1"> print "LPARS :" $2</span>
<span class="s1"> print "RAM : " $5</span>
<span class="s1"> print "CPU 1 : " $6</span>
<span class="s1"> print "CPU 2 : " $7</span>
<span class="s1"> }'</span></code></pre>
<p>Ce script va afficher toutes les lignes des fichiers CSV, en ne gardant que les lignes contenant le mot " foo " et n'affichant que les colonnes 2,5,6 et 7.</p>
<p>Voici le type de CSV que je dois traiter :</p>
<blockquote>
<p>MO2PPC20;miaibv95;Running;AIX 6.1 6100-09-10-1731;60;0.6;4;DefaultPool;shared;uncap;64<br>
MO2PPC20;miaibv161;Running;AIX 6.1 6100-09-10-1731;60;1.2;4;DefaultPool;shared;uncap;128<br>
MO2PPC20;miaibv246;Running;AIX 6.1 6100-09-10-1731;12;0.5;1;DefaultPool;shared;uncap;64<br>
MO2PPC20;mplaix0088;Running;AIX 7.1 7100-05-02-1810;130;1.5;11;DefaultPool;shared;uncap;64<br>
MO2PPC20;mplaix0306;Running;AIX 7.1 7100-05-02-1810;180;0.5;3;DefaultPool;shared;uncap;64<br>
MO2PPC20;mplaix0087;Running;AIX 7.1 7100-05-02-1810;100;0.4;4;DefaultPool;shared;uncap;64<br>
MO2PPC20;miaibv182;Running;AIX 6.1 6100-09-10-1731;5;0.5;1;DefaultPool;shared;uncap;64<br>
MO2PPC20;mo2vio20b;Running;VIOS 2.2.5.20;7;1.0;2;DefaultPool;shared;uncap;192<br>
MO2PPC20;mo2vio20a;Running;VIOS 2.2.5.20;7;1.0;2;DefaultPool;shared;uncap;192<br>
MO2PPC21;mo2vio21b;Running;VIOS 2.2.6.10;6;1.5;3;DefaultPool;shared;uncap;192<br>
MO2PPC21;mo2vio21a;Running;VIOS 2.2.6.10;6;1.5;3;DefaultPool;shared;uncap;192<br>
MO2PPC21;oncwasp4;Running;AIX 6.1 6100-09-10-1731;15;0.6;2;DefaultPool;shared;uncap;128<br>
MO2PPC21;mplaix0122;Running;AIX 7.1 7100-05-02-1810;175;2.3;5;DefaultPool;shared;uncap;64</p>
</blockquote>
<p>Voici ce que ça donne en sorti :</p>
<pre><code>FRAME :
------------------
LPARS :mplaix0021
RAM : 11
CPU 1 : 1.0
CPU 2 : 2
LPARS :mplaix0005
RAM : 7
CPU 1 : 0.5
CPU 2 : 2
LPARS :mplaix0025
RAM : 400
CPU 1 : 36.0
CPU 2 : 46
LPARS :mplaix0019
RAM : 120
CPU 1 : 4.0
CPU 2 : 8
LPARS :mplaix0003
RAM : 26
CPU 1 : 0.5
CPU 2 : 2
LPARS :mplaix0007_OLD_DNTSTART
RAM : 0.25
CPU 1 : 0.7
CPU 2 : 7
LPARS :mplaix0009
RAM : 180
CPU 1 : 6.0
CPU 2 : 12
</code></pre>
<p>Le problème c'est que même si j'arrive à sélectionner seulement les lignes qui m’intéressent en faisant un grep sur certain mot( ici MO1PPC01 ), je ne sais pas à quel fichier appartiennent les informations affichées. L'idée serait d'avoir quelques choses dans ce style :</p>
<pre><code>FRAME :
------------------
File : XXXXX.csv
LPARS :mplaix0021
RAM : 11
CPU 1 : 1.0
CPU 2 : 2
LPARS :mplaix0005
RAM : 7
CPU 1 : 0.5
CPU 2 : 2
File : XXXX.csv
LPARS :mplaix0025
RAM : 400
CPU 1 : 36.0
CPU 2 : 46
LPARS :mplaix0019
RAM : 120
CPU 1 : 4.0
CPU 2 : 8
LPARS :mplaix0003
RAM : 26
CPU 1 : 0.5
CPU 2 : 2
File : XXXXXX.csv
LPARS :mplaix0007_OLD_DNTSTART
RAM : 0.25
CPU 1 : 0.7
CPU 2 : 7
LPARS :mplaix0009
RAM : 180
CPU 1 : 6.0
CPU 2 : 12
</code></pre>
<p>Bref, que je puisse afficher le nom du fichier avec, en dessous, les informations qui lui sont propres.</p>
<p>Auriez-vous une solution ? Merci d'avance ! :)</p>
<div><a href="https://linuxfr.org/forums/programmation-shell/posts/script-awk-afficher-le-nom-du-fichier-en-cours-de-traitement.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/117710/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-shell/posts/script-awk-afficher-le-nom-du-fichier-en-cours-de-traitement#comments">ouvrir dans le navigateur</a>
</p>
Makmy
https://linuxfr.org/nodes/117710/comments.atom
tag:linuxfr.org,2005:Diary/38585
2019-07-02T13:03:57+02:00
2019-07-02T13:03:57+02:00
Envoyer un SMS rapidement depuis le terminal
Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr
<p>Je continue à me servir des journaux LinuxFR comme sauvegarde pour mes scripts shells pourris.</p>
<p>J’utilise KDE Connect pour relier mon téléphone à mon ordinateur. Ça permet plein de choses, y compris répondre rapidement aux textos reçus. Par contre, impossible de commencer un texto depuis l’interface graphique. L’outil en ligne de commande, en revanche, le permet.</p>
<p>Voici un script qui permet d’envoyer un texto rapidement depuis la ligne de commande. Le script invoque votre éditeur de texte préféré (indiqué dans la variable d’environnement <code>EDITOR</code>, ou <code>nano</code> mais vous pouvez changer ça). Vous tapez le texto, puis il est envoyé au numéro qui est dans la variable d’environnement <code>TEL</code>, ou à celui qui est indiqué par défaut dans le script.</p>
<p>Utilisation (envoi d’un message vers le numéro par défaut) :</p>
<pre><code>texto
</code></pre>
<p>Utilisation (indication explicite du numéro — attention, sans précaution, le numéro est stocké dans votre historique shell — peut-être que vous ne souhaitez pas cela. On pourra utiliser des alias pour les numéros fréquents) :</p>
<pre><code>TEL=xxxx texto
</code></pre>
<p>Vous devez indiquer l’identifiant KDE-Connect de votre téléphone dans le script, ou dans la variable d’environnement <code>DEVICE</code>. Vous pouvez l’obtenir en exécutant :</p>
<pre><code>kdeconnect-cli -l
</code></pre>
<p>Le script (faites-en ce que vous voulez) :</p>
<pre><code class="sh"><span class="ch">#!/usr/bin/env sh</span>
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$TEL</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">""</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
<span class="nv">tel</span><span class="o">=</span><span class="s2">"xxx"</span> <span class="c1"># numéro par défaut (mettez le nom de la personne en commentaire par exemple)</span>
<span class="c1"># tel="xxx" # numéro 2</span>
<span class="c1"># tel="xxx" # numéro 3</span>
<span class="k">else</span>
<span class="nv">tel</span><span class="o">=</span><span class="s2">"</span><span class="nv">$TEL</span><span class="s2">"</span>
<span class="k">fi</span>
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$EDITOR</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">""</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
<span class="nv">EDITOR</span><span class="o">=</span>nano
<span class="k">fi</span>
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$DEVICE</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">""</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
<span class="nv">DEVICE</span><span class="o">=</span>xxx
<span class="k">fi</span>
<span class="nv">file</span><span class="o">=</span><span class="k">$(</span>mktemp<span class="k">)</span>
<span class="nv">$EDITOR</span> <span class="nv">$file</span>
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="k">$(</span>stat -c%s <span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span><span class="k">)</span><span class="s2">"</span> -lt <span class="m">3</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
<span class="nb">echo</span> <span class="s2">"Message vide, on n’envoie pas."</span>
<span class="k">else</span>
<span class="nb">echo</span> <span class="s2">"Envoi du message au numéro </span><span class="nv">$tel</span><span class="s2"> :"</span>
<span class="nb">echo</span> <span class="s2">"---"</span>
cat <span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span>
<span class="nb">echo</span> <span class="s2">"---"</span>
kdeconnect-cli -d <span class="s2">"</span><span class="nv">$DEVICE</span><span class="s2">"</span> --destination <span class="s2">"</span><span class="nv">$tel</span><span class="s2">"</span> --send-sms <span class="s2">"</span><span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span><span class="k">)</span><span class="s2">"</span>
<span class="k">fi</span>
rm <span class="s2">"</span><span class="nv">$file</span><span class="s2">"</span></code></pre>
<p>Je vous conseille de l’enregistrer dans un dossier de <code>$PATH</code> avec un nom très court. </p>
<p>Parfois, l’envoi du message rate, par exemple parce que le téléphone n’est pas connecté à l’ordinateur. Un message d’erreur est affiché par <code>kdeconnect-cli</code>. Votre message est affiché dans le terminal par le script, ce qui vous permet de le copier-coller pour le renvoyer. Ce script pourrait être pas mal amélioré de plein de manières, mais pour le moment je n’en ai pas l’usage.</p>
<div><a href="https://linuxfr.org/users/raphj/journaux/envoyer-un-sms-rapidement-depuis-le-terminal.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/117588/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/raphj/journaux/envoyer-un-sms-rapidement-depuis-le-terminal#comments">ouvrir dans le navigateur</a>
</p>
raphj
https://linuxfr.org/nodes/117588/comments.atom
tag:linuxfr.org,2005:Diary/38532
2019-05-26T14:24:38+02:00
2019-05-26T20:18:18+02:00
Récupérer une liste de lecture Apple
Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr
<p>Je suis récemment allé à une soirée où le choix musical m'a plu. La personne qui mettait sa musique a découvert qu'elle pouvait me partager sa liste en m'envoyant un lien qui pointe vers <code>https://music.apple.com/fr/playlist/[quelque chose]</code>.</p>
<p>Je n'ai pas iTunes. Mon but : récupérer cette liste et en faire un truc que je peux utiliser. Ce journal est aussi un prétexte pour jouer avec <a href="https://stedolan.github.io/jq/">jq</a>, un outil pour faire des requêtes sur des données formatées en JSON.</p>
<p>Prenons une liste trouvée au hasard sur internet et travaillons dessus en mode bidouille rapide et sale : <a href="https://music.apple.com/us/playlist/playlist-by-me/pl.ae7cd2db31fc4d519725b6747b9074a5">https://music.apple.com/us/playlist/playlist-by-me/pl.ae7cd2db31fc4d519725b6747b9074a5</a></p>
<p>Nous avons besoin de :</p>
<ul>
<li>Firefox et son ardoise Javascript</li>
<li>un éditeur de texte</li>
<li>un shell</li>
<li><code>jq</code></li>
<li><code>grep</code></li>
<li><code>curl</code></li>
</ul>
<p>Allons visiter la liste avec Firefox. On est accueilli par un bandeau « Vous devez activer les DRM pour certaines des pistes audio ou vidéo de cette page ». On va pouvoir ignorer ce message, cliquer sur sa croix et continuer notre affaire.</p>
<p>La liste est affichée avec des éléments HTML simples. Avec les outils de développement, on repère vite que :</p>
<ul>
<li>chaque morceau est dans un élément avec la classe <code>tracklist-item__text</code>
</li>
<li>dans les enfants de cet élément, on trouve le nom du morceau dans l'attribut <code>aria-label</code> d'un élément de classe <code>spread</code>
</li>
<li>dans les enfants de cet élément, on trouve les artistes dans un attribut <code>data-test-song-artist-url</code>
</li>
</ul>
<p>Sortons l'ardoise Javascript (Maj+F4). Dans cette ardoise, on peut lancer des codes en les sélectionnant et en faisant Ctrl+L.</p>
<p>Pour récupérer la liste des nœuds correspondant aux morceaux :</p>
<pre><code class="javascript"><span class="nb">document</span><span class="p">.</span><span class="nx">querySelectorAll</span><span class="p">(</span><span class="s2">".tracklist-item__text"</span><span class="p">)</span></code></pre>
<p>Ou sa version supposément plus efficace : </p>
<pre><code class="javascript"><span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="s2">"tracklist-item__text"</span><span class="p">)</span></code></pre>
<p>On va appliquer une fonction à chacun de ces éléments, pour récupérer le nom et l'artiste de chaque morceau.<br>
Pour cela on va utiliser la fonction <code>map</code>, qui appelle la fonction qu'on lui donne sur chaque élément et qui retourne un tableau contenant tous ces résultats. <code>map</code> est une méthode des tableaux, il faut donc convertir le résultat des expressions précédentes en tableau.</p>
<p>À l'ancienne :</p>
<pre><code class="javascript"><span class="p">[].</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="s2">"tracklist-item__text"</span><span class="p">))</span></code></pre>
<p>Avec la syntaxe de décomposition :</p>
<pre><code class="javascript"><span class="p">[...</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="s2">"tracklist-item__text"</span><span class="p">)]</span></code></pre>
<p>Sur ce tableau, on peut appeler <code>map</code> sur une fonction qui prend l'élément HTML correspondant au morceau, et qui le transforme en un objet contenant son titre et son artiste. On rajoute JSON.stringify pour récupérer le JSON :</p>
<pre><code class="javascript"><span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">([...</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="s2">"tracklist-item__text"</span><span class="p">)]).</span><span class="nx">map</span><span class="p">(</span>
<span class="nx">track</span> <span class="p">=></span> <span class="p">({</span>
<span class="nx">title</span><span class="o">:</span> <span class="nx">track</span><span class="p">.</span><span class="nx">querySelector</span><span class="p">(</span><span class="s2">".spread"</span><span class="p">).</span><span class="nx">getAttribute</span><span class="p">(</span><span class="s1">'aria-label'</span><span class="p">),</span>
<span class="nx">artist</span><span class="o">:</span> <span class="nx">track</span><span class="p">.</span><span class="nx">querySelector</span><span class="p">(</span><span class="s2">"[data-test-song-artist-url]"</span><span class="p">).</span><span class="nx">dataset</span><span class="p">.</span><span class="nx">testSongArtistUrl</span>
<span class="p">})</span>
<span class="p">));</span></code></pre>
<p>Avec Ctrl+L, on se retrouve avec un tableau du genre <code>[{'title': 'blah blah', 'artist': 'qqun'}, …]</code>.</p>
<p>On enregistre ça dans un fichier <code>liste.json</code>. Et là, on peut faire certaines choses :</p>
<p>Concaténer artiste et titre en vue de faire une recherche :</p>
<pre><code class="sh">jq -r <span class="s1">'map(.artist + " " + .title)'</span> liste.json</code></pre>
<p>L'opérateur <code>map</code> applique une transformation à chaque élément. L'opération est ici une concaténation de l'artiste et du nom du morceau. On obtient le résultat au format JSON.</p>
<p>Même chose, mais avec un résultat par ligne (sans JSON) :</p>
<pre><code class="sh">jq -r <span class="s1">'map(.artist + " " + .title) | .[]'</span> liste.json</code></pre>
<p>Obtenir les adresses de recherche correspondantes sur YouTube :</p>
<pre><code class="sh">jq -r <span class="s1">'map(.artist + " " + .title) | @uri "https://www.youtube.com/results?search_query=\(.[])"'</span> liste.json</code></pre>
<p>Dans une fonction qui lit le fichier json dans son entrée :</p>
<pre><code class="sh">youtube_searches<span class="o">()</span> <span class="o">{</span>
jq -r <span class="s1">'map(.artist + " " + .title) | @uri "https://www.youtube.com/results?search_query=\(.[])"'</span>
<span class="o">}</span></code></pre>
<p>Étant donnée une liste d'adresse de recherche YouTube, récupérer l'adresse du premier résultat à coup de <code>curl $URL | grep -o '/watch?…'</code>. Attention, la fonction suivante n'est pas très polie, elle fait une requête vers YouTube par morceau. Vous pouvez vous faire kicker par YouTube. Aussi, j'ai rajouté un petit <code>sleep 5</code> pour limiter les dégâts : </p>
<pre><code class="sh">youtube_first_results<span class="o">()</span> <span class="o">{</span>
<span class="k">while</span> <span class="nb">read</span> line<span class="p">;</span> <span class="k">do</span>
<span class="nb">printf</span> <span class="s2">"https://www.youtube.com%s\n"</span> <span class="s2">"</span><span class="k">$(</span>curl -s <span class="s2">"</span><span class="nv">$line</span><span class="s2">"</span> <span class="p">|</span> grep -o <span class="s1">'/watch?v=[^"]\+'</span> <span class="p">|</span> head -1<span class="k">)</span><span class="s2">"</span>
sleep <span class="m">5</span>
<span class="k">done</span>
<span class="o">}</span></code></pre>
<p>Le script complet :</p>
<pre><code class="sh"><span class="ch">#!/usr/bin/env sh</span>
youtube_searches<span class="o">()</span> <span class="o">{</span>
jq -r <span class="s1">'map(.artist + " " + .title) | @uri "https://www.youtube.com/results?search_query=\(.[])"'</span>
<span class="o">}</span>
youtube_first_results<span class="o">()</span> <span class="o">{</span>
<span class="k">while</span> <span class="nb">read</span> line<span class="p">;</span> <span class="k">do</span>
<span class="nb">printf</span> <span class="s2">"https://www.youtube.com%s\n"</span> <span class="s2">"</span><span class="k">$(</span>curl -s <span class="s2">"</span><span class="nv">$line</span><span class="s2">"</span> <span class="p">|</span> grep -o <span class="s1">'/watch?v=[^"]\+'</span> <span class="p">|</span> head -1<span class="k">)</span><span class="s2">"</span>
sleep <span class="m">5</span>
<span class="k">done</span>
<span class="o">}</span>
<<span class="s2">"liste.json"</span> youtube_searches <span class="p">|</span> youtube_first_results >> liste-youtube.txt</code></pre>
<p>Si vous souhaitez télécharger les morceaux plutôt qu'avoir leur liste, des outils font ça très bien et la fonction <code>youtube_first_results</code> est redondante avec des fonctionalités de téléchargement à partir d'une chaîne de recherche qui existent déjà.</p>
<p>Bon dimanche, et bon vote pour celles et ceux qui voteront cet après midi !</p>
<div><a href="https://linuxfr.org/users/raphj/journaux/recuperer-une-liste-de-lecture-apple.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/117314/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/raphj/journaux/recuperer-une-liste-de-lecture-apple#comments">ouvrir dans le navigateur</a>
</p>
raphj
https://linuxfr.org/nodes/117314/comments.atom
tag:linuxfr.org,2005:Post/39606
2018-11-02T10:40:04+01:00
2018-11-02T10:46:35+01:00
Script bash
<p>Bonjour, </p>
<p>j'essaye de faire un script qui permet de à un utilisateur de saisir le chemin du répertoire qui l'intéresse et d'ensuite le diriger vers ce dernier. </p>
<p>après plusieurs tentative je ne comprends pas pourquoi mon script ne marche pas : <br>
1) </p>
<pre><code class="sh"><span class="ch">#!ban/bash</span>
<span class="nb">read</span> -p <span class="s1">'veuillez indiquez un chemin '</span> chemin
<span class="nb">cd</span> < <span class="nb">echo</span> <span class="nv">$chemin</span>
<span class="nb">exec</span> <span class="nv">$SHELL</span></code></pre>
<p>2)</p>
<pre><code class="sh"> <span class="c1">#!ban/bash</span>
<span class="nb">read</span> -p <span class="s1">'quel répértoire vous intéresse aujourdhui?veuillez indiquez un chemin '</span> chemin
<span class="nb">cd</span> < <span class="nv">$chemin</span>
<span class="nb">exec</span> <span class="nv">$SHELL</span></code></pre>
<p>3)</p>
<pre><code class="sh"><span class="ch">#!ban/bash</span>
<span class="nb">read</span> -p <span class="s1">'quel répértoire vous intéresse aujourdhui?veuillez indiquez un chemin '</span> chemin
<span class="nb">cd</span> <span class="nv">$chemin</span>
<span class="nb">exec</span> <span class="nv">$SHELL</span></code></pre>
<p>je vous remercie d'avance pour votre aide, </p>
<div><a href="https://linuxfr.org/forums/linux-debutant/posts/script-bash-e302aa6d-6548-4cfe-92d9-7619ffabc683.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/115623/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/linux-debutant/posts/script-bash-e302aa6d-6548-4cfe-92d9-7619ffabc683#comments">ouvrir dans le navigateur</a>
</p>
HssTH
https://linuxfr.org/nodes/115623/comments.atom
tag:linuxfr.org,2005:Post/39465
2018-09-04T00:04:56+02:00
2018-09-04T00:04:56+02:00
script pour déplacer des fichiers vers répertoires de même noms
<p>Bonjour à tous. J'ai un souci actuellement,je suis à la recherche d'un script(à exécuter comme CRON sur un serveur d'hébergement web) me permettant de déplacer (pas copier) des fichiers (A.pdf, B.pdf, C.pdf,A.jpg, B.jpg…) présents dans un répertoire vers des dossiers existants portants leurs noms respectifs..(c'est-à dire fichier A.pdf,A.jpg….->dossierA , B.pdf->dossierB,…)Merci de m'éclairer un peu svp..</p>
<div><a href="https://linuxfr.org/forums/programmation-shell/posts/script-pour-deplacer-des-fichiers-vers-repertoires-de-meme-noms.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/115195/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-shell/posts/script-pour-deplacer-des-fichiers-vers-repertoires-de-meme-noms#comments">ouvrir dans le navigateur</a>
</p>
lecdm
https://linuxfr.org/nodes/115195/comments.atom