Hur man hanterar utrymmen i filnamn på Linux

Dec 14, 2024
Linux

Liksom de flesta operativsystem stöder Linux filnamn med mellanslag i dem. Men att använda dessa filnamn på kommandoraden är inte alltid enkelt. Här är flera sätt du kan hantera filnamn som innehåller utrymmen.

Det ödmjuka filnamnet
Varför utrymmen i Linux -filnamn är smärta
Hur man citerar och flyr ut utrymmen
Hur man fixar rymdproblemet vid källan
Tabutvidgningen gör det enkelt att hantera utrymmen
Hur man använder filnamn med mellanslag i bash -skript
Åtskilda, men inte flagniga

Det ödmjuka filnamnet

Allt lagrat på din dator hårddisk måste ha ett namn. Utan ett namn skulle inga filer existera. Alla applikationer och demoner som lanseras när datorn startar upp och all programvara som du använder måste identifieras och lagras i ett filsystem. Den identifieringen är namnet på filen. '

Samma sak gäller de filer som du skapar eller installerar. Alla dina dokument, bilder och musik behöver filnamn. Utan filnamn kunde ingen av dina digitala tillgångar existera. Eftersom filnamn är så viktiga försöker Linux hårt att införa så få regler om deras sammansättning som den kan.

På Linux kan ett filnamn innehålla valfritt tecken bortsett från den främre snedstrecket “ / ”Och nollkaraktären, 0x00 . Nollteckenet används för att markera slutet på en sträng, så att den inte kan vara närvarande i själva strängen, eller Linux skulle trunkera filnamnet vid nollkaraktärens position. " / ”Framåt snedstreck används som separator i katalogvägar.

Filnamn är skiftlägeskänsliga, och kan vara upp till 255 byte långa , inklusive nollkaraktären. Katalogvägar kan vara upp till 4096 byte långa, inklusive nollkaraktären. Observera att detta är deras längd i byte , som kanske inte motsvarar direkt tecken . 16-bitars Unicode-tecken, till exempel, tar två byte vardera.

Retro-computering entusiaster och de med långa minnen kommer att veta att under de tidiga dagarna av persondatorer, Microsofts diskoperativsystem , DOS, var skiftkänslig och hade en filnamngräns på åtta tecken, plus en tre-karaktär förlängning .

Du var tvungen att vara väldigt tankeväckande och ibland kreativ när du namngav filer. Som jämförelse innebär den frihet vi har idag att vi kan namnge filer vad vi vill, med lite tanke till något annat än den beskrivning vi skapar för den filen.

Men med filnamn, det som reser oss oftast är inte de karaktärer vi skriver, det är utrymmena mellan dem.

Varför utrymmen i Linux -filnamn är smärta

Skal som bash kommer att tolka en rymdseparerad sträng av ord som enskilda kommandoargument, inte ett enda argument. Här är ett exempel med att använda Rör till skapa en ny fil Kallade "min nya fil.txt."

Som vi kan se, ls Visar oss att det finns tre filer skapade, en som heter "My", en annan som heter "New", och en mer som heter "File.txt."

Anteckna det Rör Klagade inte eller kastade ett fel. Den utför vad den tror att vi ber det göra. Så det returnerar oss tyst till kommandoraden. Om vi inte är motiverade att kontrollera, vet vi inte att saker inte har gått enligt plan.

För att skapa den fil vi ville ha måste vi citera eller fly.

Hur man citerar och flyr ut utrymmen

Om vi citerar hela filnamnet, Rör vet att den måste behandla den citerade texten som ett enda argument.

Den här gången får vi den enda filen som vi förväntar oss.

Vi kan få samma resultat om vi använder backslash -karaktären “ \ ”För att undkomma utrymmen. Genom att "fly" från utrymmen behandlas de inte som specialtecken - det vill säga argumentavskiljare - de anses vara vanliga gamla utrymmen.

Det fungerar, men flyktutrymmen gör att skrivande filnamn långsammare och felbenägna. Saker kan bli riktigt ful om du har katalognamn med mellanslag i dem också.

Det kommandot kopierar en enda textfil från en katalog som heter "Dir One" till en katalog som heter "Dir Two" och sparar kopian som en Bak -fil. Och det är ett ganska enkelt exempel.

Hur man fixar rymdproblemet vid källan

Om de är dina egna filer kan du fatta politiska beslut att aldrig använda utrymmen och skapa (eller byte namn på ) filnamn som detta.

Det är visserligen en robust lösning men det är fortfarande ful. Det finns bättre alternativ, till exempel att använda streck ” - ”Eller understryker” _ ”För att separera dina ord.

Båda dessa kommer att undvika problemet och de är läsbara. Om du inte vill lägga till extra tecken till dina filnamn kan du använda Kamelcase För att göra dina filnamn läsbara, så här:

Tabutvidgningen gör det enkelt att hantera utrymmen

Naturligtvis kommer att anta en namnkonvention och hålla dig till den bara hjälpa när du har att göra med dina egna filer. Filer som kommer från någon annanstans är osannolikt att följa din antagna namnkonvention.

Du kan använda flikutvidgning för att hjälpa dig exakt "fylla i" filnamn för oss. Låt oss säga att vi vill radera Bak -filen som vi skapade i "Dir Two", med hjälp av rm .

Vi börjar med att skriva "rm dir" eftersom vi använder rm Kommando och vi vet att katalognamnet börjar med "Dir."

Att trycka på "Tab" -tangenten får Bash att söka efter matchningar i den aktuella katalogen.

Det finns två kataloger som börjar med "dir", och i båda fallen är nästa karaktär ett utrymme. Så Bash lägger till backslash -karaktären “ \ ”Och ett utrymme. Bash väntar sedan på att vi ska ge nästa karaktär. Den behöver nästa karaktär för att skilja mellan de två möjliga matcherna i denna katalog.

Vi skriver en "T", för "Two" och trycker sedan på "Tab" ännu en gång.

Bash slutför katalognamnet för oss och väntar på att vi skriver start på filnamnet.

Vi har bara en fil i den här katalogen, så att skriva den första bokstaven i filnamnet, "M", räcker för att låta Bash veta vilken fil vi vill använda. Att skriva "M" och trycka på "Tab" slutför filnamnet för oss och "Enter" kör hela kommandot.

Tabutvidgningen gör det enkelt att se till att du får filnamn rätt, och det påskyndar också att navigera och skriva på kommandoraden i allmänhet.

RELATERAD: Använd flikens slutförande för att skriva kommandon snabbare på alla operativsystem

Hur man använder filnamn med mellanslag i bash -skript

Det är ingen överraskning att skript har exakt samma problem med mellanslag i filnamn som kommandoraden gör. Om du skickar ett filnamn som variabel, se till att du citerar variabelnamnet.

Detta lilla skript kontrollerar den aktuella katalogen för filer som matchar filmönstret "*.txt" och lagrar dem i en variabel som heter file_list . En för slinga används för att utföra en enkel åtgärd på var och en.

Kopiera den här texten till en redaktör och spara den i en fil som heter "Files.sh." Använd sedan de chmod kommando för att göra det körbart.

Vi har några filer i den här katalogen. Den ena har ett enkelt filnamn, och de andra två använder understryker “ _ ”Eller streck” - ”I stället för utrymmen. Det här är vad vi ser när vi kör skriptet.

Det verkar fungera bra. Men låt oss ändra filerna i katalogen för filer som innehåller utrymmen i deras namn.

Varje ord i varje filnamn hanteras som om det var ett filnamn på egen hand, och så misslyckas skriptet. Men allt vi behöver göra för att få skripthandtaget i filnamn är att citera $ fil variabel inuti för slinga.

Observera att dollartecknet “ $ ”Är inne i citaten. Vi gjorde den förändringen och sparade den i skriptfilen "Files.sh". Den här gången hanteras filnamnen korrekt.

RELATERAD: Hur man bearbetar en fillinje för rad i ett Linux -bash -skript

Åtskilda, men inte flagniga

Att undvika utrymmen i dina egna filnamn tar dig bara så långt. Det är oundvikligt att du kommer att möta filer från andra källor med namn som innehåller utrymmen. Tack och lov, om du behöver hantera dessa filer på kommandoraden eller i skript, finns det enkla sätt att göra det.


Linux - Mest populära artiklar

Hur tvinga användarna att ändra sina lösenord på Linux

Linux Nov 4, 2024

Ilya Titchev / Shutterstock Lösenord är keystone till konto säkerhet. Vi visar hur du återställer lösenord, ställer in lösenordsutgångsperioder och ge..


Hur man använder DB-webbläsare för sqlite på Linux

Linux Dec 16, 2024

Fatmawati Achmad Zaenuri / Shutterstock DB Browser för sqlite Låter dig visa och redigera sqlite-databaser på Linux. Du kan designa, skapa och redi..


Hur hanterar Linux-servrar med cockpit-webbgränssnittet

Linux Dec 9, 2024

Fatmawati Achmad Zaenuri / Shutterstock Du kan enkelt övervaka och hantera flera Linux-datorer med cockpit, ett webbläsarbaserat administration och dashboard..


Hur man använder ”här Documents” i Bash på Linux

Linux Mar 31, 2025

Fatmawati Achmad Zaenuri / Shutterstock Den konstigt namngivna "här dokument" låter dig använda inmatning / ut omdirigering inuti bash-skript på Linux. De ..


Vad är nytt i Elementary OS 6 "ODIN"

Linux Aug 14, 2025

Elementary, Inc. Det finns Många Linux-distributioner (Distros) som människor hävdar är bra ersättningar för Windows eller MacOS. Men det finns få som..


Hur man integrerar applikationer och skript på ett Linux -skrivbord

Linux Oct 10, 2025

På Linux kommer en applikation utan skrivbordsfil inte att integreras med din skrivbordsmiljö. De flesta applikationer tillhandahåller en, men ibland måste du skapa en. Det är ganska enkel..


Hur man ställer in en statisk IP -adress i Ubuntu

Linux Oct 17, 2025

Ditt hemnätverk förlitar sig på IP -adresser för att dirigera data mellan enheter, och ibland kan du ändra en enhets adress. Så här ger du en Ubuntu Linux -dator en permanent IP -adress ..


7 misstag nya Linux -användare gör (och hur man undviker dem)

Linux Nov 11, 2024

Att lära sig Linux kan vara en frustrerande upplevelse där allt litet sak känns som en strid. Att undvika dessa vanliga misstag kommer att göra din introduktion och antagande av Linux mycke..


Kategorier