Beiträge von DosAmp


    Leerzeichen im Dateinamen sollten doch eigentlich kein Problem sein, weil ich als Trenner ja sowieso " - " nutze. (Also Leerzeichen Bindestrich Leerzeichen). Ich weiß halt offengestanden nicht mal wirklich wie ich die Frage formulieren soll.

    Keine Ahnung wie deine Dateinamen aussehen, aber die Schleife stolpert trotzdem über alle anderen Leerzeichen (zumindest vor dem Bindestrich, falls vorhanden) im Namen.
    Aus einem Verzeichnis mit dem Inhalt

    Zitat

    Dude - bla.mp4
    Foo Bar - Baz.mp4
    Kein Künstler.mp4


    macht deine Schleife mit dem standardmäßigen Worttrenner IFS (enthält Leerzeichen, Tabulator, Zeilenumbruch) folgende Zuweisungen an die Variable i:

    Zitat

    Dude
    Foo
    Bar
    Kein
    Künstler.mp4

    Sowohl für die Schleifenliste als auch den -inhalt (wenn du nicht "$i" statt $i schreiben willst) musst du den Worttrenner daher vorübergehend abschwächen. Mit sort -u bekommst du Duplikate für den gleichen Künstler entfernt:

    Code
    ORIG_IFS=$IFS; IFS=$'\n'; for i in $(find . -type f -name "*.mp4" -printf "%f\n" | awk -F ' - ' '{print $1}' | sort -u); do cp -v $i* /mnt/apex01/pfad/zum/Ziel/$i/; done; IFS=$ORIG_IFS; unset ORIG_IFS

    Diese Befehlszeile kann keine Dateien ohne Künstler kopieren (wegen dem Schrägstrich am Ende des cp-Befehls) und legt nach wie vor keine Zielverzeichnisse an.
    Das Gefrickel mit IFS lässt sich in diesem Fall auch nicht mit find … -print0 | xargs -0 … vermeiden, da xargs keine Subshell ausführen kann.

    Eine weitere Lösung, die nur dateiweise kopiert (alle Künstler genau einmal in einem Bash-Array abzulegen ist auch nicht ganz trivial), aber dafür ganz ohne find/awk auskommt:

    Code
    for i in *.mp4; do artist=${i%% - *}; if [[ $artist != $i ]]; then mkdir -p /mnt/apex01/pfad/zum/Ziel/"$artist" && cp -v "$i" /mnt/apex01/pfad/zum/Ziel/"$artist"; else cp -v "$i" /mnt/apex01/pfad/zum/Ziel/; fi; done


    Damit hab ich derzeit folgende Probleme:
    - trotz dem -v Schalter bekomme ich keine Ausgabe.
    - Gelegentlich läuft sich der Mist tot und muss von Hand via Ctrl+C gestoppt werden. Insbesondere wenn während des Kopiervorgangs Dateien hinzukommen od. wenn der Zielordner nicht vorhanden ist.

    Ich fürchte, das kann man nicht ganz so einfach reparieren. Mit Anführungszeichen kann man die Shell davon abhalten, Dateinamen mit Leerzeichen aufzuteilen, aber dann scheitert es trotzdem an Künstlern mit Leerzeichen bzw. Dateien ohne Künstler.

    Man kann es etwas verbessern, wenn man der Shell mitteilt, dass nur Zeilenende als Worttrenner zu nutzen ist. Trotzdem wird bei einem Künstler mit X Dateien jede X-mal kopiert.

    Code
    $ IFS=$'\n'; for i in $(ls | awk -F ' - ' '{print $1}'); do echo cp -v "$i"* "/zielverzeichnis/$i" ; done; IFS=$' \t\n'
    cp -v aaah.doc /zielverzeichnis/aaah.doc
    cp -v foo - bar.mp3 /zielverzeichnis/foo
    cp -v kein künstler.xlsx /zielverzeichnis/kein künstler.xlsx
    cp -v test fighters - bla bla.mp3 test fighters - blub.mp3 /zielverzeichnis/test fighters
    cp -v test fighters - bla bla.mp3 test fighters - blub.mp3 /zielverzeichnis/test fighters

    Wenn man schon awk nutzt, kann man damit natürlich ein kleines Programm schreiben, hier zur Verdeutlichung über mehrere Zeilen (wie in Shell- oder Javascript-Syntax beendet entweder ein Semikolon oder eine neue Zeile einen Befehl). Die erzeugten Shell-Befehle werden tatsächlich ausgeführt, wenn man die gesamte Befehlszeile in eval $( ... ) steckt.

    Das könnte man nun noch weiter ausbauen, etwa durch ein zusätzliches

    Code
    print "mkdir -p \"" target "\""


    oder indem man install statt cp missbraucht.


    Last Christmas, you played me this song
    And the very next day, you played it again
    This year, to spare me my ears
    I'm plugging them up with seashells

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Mit VGA kommt die mit meinen Full-HD-Fernseher klar, was mich schon etwas wundert.

    Ein RAMDAC, der einen professionellen Röhrenbildschirm mit 1600×1200 oder mehr (John Carmacks 28-Zoll-Arbeitsgerät lief angeblich auf 2048×1152) bei vernünftiger Bildwiederholrate ansteuern kann, sollte schon rein rechnerisch kein Problem mit 1920×1080 bei nur 60 Hz haben.
    Nicht umsonst haben Flachbildfernseher ihren Ursprung in der Computer-Branche.


    Es geht nicht darum, den 1920×1200-Monitor gewaltsam mit der Ati Radeon 9200 AGP zu vereinen

    Es ging mir auch nur darum behilflich zu sein herauszufinden, ob es sich tatsächlich um genau diese Einschränkung der Hardware handelt, die sich meist darin niederschlägt dass hohe Auflösungen erst gar nicht zur Verfügung stehen, oder eher einen Defekt oder einen Defizit der Software.
    Wie Dirk sagt ist letzteres unwahrscheinlich, solange der Kernel auch keine Meldungen ausgibt, wenn das Bild flackert.

    Im IRC wurde mir seinerseits mitgeteilt, dass bezüglich DVI-Anbindung die Digitalausgabe vieler AGP-Grafikkarten hinter der Bandbreite, die ein einzelner DVI-Link bzw. HDMI <1.3 zu leisten vermag, deutlich hinterherhängt. Mit einer ATI Radeon 9000 Pro (eigentlich Sparversion der 8500) hatte ich da eigentlich keine Probleme 1920×1080@60 zu betreiben, wohl aber eine Nvidia GeForce 4 Ti 4200 die nur genügend Leistung über den VGA-DAC bot.
    Mit einem ausreichend geschirmten Kabel ist 1920×1200 testweise auch über VGA zu ertragen, falls das ausgeschlossen werden soll.

    Das denke ich gerade auch, das Windows-Setup sollte außer in \EFI\Microsoft und \EFI\Boot nichts zu werkeln haben.
    Auf jeden Fall würde ich mir mal die BIOS-Bootreihenfolge (z. B. "ubuntu" vs. "Windows Boot Loader" vs. Laufwerk XY) genauer ansehen. Für GRUB ist das ein optionales Flag, sich neben dem eigenen Ordner (z. B. \EFI\Ubuntu) auch in den Rückfall-Pfad zu installieren.
    https://unix.stackexchange.com/a/571173


    Das ist normal. Macht Windows schon immer.

    Genau das macht Windows seit UEFI eigentlich nicht mehr.
    Ich könnte mir zwar vorstellen, dass auf der EFI-Systempartition BOOTX64.EFI und damit die Bootoption für das entsprechende Laufwerk überschrieben werden kann, aber das ändert nichts am Firmware-Eintrag für den Linux-Bootlader. Eher verschwindet der mal durch ein Firmware-Update, das den gesamten NVRAM zurücksetzt.

    Ich war erst vom gegenteiligen Effekt ausgegangen – als ich Linux noch mit Gummiboot bzw. systemd-boot gestartet habe und Kernel + initramfs mangels Unterstützung von Linux-Dateisystemen auf der EFI-Systempartition liegen mussten, hat etwas auch regelmäßig das FAT32-Dateisystem auf dieser zerschossen. Soweit das immer noch auftritt, habe ich es nicht wieder erlebt, da jetzt GRUB bzw. rEFInd im Einsatz sind, die sich mit ihren eigenen Treiber alles benötigte ohne Probleme aus /boot ziehen können. Eventuell war auch hier Windows 10 nicht ganz unschuldig daran.

    Auch wenn ich persönlich ungerne Dateisysteme ohne Journaling für interne Datenträger einsetzen würde, ist exFAT nach wie vor das moderne Upgrade zu FAT32. Nicht nur aus Zufall nutzt es denselben (MBR-)Partitionstyp wie NTFS, sondern hat wie NTFS auf Linux neben dem FUSE- auch einen Kerneltreiber. Letzterer ist deutlich praxiserprobter als ntfs3, welches vorher nur in Paragon-Software benutzt wurde, da dieser von Samsung aus ihrer Android-Kernelentwicklung beigetragen wurde.

    Anderseits kann man auch ganz verrückte Sachen machen und z. B. WinBtrfs einsetzen, wenn auch nicht unbedingt gleich auf der Systempartition.

    Ein Beispiel für den Umgang für read mit einer Pipeline:

    Standardmäßig führt Bash jedes Element einer Pipeline in seiner eigenen Subshell aus, was beim Idiom

    Code
    Befehl | while read var1 var2 var3; do ...; done


    nicht weiter auffällt und sogar oft wünschenswert ist, dass der äußere Geltungsbereich nicht mit $var1, $var2, $var3 verschmutzt wird.
    Mit der Shell-Option lastpipe kann man seit Bash 4.2 in einem Shell-Skript (oder einer interaktiven Shell mit deaktiviertem Job Control) das letzte Element einer Pipeline ohne Subshell ausführen, sodass zum Beispiel wie hier Variablen nicht-flüchtig gesetzt werden können. Dieses Verhalten ist ansonsten nur in der originalen Korn-Shell (ksh93) zu finden, aber genauso wenig in pdksh/mksh.
    ZSH und ältere Bash-Versionen müssen auf Prozessersetzung zurückgreifen, in anderen Shells geht dies nur mit einer temporären Datei:

    Code
    read -r jenv jverstr jversion < <("$JAVA" -version 2>&1 | head -n 1)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Ist zwar schade, dass Teile vom SDK nicht lesbar gewesen sind, aber Debug-Symbole und Header sind noch verzichtbar bzw. können im Bedarfsfall vermutlich anhand des Retail-SDKs rekonstruiert werden bzw. sind auch Teil vom gewöhnlichen Microsoft-C/C++-Compiler.
    Der Inhalt des Windows-Verzeichnisses sieht wie eine lustige Mischung zwischen Windows 2.x und 3.0 aus.


    Und was genau ist jetzt an den Video clickbaitygeschrieben?

    Vom äußeren Aussehen erfüllt der Kanal das Cliche des Noch-ein-weiterer-YouTuber, der gerade so genug Abonnenten (1000) und Abspielstunden (4000) für die Kanalmonetarisierung zusammengekratzt hat, um sich einen Briefkasten bei einem Social-Media-Manager leisten zu können, und jetzt einfach Content™ produziert, indem er jede Woche eine noch obskurere Linux-Distribution installiert, nachdem die großen Namen im unixoiden Umfeld abgehakt sind. Wie zu erwarten hinken diese natürlich in Feinschliff und Unterstützung hinterher, soweit sie nicht auf Vorarbeit durch die abgeleitete Distribution aufbauen.
    Das mag ganz nett als Hintergrundberieselung für Nerds sein, und ich möchte ihm in dieser Sache keine böse Profitgier oder unter Umständen sogar Absicht unterstellen, falls er sich diesen Duktus nur anderswo abgeschaut hat. Aber ist zum Scheitern verurteilt, ein größeres Publikum anzuziehen, wenn man nur 30+ Minuten Rundtouren ohne größere Bearbeitungen als Kapitelmarken einstellt – dann kann man sich auch gleich darauf beschränken, Live-Streams zu machen.

    ABBA – Don't Shut Me Down

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Ist das iwie ein Hardware Bug oder wie soll ich es verstehen :D
    234TBW für eine 120GB Kingston Hyper X Fury mit MLC Nands.

    Der Hersteller gibt die Lebenszeit des 120-GB-Modells mit 354 TB an, 19% Verschleiß davon wären also ungefähr 67 TB.
    Das passt nicht zum Rohwert für SMART-ID E7 (Rohwerte sind allerdings grundsätzlich herstellerabhängig und viele Tools interpretieren mindestens einen davon falsch), wohl aber zu dem für BD Herstellerspezifisch (und C2 Temperatur). Dieser Wert in KiB ergibt etwa 65974 GB geschriebene Daten, was 18,6% entspricht.