Datei ohne Namen - was habe ich getan? Weg damit!

      Datei ohne Namen - was habe ich getan? Weg damit!

      Mir ist es nun ein paar mal passiert, dass ich irgendwie die datei . in /opt/bin/ erzeugt habe:

      Sieht etwas so aus:

      Quellcode

      1. # ls -al
      2. -rwxr-x--x 1 0 0 216 Apr 26 21:22 gettunnel
      3. -rwxr-xr-x 1 0 0 0 Apr 12 20:02
      4. lrwxrwxrwx 1 0 0 21 Apr 26 21:27 syslogd -> /opt/bin/busybox-mips
      5. lrwxrwxrwx 1 0 0 21 Apr 26 21:27 tail -> /opt/bin/busybox-mips


      Löschen erweist sich als "tricky" aber einfach zu loesen, man braucht (das gillt generell fuer Dateinamen die man nicht "schreiben" kann oder wie in dem Fall "ein Verzeichnis sind" (fuer das System)) nur die inode der Datei:

      Quellcode

      1. ​ ls -li
      2. 41 -rwxr-x--x 1 0 0 216 Apr 26 21:22 gettunnel
      3. 33 -rwxr-xr-x 1 0 0 0 Apr 12 20:02
      4. 35 lrwxrwxrwx 1 0 0 21 Apr 26 21:27 syslogd -> /opt/bin/busybox-mips
      5. 15 lrwxrwxrwx 1 0 0 21 Apr 26 21:27 tail -> /opt/bin/busybox-mips
      6. 26 -rwxrwxrwx 1 0 0 1576156 Apr 9 18:03 busybox-mips


      Huch, sieht ja anders aus? Jep! Mit inode vorne weg.... In meinem Fall ist es die "33" - nun gibt's mehrere Wege - ich mach es idR so:

      ​find . -inum 33 -delete - 33 ist hier die inode aus dem ​ls -li (i = inode)


      Ergebnis: Datei weg!

      Quellcode

      1. ​ ls -al
      2. -rwxr-x--x 1 0 0 216 Apr 26 21:22 gettunnel
      3. lrwxrwxrwx 1 0 0 21 Apr 26 21:27 syslogd -> /opt/bin/busybox-mips
      4. lrwxrwxrwx 1 0 0 21 Apr 26 21:27 tail -> /opt/bin/busybox-mips
      5. -rwxrwxrwx 1 0 0 1576156 Apr 9 18:03 busybox-mips


      Bleibt die Frage - wie ist dieses etwas dort hingekommen ... Mir egal - ich loesche es einfach ;)

      shell schrieb:

      Bleibt die Frage - wie ist dieses etwas dort hingekommen

      So was kann schnell passieren, wenn man Scripts testet... ich hab' mal versehentlich eine Binär-Datei als Namen für eine Andere Datei gesetzt (hatte mich bei der stderr-auf-stdin-Umleitung vertippt :D ) -- ls -la hat danach die halbe Binärdatei mit angezeigt ;)

      Ist auch nich sicher, daß deine Datei keinen Namen hatte - er wird nur aus non-printables bestanden haben, also nicht darstellbaren Zeichen.
      (könnte mit Vorstellen, daß da Windows-Zeilenenden 'ne Rolle spielen - diese sind für die Shell als normales Zeichen gültig, also auch Befehl oder Dateiname. Und geraten im schlimmsten Fall per Copy&Paste versehentlich unbemerkt in ein Script.)

      mfg, emkay