blog · git · desktop · images · contact


foo, bla.c, data, rofl.txt

2014-06-26

Das kennt jeder. Man probiert mal was aus, dabei fällt irgendeine Datei an. Mhm, ganz interessant – nächste Woche habe ich aber schon wieder vergessen, dass ich das ausprobiert hatte. Die Datei liegt aber immer noch da. Und weil man ja nur kurz was ausprobieren wollte, hat man der Datei natürlich keinen sinnvollen Namen gegeben.

Ehe man sich versieht, ist die Platte voll mit Müll. Wie geht man damit um?

Eine Strategie, die bei mir schon extrem viel brachte, ist, einfach grundsätzlich alles erst einmal in „/tmp“ zu machen. Genauer gesagt mache ich es in „/tmp/tmp“, weil in „/tmp“ direkt ja noch mehr Zeug rumfliegt. Das Unterverzeichnis hingegen ist immer leer und damit übersichtlicher. Der Knackpunkt ist heutzutage offensichtlich: „/tmp“ ist seit ein paar Jahren bei den meisten GNU/Linux-Systemen ein tmpfs und nach einem Reboot wieder komplett leer. Schont außerdem die SSD, weil’s komplett im RAM ist.

Ich habe zwei Shell-Aliases, die mir dabei helfen:

alias tt='mt /tmp/tmp; l'
alias t='mt /tmp; l'

Okay, was ist „mt“? Nein, es ist nicht das gute alte Tool zum Steuern von Tapedrives, sondern eine Shell-Funktion von mir:

mt()
{
    mkdir -p -- "$@" && cd -- "$@"
}

Diese Funktion ist nicht essenziell für diesen Artikel, aber trotzdem ganz nett, also wollte ich sie mal erwähnen.

Wenn ich also etwas ausprobieren möchte, mache ich ein Terminal auf und gebe „tt“ ein. Das tippt sich sehr leicht und man ist dann immer in einer Scratch-Area, in der man sich austoben kann. Dateien dürfen guten Gewissens „foo“ heißen, man muss also weniger aufpassen und wird nicht durch organisatorischen Unsinn ausgebremst.

Ich lasse auch Downloads grundsätzlich nach „/tmp/tmp“ laufen. Den meisten Kram brauche ich nämlich am nächsten Tag schon nicht mehr.

Das reicht aber nicht. Manchmal muss ich schlafen oder Feierabend machen oder sonstwas und brauche dann Dinge aus „/tmp/tmp“ am nächsten Tag noch. Was mache ich dann? Hierfür hatte ich bis vorhin noch kein System. Ich habe in solchen Fällen die Sachen immer nach „~/tmp“ kopiert – und hatte dort dann genau dasselbe Problem wie ganz am Anfang. Alles müllt voll. Man traut sich ja auch nicht, dort etwas zu löschen, vielleicht braucht man es ja noch. Immerhin war es schon so wichtig, dass man es von der RAM-Disk auf die Festplatte kopiert hat.

Ich brauche also ein Kriterium, anhand dessen ich entscheiden kann, ob Dinge weg können oder nicht. Harte Kriterien werden sich schwer finden lassen, aber ich glaube, das Datum ist ein sehr guter Hinweis. Daran kann ich zumindest ablesen: „Oh, das ist ja schon drei Monate her – das kann weg.“

Das hier soll mir dabei helfen:

alias th='mt ~/tmp/"$(date +%F)"; l'

Ich habe dann für jeden Tag ein eigenes Verzeichnis. Klar, das Datum steht auch in den Inodes drin, aber diese Angabe ist nicht zuverlässig. Ich habe beispielsweise aktuell in meinem „~/tmp“ eine Datei mit einem Timestamp von 2006. Das ist etwas Altes, was ich von einem anderen Datenträger runterkopiert hatte und „kurz“ aufheben wollte. Ist aber erst ein paar Wochen her und war nicht 2006 – der Timestamp der Originaldatei wird halt mitkopiert. Aus diesem Grund möchte ich lieber explizit ein Verzeichnis haben, das das aktuelle Datum im Namen trägt.

Meistens läuft es aber so ab, dass ich mein Gewurschtel eben in „/tmp/tmp“ beginne und dann entscheide, dass ich ein paar Dateien vorläufig behalten möchte. Komfortabler ist also das folgende „mth“, das die ausgewählten Dateien in die persistente Scratch-Area des heutigen Tages verschiebt:

#!/bin/bash

(( $# == 0 )) && exit 1

th=~/tmp/$(date +%F)
mkdir -p -- "$th"
mv -vi -- "$@" "$th"

Ich bin mir noch nicht ganz sicher, ob Verschieben hier die richtige Aktion ist. Kopieren birgt jedenfalls eine Gefahr: Vermutlich werde ich dann nämlich die jeweiligen Dateien von „/tmp/tmp“ nach „~/tmp/$datum“ kopieren und dann vergessen, dass ich sie kopiert habe. Dann mache ich in „/tmp/tmp“ weiter und im Home-Verzeichnis liegt gar nicht mehr der aktuelle Stand. Deshalb lieber Verschieben. Mit „th“ bin ich ja schnell in die heutige Scratch-Area gewechselt und kann dort weitermachen.

Ich bin gespannt, wie gut das funktionieren wird.

Mich würde auch interessieren, wie andere Leute das handhaben. Seid ihr so diszipliniert und vergebt immer sinnvolle Namen und/oder räumt schön brav den Müll weg? Oder habt ihr andere Systeme, die quasi-automatisiert das Problem lösen?

Vor Beginn der Minimalismus-Ära, als ich noch Icons auf dem Desktop hatte, hatte ich übrigens immer alles auf dem Desktop gemacht. Da hatte ich dann eine Art natürliches Limit: Wenn der Desktop voll mit Icons war, wurde es Zeit, aufzuräumen. Selbstverständlich lief das dann so ab, dass ich ein neues Verzeichnis namens „Zeug“, „Kram“ oder „mal aufräumen“ auf dem Desktop erstellt hatte, in das ich einfach alles verschob. Problem nicht gelöst, nur Desktop leer.

Comments?