Der Linux Problem/Fragen-Thread

  • Mal eine Frage an die Arch-Nutzer: Ich hab' hier zur Uhrzeitsynchronisation das Paket ntpdate aus dem AUR im Einsatz. Nun wollte ich das bei einer Neuinstallation auch wieder installieren, jedoch bricht das Übersetzen mit einem Fehler ab. Dieser Fehler ist auch auf der ntpdate-Seite vom AUR vom User redfast00 angemerkt worden. Nun ist dort auch ein Bugfix vom User cstorm verlinkt worden, wo ein Patchfile angehangen wurde.

    Jetzt meine Frage: Wie kann ich diesen Patch anwenden/einbinden, damit das Übersetzen funktioniert? :b5:

    «Ich verstehe Ihre Frage so: Dass es Menschen gibt, die wünschen, dass ein solches OS als "Retro-OS" bezeichnet wird, ja? Mir ist nicht bekannt, dass solche Absichten bestehen, da HP-UX 9.x einfach ein altes OS ist. Niemand hat die Absicht, ein "Retro-OS" zu bauen.» Xaar, 2014

    Prozessor gesucht? -> Prozessoren, die ich abgeben kann (unter "Available for trading")
    "Überschüssige" Prozessoren oder Hardware? -> Einfach PN an mich schicken :b1: -> Hardware, die ich suche

  • Merci - hat auch ohne Schritt 3 geklappt mit pacman -U <Paketname> nach der Erstellung :D

    «Ich verstehe Ihre Frage so: Dass es Menschen gibt, die wünschen, dass ein solches OS als "Retro-OS" bezeichnet wird, ja? Mir ist nicht bekannt, dass solche Absichten bestehen, da HP-UX 9.x einfach ein altes OS ist. Niemand hat die Absicht, ein "Retro-OS" zu bauen.» Xaar, 2014

    Prozessor gesucht? -> Prozessoren, die ich abgeben kann (unter "Available for trading")
    "Überschüssige" Prozessoren oder Hardware? -> Einfach PN an mich schicken :b1: -> Hardware, die ich suche

    Einmal editiert, zuletzt von Xaar (8. Dezember 2022 um 23:42)

  • Mal noch eine Frage: Gibt's 'ne Möglichkeit, die Helligkeitsabstufungen für die Hintergrundbeleuchtung anzupassen?

    Wenn ich mit den Funktionstasten auf meinem ThinkPad die Display-Helligkeit hoch- oder runterschrauben will, passiert das ja in Stufen. Nun will ich gern die niedrigste Helligkeitsstufe vor "Hintergrundbeleuchtung komplett aus" nochmal etwas runter nehmen. Eine niedrigere Einstellung geht auf jeden Fall, da ich in der Energieverwaltung bspw. einstellen kann, dass die Helligkeit nach 10 Sekunden Inaktivität auf 5 % gesetzt wird, was nochmal dunkler ist, als die niedrigste Helligkeitsstufe (auf die es dann wieder mit der nächsten Mausbewegung geht).

    System ist 'n Arch Linux mit Xfce 4.16.

    «Ich verstehe Ihre Frage so: Dass es Menschen gibt, die wünschen, dass ein solches OS als "Retro-OS" bezeichnet wird, ja? Mir ist nicht bekannt, dass solche Absichten bestehen, da HP-UX 9.x einfach ein altes OS ist. Niemand hat die Absicht, ein "Retro-OS" zu bauen.» Xaar, 2014

    Prozessor gesucht? -> Prozessoren, die ich abgeben kann (unter "Available for trading")
    "Überschüssige" Prozessoren oder Hardware? -> Einfach PN an mich schicken :b1: -> Hardware, die ich suche

  • Hat sich erledigt: In der Energieverwaltung im Reiter "Allgemein" kann man die Anzahl der Helligkeitsstufen ("Helligkeitsschrittweite") ändern - hab' das jetzt auf 5 Stufen, exponentiell eingestellt, damit passt das ganz gut :)

    «Ich verstehe Ihre Frage so: Dass es Menschen gibt, die wünschen, dass ein solches OS als "Retro-OS" bezeichnet wird, ja? Mir ist nicht bekannt, dass solche Absichten bestehen, da HP-UX 9.x einfach ein altes OS ist. Niemand hat die Absicht, ein "Retro-OS" zu bauen.» Xaar, 2014

    Prozessor gesucht? -> Prozessoren, die ich abgeben kann (unter "Available for trading")
    "Überschüssige" Prozessoren oder Hardware? -> Einfach PN an mich schicken :b1: -> Hardware, die ich suche

  • Ich hab da mal wieder Scripting-Frage:

    Gegeben ist ein Ordner in dem mp4, flv und wmv-Dateien liegen, die nach dem Schema <Artist>-<Title> aufgebaut sind. Auf der Gegenseite liegen Ordner mit dem Artist, darunter dann die Mediendateien.

    Zur Zeit mache ich das mit folgendem Einzeiler:

    Code
    for i in $(ls | awk -F ' - ' '{print $1}'); do cp -v $i* /mnt/apex01/verzeichnis/zum/Ziel/$i |tee >>/home/tkoehler/cp.log; 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.

    Irgend eine Idee?


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.


  • 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.

  • Okay, ich komme nicht mehr mit. 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.

    Könnte man, um von ls wegzukommen, nicht auch auf find zurückgreifen? Also sowas hier in der Art:

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


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

    Einmal editiert, zuletzt von tk1908 (15. Dezember 2022 um 11:32)


  • 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
  • Also erstmal Danke für die Hilfe DosAmp.

    Dateinamen sind immer nach folgendem Schema aufgebaut:

    - Artist - Titel

    Gelegentlich habe ich aber auch, Artist.Titel, die werden aber derzeit mit ner anderen Routine weggeschoben, wobei sich hier das selbe Problem ergibt, da ich dort immer folgenden String verwendet habe:

    Code
    for i in $(ls | awk -F '.' '{print $1}'); do cp -v $i* /mnt/apex01/verzeichnis/zum/Ziel/$i |tee >>/home/tkoehler/cp.log; done

    Also wie vorher, nur halt mit dem ersten Punkt des Dateinamens als Trennzeichen.

    Ich gebe offen zu, dass mein Wissen hierzu leider noch sehr lückenhaft ist, bin aber generell offen für Vorschläge.


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

    Einmal editiert, zuletzt von tk1908 (15. Dezember 2022 um 14:07)


  • alle Künstler genau einmal in einem Bash-Array abzulegen ist auch nicht ganz trivial

    Die Funktionalität, die gandro seinerseits zu Farbe hingerissen hat, macht es möglich – jede Hashtabelle ist auch ein Set.

    gandro
    24. Februar 2009 um 11:07


    (Haben Macs immer noch bash 3.2 als letzte GPLv2-Version, nachdem alle Skriptsprachen herausgeschmissen und zsh zum Standard gemacht wurde?)
    Wohlgemerkt passt das trotzdem nicht mehr gescheit auf eine Zeile.

  • Sorry ich verstehe es nicht. Was ist x? Okay artist=${i%% - *} behandelt den ersten Fall, den ich genannt habe und artist=${i%%.*.mp4} den zweiten. Aber was bedeutet artists[$artist]=x?


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.


  • Was ist x? … was bedeutet artists[$artist]=x?

    Ein Dummy-Wert. Wie ich weiter getestet habe, reicht es selbst einen leeren String zu setzen.

    declare -A definiert ein assoziatives Array, in dem man Zeichenketten nicht nur unter beliebigen Ganzzahlen, sondern Zeichenketten ablegen kann. Das wird hier genutzt, um Künstler nur genau einmal im Array abzulegen, wenngleich als Schlüssel und nicht als Wert (der einfach überschrieben wird, wenn ein Künstler mehrfach abgelegt wird).
    Ein solches Array wird ungefähr so serialisiert:

    Code
    artists=(["Kein Künstler.mp4"]="x" ["Foo Bar"]="x" [Dude]="x" )

    ${!artists[@]} ist die Syntax, um alle Schlüssel eines Arrays zu erhalten (wieder in Anführungszeichen, damit Leerzeichen keine Wörter auftrennen).

  • Hab mal was ganz spezielles. In den letzten Jahren hatte ich mal nen Linux (Ubuntu Derivat?) da gabs ne Spielesammlung bei. Unter anderem ein Spiel wo es Minessweeper Mäßig darum ging Linien zwischen Zahlen zu ziehen. Weiß jemand wie das heißt, oder die Spielesammlung?

  • Beitrag von Xaar (2. April 2023 um 09:00)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Wie kann man eigentlich schauen, wo der Speicherplatz unter Linux hingeht? Habe im Rechner um die 50 GB belegt - und keine Ahnung mit was. Das Home ist glaube ich nicht das Problem. Letzte Woche hatte ich um die 30 GB Gelöscht, die durch nen schiefgegangenden Timestamp Instanz belegt waren. Paketmanager zeigt mir zwar an, was installiert ist, aber nicht was.

    Mir fehlt ein wenig die Systembereinigung von Windows. Die kübelt ja auch gerne das unnütze Zeug von Updates & Co mal weg.

  • Du könntest das Programm ncdu bemühen, das listet dir wie TreeSize Free oder WinDirStat die Ordner und Dateien nach Größe auf. Musst du dann nur mit root Rechten vom Stammverzeichnis / ausführen.

    tYLfrPk.png
    Desktop 1: Selbstbau 2022 - Intel Core i9-12900K - AMD Radeon RX 7900 XTX - 64GB RAM - 4TB SSD - Arch Linux
    Desktop 2: Apple Mac Pro Early 2009 - 2x Intel Xeon X5690 - AMD Radeon RX 560 - 64GB RAM - 2TB SSD - macOS 15 Sequoia
    Notebook 1: Lenovo ThinkPad X13 G4 - AMD Ryzen 7 7840U - AMD Radeon 780M - 32GB RAM - 2TB SSD - Arch Linux
    Notebook 2: Apple MacBook Air Late 2020 - M1 Prozessor - 16GB RAM - 512GB SSD - macOS 15 Sequoia
    Homeserver: Intel Core i7-7700K - 64GB RAM - 10TB SSD, 80TB HDD - Arch Linux

    Meine IBM/Lenovo ThinkPads:

    Spoiler anzeigen

    Lenovo X13 G4 Yoga - i7-1345U - 16GB RAM - 256GB SSD - LTE - Windows 11 Enterprise
    Lenovo X390 Yoga - i7-8565U - 16GB RAM - 256GB SSD - LTE - Windows 10 Enterprise
    Lenovo Thinkpad T470 - i5-7300U - 32GB RAM - 2TB SSD - Arch Linux
    Lenovo X230 - i5-3320M - 16GB RAM - 128GB SSD - UMTS - Arch Linux
    Lenovo T400 - P8600 - 4GB RAM - 320GB SSD - UMTS - Windows 7
    Lenovo X200s - SL9600 - 8GB RAM - 128GB SSD - UMTS - Windows 7
    IBM T43 - Pentium M 2,26 GHz - 2GB RAM - 80GB HDD - Windows XP
    IBM T23 - Pentium iii 1 GHz - 256MB RAM - 10GB HDD - Windows 2000
    IBM 380XD - Pentium MMX 233 MHz - 96MB RAM - 3GB HDD - Windows 98SE
    IBM 760EL - Pentium 120 MHz - 32MB RAM - 2GB HDD - Windows 95C
    IBM 701CS - 486er - XXMB RAM - XXXXMB HDD - Windows 95


  • Du könntest das Programm ncdu bemühen, das listet dir wie TreeSize Free oder WinDirStat die Ordner und Dateien nach Größe auf. Musst du dann nur mit root Rechten vom Stammverzeichnis / ausführen.

    Cool, kannte ich noch nicht.


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!