IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Commande "find" partiellement incomprise


Sujet :

Shell et commandes GNU

  1. #21
    Nouveau membre du Club Avatar de novae84
    Homme Profil pro
    Etudiant.
    Inscrit en
    Juin 2022
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Etudiant.

    Informations forums :
    Inscription : Juin 2022
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Je suppose plutot que les process sont morts lors de ta commande find.
    Pour le dernier, c'est normal avec fuse, uniquement l'utilisateur 130 à accès
    C'est à dire qu'ils était actifs quand j'ai lancé la commande, mais se sont terminés avant l’affichage du résultat, c'est bien cela ?
    Ou bien est-ce la commande find qui a influé d'une manière ou d'une autre sur leur statut ?

  2. #22
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par novae84 Voir le message
    Ce que je voulais dire, c'est que je pensais que la mise en arrière plan de la commande, aurait fait que les erreurs soient traitées comme le reste de la commande et ne soient pas affichées dans le terminal.
    Ben non. La mise en arrière plan d'une commande c'est juste le shell qui lance la commande et qui te rend la main sans attendre que la commande se termine. Cela ne change rien à l'affichage de ladite commande. Tu peux taper ls -l /etc ou ls -l /etc & tu verras la même chose au résultat.

    Citation Envoyé par novae84 Voir le message
    Mais je comprends mieux avec ta précision concernant le ;.
    La vraie question c'est surtout qu'est-ce que tu avais en tête en le mettant...

    Citation Envoyé par novae84 Voir le message
    Mais je ne m'explique pas pourquoi "Permission denied" (je suis root, comment le système ose-t-il s'adresser à moi ainsi ?!)
    /proc et /run sont de pseudo-fs. Déjà ils ont leur propre filesystem (tape df -v /proc /run) et donc n'obéissent pas tout à fait aux mêmes règles. Tu peux les exclure en rajoutant l'option "-xdev" au find mais cela exclut en fait tout autre filesystem quel qu'il soit (si /home est lui-aussi à part, lui-aussi est exclu).
    Donc la meilleure solution c'est encore de rediriger stderr. Tu sais que find ne pourra pas tout prendre mais tu sais aussi que ce qu'il ne prendra pas tu n'en n'as pas besoin alors finalement ça s'équilibre.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #23
    Nouveau membre du Club Avatar de novae84
    Homme Profil pro
    Etudiant.
    Inscrit en
    Juin 2022
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Etudiant.

    Informations forums :
    Inscription : Juin 2022
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    La mise en arrière plan d'une commande c'est juste le shell qui lance la commande et qui te rend la main sans attendre que la commande se termine. Cela ne change rien à l'affichage de ladite commande.
    Oui, cela parait logique après quelques tests sur d'autres commandes, je comprends mieux l’intérêt.

    Citation Envoyé par Sve@r Voir le message
    La vraie question c'est surtout qu'est-ce que tu avais en tête en le mettant...
    Bonne question...
    C'est un mauvais réflexe de ma part, car je l'avais utilisé dans la précédente commande (celle ou j'utilisais un -exec).
    Mais pour celle-ci, cela n'a pas de sens.

    Citation Envoyé par Sve@r Voir le message
    /proc et /run sont de pseudo-fs. Déjà ils ont leur propre filesystem (tape df -v /proc /run) et donc n'obéissent pas tout à fait aux mêmes règles. Tu peux les exclure en rajoutant l'option "-xdev" au find mais cela exclut en fait tout autre filesystem quel qu'il soit (si /home est lui-aussi à part, lui-aussi est exclu).
    Merci j'y vois plus clair du coup avec cette info !

  4. #24
    Nouveau membre du Club Avatar de novae84
    Homme Profil pro
    Etudiant.
    Inscrit en
    Juin 2022
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Etudiant.

    Informations forums :
    Inscription : Juin 2022
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Donc la meilleure solution c'est encore de rediriger stderr. Tu sais que find ne pourra pas tout prendre mais tu sais aussi que ce qu'il ne prendra pas tu n'en n'as pas besoin alors finalement ça s'équilibre.
    Du coup en allant au plus simple, j'ai fait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    └─$ sudo find / -mtime -7 -type f > FilesModif.txt 2>/dev/null &
    [1] 11490
    Ça me parait pas mal ainsi !

  5. #25
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    Attention, ici c'est toi qui as ajouté une difficulté avec l'enregistrement dans un fichier (et donc tes redirections), cela n'était pas demandé.
    Perso, avec une redirection dans un fichier, j'aimerais n'avoir que std1 dans le fichier mais avoir stderr à l'écran.

    Pour info, il nous arrive parfois d'utiliser aussi tee pour des redirections fichiers et écran
    $moi= ( !== ) ? : ;

  6. #26
    Nouveau membre du Club Avatar de novae84
    Homme Profil pro
    Etudiant.
    Inscrit en
    Juin 2022
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Etudiant.

    Informations forums :
    Inscription : Juin 2022
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Attention, ici c'est toi qui as ajouté une difficulté avec l'enregistrement dans un fichier (et donc tes redirections), cela n'était pas demandé.
    Perso, avec une redirection dans un fichier, j'aimerais n'avoir que std1 dans le fichier mais avoir stderr à l'écran.
    Je voulais voir si vous suiviez...
    Plus sérieusement, merci!

    J'avais ajouté cette redirection de STDOUT vers un fichier en solution de contournement, car je suis connecté en SSH et Ctrl+PgeUp ne "remonte" pas jusqu'en haut de ma liste de fichiers modifiés.
    Il faut que je règle cela.

    Du coup j'ai édité ainsi :
    sudo find / -mtime -7 -type f & .

    Citation Envoyé par papajoker Voir le message
    Pour info, il nous arrive parfois d'utiliser aussi tee pour des redirections fichiers et écran
    Qu'est-ce que tu veux dire par redirection "écran" ?

    J'ai regardé un peu la doc de tee vu que je ne connais pas du tout.
    Par rapport à l'utilisation de >, de ce que j'ai compris c'est qu'il permet de rediriger vers de multiples fichiers.
    Mais je pense que je n'ai pas compris toute la subtilité de la chose pour le coup.

  7. #27
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par novae84 Voir le message
    Qu'est-ce que tu veux dire par redirection "écran" ?
    Le tee (T) est un outil qui duplique la sortie d'une commande. La copie 1 va vers un fichier de ton choix et la sortie 2 part sur l'écran comme s'il n'y avait pas eu de redirection => ls -l |tee fic.

    Citation Envoyé par novae84 Voir le message
    Par rapport à l'utilisation de >, de ce que j'ai compris c'est qu'il permet de rediriger vers de multiples fichiers.
    Oui aussi => ls -l |tee fic1 |tee fic2 => la sortie écran du premier "tee" va dans le second qui le re-duplique encore. Ou bien ls -l |tee fic1 >fic2 => la sortie écran du tee va dans fic2.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #28
    Nouveau membre du Club Avatar de novae84
    Homme Profil pro
    Etudiant.
    Inscrit en
    Juin 2022
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Etudiant.

    Informations forums :
    Inscription : Juin 2022
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Comment ai-je pu me passer de cela tout ce temps ..
    C'est génial !

  9. #29
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    bien sûr, ls est un exemple bateau de commandes dont on souhaite traiter la sortie; pour obtenir des informations sur les fichiers, ou leur liste, on s'y prendra autrement.
    mais c'est un autre sujet...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #30
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    2 notes :

    • Si l'équivalent de > fichier.txt est | tee fichier.txt, alors l'équivalent de >> fichier.txt est | tee -a fichier.txt.
    • Si on veut faire un traitement pour le fichier et un traitement pour l'écran, avec bash, on utilisera la substitution de processus en sortie >( )! Par opposition à la substitution de processus en entrée <( ).
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      $ loremipsum.bash 
      Molestiae ipsam sed sit ea quae. Et maxime possimus est quae. A explicabo itaque nulla et. Et aut quos ad. Saepe temporibus expedita molestiae facilis explicabo magnam quisquam voluptatum. Deserunt aut voluptates et reiciendis earum est inventore qui.
      Blanditiis omnis ea placeat aut. Laborum qui earum maxime sint accusantium. Impedit tempora qui quod libero debitis delectus eius. Nisi iusto quam inventore fuga. Et placeat eligendi laborum rem id natus. Voluptatem quo qui provident et tempore.
      Expedita sint iusto et itaque quia harum accusamus. Est molestiae cupiditate ullam est accusamus. Unde quia ut assumenda animi. Voluptas magnam dolor ab et nam qui omnis et. Voluptatem amet ut quis dolores dolorum nam sint fugiat.
      Sint non magnam rerum. Enim aut delectus voluptatibus quia maiores aliquid autem. Eveniet id molestiae odit incidunt repellendus. Culpa error ducimus quod velit voluptatem nam amet. Id reiciendis illo sit. Est dolorem minus quia rerum molestias.
      Natus consectetur accusantium fuga id est accusantium. Cupiditate culpa corporis illo unde est voluptatem omnis. Corrupti nostrum accusantium error numquam aut. Earum quam impedit molestiae doloremque ea. Occaecati quibusdam quos eaque qui.
      Debitis sequi sunt ea. Reprehenderit nam dolor asperiores eos doloribus accusantium. Doloremque vel vel impedit tempore voluptas.
      Voluptatem distinctio porro est occaecati. Sit nostrum qui quisquam. Nisi est ut assumenda sit. Et cumque earum sed et eveniet voluptas enim ipsum.
      Ut esse nam fugit sit sint et. Quos sed tempore rerum adipisci fuga. Sit totam et recusandae dolorem cupiditate ut aliquid sunt.
      Et velit maxime delectus. Omnis et enim accusantium quaerat qui sapiente quam sunt. Sit consequatur et saepe ad magni maxime vitae laudantium. Laboriosam facere aut eum non.
      Rerum officia itaque quia. Consectetur sapiente ipsa maxime sequi excepturi tempora quia. Officiis esse sequi est reprehenderit ipsa. Fuga vel recusandae suscipit voluptatibus. Modi odio dolores voluptatem rerum ad commodi exercitationem et. Voluptatem rerum nihil eum earum.
      $ loremipsum.bash | tee >(sed 's@ @\n@g' - > log.txt) | sed 's@$@\n@' | head
      Ducimus ut laboriosam quas ullam. Dolorum sunt molestias saepe et et minima. Omnis distinctio sunt et et distinctio ipsa ut.
       
      Quaerat dolor magnam deleniti voluptatem est. Cupiditate eum cum sunt voluptas asperiores saepe quis. Laudantium aut itaque laboriosam dignissimos ab occaecati quo recusandae. Quis aut aut accusantium est commodi pariatur. Quis aperiam aut ex quod. Et vitae illo quos est rerum.
       
      Qui excepturi rerum dolorum laboriosam itaque. Sint iste nulla ex sapiente. Iste eligendi perferendis sunt est.
       
      Quo quidem quas laborum est atque fuga deserunt dolores. Enim eaque voluptatem sit dicta omnis. Aut exercitationem rerum esse. Voluptate mollitia officiis autem. Delectus qui corrupti minus eum dolore.
       
      Ut tempora facere qui quia dolorum ratione. Qui tempora accusantium et sit consequatur assumenda eaque. Illo quia aut distinctio veniam eum deserunt.
       
      $ head log.txt 
      Ducimus
      ut
      laboriosam
      quas
      ullam.
      Dolorum
      sunt
      molestias
      saepe
      et
      J'espère que cet exemple est éloquent.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #31
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    merci Flodelarab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -l / | tee >(sed 's/root/patron/g' - > /tmp/log.txt) | grep 'drwxr-xr'; echo -e "\ncontenu du fichier traité avec sed et avant grep:\n $(</tmp/log.txt)"
    $moi= ( !== ) ? : ;

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Commande VBA Find
    Par DAmiot1949 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/12/2013, 16h16
  2. Commande equivalent find sous windows powershell
    Par laoho dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 02/03/2012, 09h53
  3. commandes ls, find, grep
    Par toto753 dans le forum AIX
    Réponses: 3
    Dernier message: 03/06/2011, 15h15
  4. [FTP API org.apache.commons.net.ftp] Commande 'Quote'
    Par JnJp28 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 30/11/2007, 12h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo