Varför har vissa Windows-fil- och mappnamn en prick framför dem?
Medan de flesta av oss bara ser normala fil- och mappnamn på våra Windows-system kan andra ha stött på något lite oväntat - fil- och mappnamn med en punkt framför dem. Varför händer detta? Dagens SuperUser Q & A-post har svaret på en väldigt nyfiken läsarens fråga.
Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Foto med tillstånd av Domiriel (Flickr).
Frågan
SuperUser-läsaren Niko Bellic vill veta varför vissa Windows-filer och mappnamn har en prick framför dem:
Till exempel i Mina dokument katalog på mitt Windows-system Jag har hittat följande mappar:
- .ssh
- .omstörtning
Är det något slags namnkonvention som jag inte känner till?
Varför innehåller vissa Windows-fil- och mappnamn en prick framför dem?
Svaret
SuperUser bidragsgravar har svaret för oss:
Den här namngivningskonventionen kommer från Unix-liknande operativsystem (som Linux eller OSX) där det betyder a dold fil eller katalog. Det fungerar överallt, men det är främst att dölja konfigurationsfiler i din hemkatalog (dvs.. ~ / .cache / eller ~ / .plan) De kallas ofta dot-filer.
Dot-filer kan på ett sätt kallas den traditionella Unix som motsvarar Applikationsdata katalog på Windows. Under tiden ändras många Linux-program för att följa XDG-baskatalogspecifikationen och flytta sin konfiguration till ~ / .Config / och annan data till ~ / .Cache / och ~ / .Local / share /. Detta gör det mer liknar AppData \ Roaming och AppData \ Local.
Du har dessa .ssh och .omstörtning kataloger på Windows eftersom du har använt vissa program (specifikt OpenSSH och Subversion) som har hamnat för att använda Windows-system-API i stället för POSIX-enheter, men har inte justerats för några andra Windows-konventioner.
Ibland hoppas denna anpassning avsiktligt för att göra livet enklare för personer som använder Unix-liknande miljöer som Cygwin på sina Windows-system. Cygwin installerar till exempel standarduppsättningen Unix-liknande verktyg som ls, som ignorerar Windows dold flagga och bara hedrar punktfilen namn. Det är också lättare att synkronisera konfigurationer mellan en persons Windows och Linux / BSD / OSX-datorer om den delas på samma plats.
Dessa filer finns vanligtvis i användarens hemkatalog (dvs.. /home/name/.ssh på Linux eller C: \ Users \ namn \ .ssh på Windows 7 och senare). Det är ganska sällsynt att de sätts i Dokument eller Mina dokument underkataloger (de innehåller inte dokument).
Som Rob Pike skriver på Google+ var det en oavsiktlig funktion:
För länge sedan, som designen av Unix-filsystemet blev utarbetat, var posterna . och ... dök upp för att göra navigering enklare. Jag är inte säker, men jag tror ... gick in under Version 2: s omskrivning när filsystemet blev hierarkiskt (det hade en väldigt annorlunda struktur tidigt). När man skrev ls, men dessa filer visade sig, så antingen Ken eller Dennis lade ett enkelt test till programmet. Det var i assembler då, men koden i fråga motsvarade något sådant:
- om (namn [0] == '.') fortsätt;
Detta uttalande var lite kortare än vad det borde ha varit, vilket är:
- om (strcmp (namn, ".") == 0 || strcmp (namn, "...") == 0) fortsätt;
Men hej, det var lätt och två saker resulterade.
Först sattes ett dåligt prejudikat. Många andra lata programmerare introducerade buggar genom att göra samma förenkling. Faktiska filer som börjar med perioder hoppas ofta över när de ska räknas.
För det andra, och mycket värre, tanken på a dold eller punktfilen skapades. Som en konsekvens började mer lat programmerare att släppa filer i alles hemkatalog. Jag har inte mycket programvara installerad på datorn som jag använder för att skriva detta, men min hemkatalog har ungefär ett hundra dot-filer och jag vet inte ens vad de flesta är eller om de fortfarande behövs. Varje utvärdering av filnamn som går igenom min hemkatalog sänks av detta ackumulerade slam.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.