Hoe ga ik om met een bestandsnaam die begint met het koppelteken (-)?

Op een of andere manier heb ik op een gegeven moment per ongeluk een bestand in mijn thuismap gemaakt met de naam ‘-s’. Het is ongeveer 500 kb en ik heb geen idee of het belangrijke gegevens bevat of niet. Ik kan geen manier bedenken om ietsmet dit bestand te doen, omdat elke opdracht die ik gebruik om het te bekijken, kopiëren of verplaatsen de bestandsnaam als een argument interpreteert.

Ik heb geprobeerd het tussen aanhalingstekens te zetten, te ontsnappen met een backslash, een combinatie van beide, niets lijkt te werken.

Ook toen ik deze vraag voor het eerst aan mijn collega’s stelde, hebben we er een tijdje over nagedacht totdat iemand het eindelijk hoorde en vroeg: “Waarom hernoem je het niet gewoon?” Nadat ik hem had uitgelegd dat cp en mv allebei denken dat de bestandsnaam een argument is, dus dat het niet werkt, zei hij “nee, niet vanaf de commandoregel, doe het vanuit Gnome.” Ik volgde zijn advies schaapachtig op en het werkte. ECHTER ben ik nog steeds geïnteresseerd in hoe je dit dilemma zou oplossen als je geen windowmanager had en de commandoregel de enige optie was.


Antwoord 1, autoriteit 100%

Je kunt ernaar verwijzen met behulp van ./-filenameof met een commando kun je het na een dubbel streepje plaatsen:

rm -- -filename

Antwoord 2, autoriteit 18%

Je kunt er vanaf komen met:

rm ./-s

De opdracht rm(tenminste onder Ubuntu 10.04) vertelt je zelfs het volgende:

pax@pax-desktop:~$ rm -w
rm: invalid option -- 'w'
Try `rm ./-w' to remove the file `-w'.
Try `rm --help' for more information.

De reden dat werkt, is omdat rmniet denkt dat het een optie is (omdat het niet begint met -), maar het is nog steeds verwijst naar het specifieke bestand in de huidige directory .


Antwoord 3, Autoriteit 5%

u zou kunnen gebruiken -, b.v.:

rm -- -file

Antwoord 4

Naast het gebruik van rm, als u een taal kent, kunt u ze ook gebruiken. Ze worden niet beïnvloed door dergelijke shell wratten.

Ruby (1,9 +)

$ ruby -rfileutils -e 'FileUtils.rm("-s")'

of

$ ruby -e 'File.unlink("-s")'

Other episodes