Ihr mögt das, oder?

  • needanke
    link
    fedilink
    arrow-up
    9
    ·
    24 days ago

    Du korrigiert syntax? Magst du das korrigieren, damit es in Speicherorten mit Ordnern die Leerzeichen im Namen haben funktioniert?

    #!/bin/bash
    while IFS= read -d $'\0' -r "dir" ; do 
          dir=${dir:2};
          echo "${dir}"\#;
          cd "'""${dir}""'" ;
          ls;
          ##etwas anderes am machen
         # cd  ..;
    done < <(find ./  -mindepth 1 -maxdepth 1 -type d -print0)
    
      • optional
        link
        fedilink
        arrow-up
        4
        ·
        24 days ago

        Warum nicht einfach

        ls */
        

        Falls das find wichtig sein sollte, das nämlich nur echte Verzeichnisse findet und keine symbolischen Verknüpfungen auf Verzeichnisse, ginge auch

        find . -mindepth 1 -maxdepth 1 -type d -exec ls {} +
        
        • aaaaaaaaargh
          link
          fedilink
          arrow-up
          2
          ·
          24 days ago

          Warum nicht einfach ls */

          Weil ich das so verstanden hatte als dass OP gern irgendwas pro Verzeichnis ausführen wollte. Das ls ist nur Platzhalter.

          • optional
            link
            fedilink
            arrow-up
            1
            ·
            24 days ago

            Ah, den Kommentar hat mein Gehirn zwischen den ganzen "'"'${}'"'; auf dem Handy wohl einfach ausgeblendet. Für mich funktioniert das Script übrigens fast unverändert, sogar mit Ordnern die " " oder "

            " heißen. Ich habe nur die ganzen überflüssigen " und $ und { und ’ entfernt und das … am Ende wieder eingefügt. Ach ja, und das | exit eingefügt, damit das Script bei fehlschlagendem Verzeichniswechsel nicht komplett Amok läuft. Das war ein guter Tipp von shellcheck:

            #!/bin/bash
            while IFS= read -d $'\0' -r "dir" ; do·
                  cd "$dir" || exit
                  pwd
                  ls
                  touch penis                                                                                                                                                         
                  cd ..
            done < <(find ./  -mindepth 1 -maxdepth 1 -type d -print0)
            

            Je nachdem, was Du mit dem kram vorhast, bitte auch noch diese Sicherheitshinweise beachten.

            • aaaaaaaaargh
              link
              fedilink
              arrow-up
              1
              ·
              24 days ago

              Also entweder ist das eine Syntax, die ich nicht kenne (gut möglich), oder die ganze done-Zeile ergibt überhaupt keinen Sinn. Müsste es nicht eher << sein und auch eine Subshell, also $(...) anstatt einfach nur einem Klammernpaar?

              Und grundsätzlich weiß ich nicht, wieso man das so kompliziert pipen möchte.

              • optional
                link
                fedilink
                Deutsch
                arrow-up
                1
                ·
                edit-2
                24 days ago

                Ich hätte auch einfach find ... | while read ... geschrieben, aber warum einfach, wenn’s auch kompliziert geht.

                <(kommando) nennt sich Prozesssubstitution. Vereinfacht gesagt, wird die Ausgabe des Kommandos in eine benannte Pfeife umgeleitet und das <() dann durch deren Namen ersetzt. Das ist ganz praktisch, wenn ein Kommando Eingaben nur als Dateinamen erwartet und nicht mit stdein arbeiten kann. Z.B. um den Inhalt zweier Verzeichnisse zu vergleichen:

                diff <(ls foo/) <(ls bar/)
                

                Mit < leitet man den Inhalt einer Datei an die stdein eines Befehls weiter. Der Vorteil der Version von OP ist, dass für den While-Teil keine Untermuschel aufgemacht wird. Wenn man also nach der Schleife noch mal auf Variablen zurückgreifen möchte, die man in der Schleife gesetzt hat, funktioniert mein Beispiel mit dem | nicht, bzw. nicht in jeder Version von jeder Muschel.

  • Lemmchen
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    20 days ago

    Warum gibt es auf Feddit überhaupt so viele Rechtschreib- und Grammatikfehler? (Meine working theory ist, dass viele Jerboa auf einem AOSP-ROM nutzen und dort die Autokorrektur nicht vernünftig klappt.)

    Edit: Habe mich missverständlich ausgedrückt. Meinte eigentlich, dass der Texteditor komische Sachen macht, wenn man versucht (manuell) zu korrigieren. Gibt auch irgendwo ein Github issue dazu, ist aber angeblich ein AOSP-Bug, auch wenn er nur bei Jerboa auftritt, idk.

    • Zacryon
      link
      fedilink
      arrow-up
      7
      ·
      24 days ago

      Ich verachte Autokorrektur. Allerdings lege ich auch Wert auf korrekte Rechtschreibung und Grammatik. Selten vertippe ich mich, ohne es zu bemerken. Solange jeder Beteiligte alles ohne Probleme versteht, ist das auch gar nicht schlimm.

    • Zonen-Ranslite
      link
      fedilink
      arrow-up
      3
      ·
      24 days ago

      Ich nutze ein Samsung Handy und die Autokorrektur greift manchmal an den unmöglichsten Stellen unbemerkt ein, außerdem ist mein Deutsch schrecklich ^^

      • ComfortableRaspberry
        link
        fedilink
        arrow-up
        1
        ·
        24 days ago

        Arbeitshandy ist Samsung, finde ich tatsächlich nochmal ein bisschen schlimmer als iPhone. Es ist so übergriffig und mischt sich überall ein :(

        • optional
          link
          fedilink
          arrow-up
          5
          ·
          24 days ago

          Also ist weiß Nichte Wasser habt. bei meinem Hamster funktioniert die Autokorso ganz Fanta Tisch.

    • Krtek
      link
      fedilink
      arrow-up
      1
      ·
      24 days ago

      Unerwartetes Tastenbrett regiert (ohne Autokorrektur)

  • d_k_bo
    link
    fedilink
    arrow-up
    5
    ·
    24 days ago

    Ich habe es inzwischen auch aufgegeben, auf die Massen an Deppenleerzeichen hinzuweisen :/