Som de fleste operativsystemer understøtter Linux filnavne med mellemrum i dem. Men at bruge disse filnavne på kommandolinjen er ikke altid ligetil. Her er flere måder, du kan håndtere filnavne, der indeholder rum.
Det ydmyge filnavn
Hvorfor mellemrum i Linux -filnavne er en smerte
Sådan citeres og undslipper Rum
Hvordan man løser rumproblemet ved sin kilde
Tabudvidelse gør det nemt at håndtere mellemrum
Sådan bruges filnavne med mellemrum i bash -scripts
Fordelt, men ikke flassende
Det ydmyge filnavn
Alt, der er gemt på din computers harddisk skal have et navn. Uden et navn ville der ikke eksistere nogen filer. Alle applikationer og dæmoner, der lanceres, når din computer starter op, og al den software, du bruger, skal identificeres og gemmes i et filsystem. Denne identifikation er navnet på filen. '
Det samme gælder for de filer, du opretter eller installerer. Alle dine dokumenter, billeder og musik har brug for filnavne. Uden filnavne kunne ingen af dine digitale aktiver eksistere. Fordi filnavne er så vigtige, prøver Linux hårdt at pålægge så få regler om deres sammensætning, som det kan.
På Linux kan et filnavn indeholde ethvert tegn bortset fra den forreste skråstreg “
”Og nulkarakteren,
0x00
. Nulkarakteren bruges til at markere afslutningen på en streng, så den kan ikke være til stede i selve strengen, eller Linux ville afkortet filnavnet på nulkarakterens position. Det "
”Fremspor skråstreg bruges som separator i katalogstier.
Filnavne er det store og små bogstaver, og kan være op til 255 byte lange , inklusive nulkarakteren. Katalogstier kan være op til 4096 byte lange, inklusive nulkarakteren. Bemærk, at dette er deres længde i bytes , som måske ikke sidestilles direkte til tegn . 16-bit Unicode-tegn, for eksempel, tager to byte hver.
Retro-computing-entusiaster og dem med lange minder vil vide, at i de tidlige dage af personlige computere, Microsofts diskoperativsystem , Dos, var case-følsom og havde en filnavngrænse på otte tegn plus en tre-karakter udvidelse .
Du måtte være meget tankevækkende og undertiden kreativ, da du navngav filer. Til sammenligning betyder den frihed, vi har i dag, at vi kan navngive filer, hvad vi vil, med lidt tanke til noget andet end den beskrivelse, vi opretter til den fil.
Men med filnavne er det, der oftest ikke er de figurer, vi skriver, det er mellemrummet mellem dem.
Hvorfor mellemrum i Linux -filnavne er en smerte
Skaller som Bash vil fortolke en rumskileret række af ord som individuelle kommandoargumenter, ikke et enkelt argument. Her er et eksempel ved hjælp af
røre ved
til
Opret en ny fil
kaldte "min nye fil.txt."
Som vi kan se,
ls
viser os, at der er oprettet tre filer, en kaldet "min", en anden kaldet "ny", og en mere kaldet "File.txt."
Noter det
røre ved
Klagede eller kastede ikke en fejl. Det udfører, hvad det mener, at vi beder det om at gøre. Så det returnerer os stille til kommandolinjen. Hvis vi ikke er motiverede til at tjekke, ved vi ikke, at tingene ikke er gået efter planen.
For at oprette den fil, vi ønskede, er vi nødt til at citere eller flygte.
Sådan citeres og undslipper Rum
Hvis vi citerer hele filnavnet,
røre ved
Ved, at det er nødt til at behandle den citerede tekst som et enkelt argument.
Denne gang får vi den enkelte fil, som vi forventer.
Vi kan få det samme resultat, hvis vi bruger backslash -karakteren “
\
”At undslippe rummet. Ved at "undslippe" de rum, de ikke behandles som specialtegn - det vil sige argumentseparatorer - betragtes de som almindelige gamle rum.
Det fungerer, men at undslippe mellemrum gør typning af filnavne langsommere og fejlagtigt udsat. Ting kan blive virkelig grimme, hvis du også har katalognavne med mellemrum i dem.
Denne kommando kopierer en enkelt tekstfil fra et bibliotek kaldet “Dir One” til et bibliotek kaldet “DIR TO” og gemmer kopien som en BAK -fil. Og det er et ret simpelt eksempel.
Hvordan man løser rumproblemet ved sin kilde
Hvis de er dine egne filer, kan du tage den politiske beslutning om aldrig at bruge mellemrum og oprette (eller bulk omdøb ) filnavne som denne.
Det er ganske vist en robust løsning, men den er stadig grim. Der er bedre muligheder, såsom at bruge instrumentbræt “
”Eller understreger”
_
”At adskille dine ord.
Begge disse vil undgå problemet, og de er læsbare. Hvis du ikke ønsker at tilføje ekstra tegn til dine filnavne, kan du bruge Camelcase For at gøre dine filnavne læses som dette:
Tabudvidelse gør det nemt at håndtere mellemrum
At vedtage en navnekonvention og holde sig til den vil naturligvis kun hjælpe, når du har at gøre med dine egne filer. Filer, der kommer fra andre steder, vil sandsynligvis ikke følge din vedtagne navnekonvention.
Du kan bruge Tab -udvidelse til at hjælpe dig nøjagtigt med at "udfylde" filnavne til os. Lad os sige, at vi vil
Slet
BAK -filen, vi oprettede i “Dir to”, ved hjælp af
rm
.
Vi starter med at skrive “RM Dir”, fordi vi bruger
rm
Kommando, og vi ved, at katalognavnet starter med "Dir."
Ved at trykke på “Tab” -tasten får Bash til at scanne efter kampe i det aktuelle bibliotek.
Der er to mapper, der starter med "Dir", og i begge tilfælde er den næste karakter et rum. Så Bash tilføjer tilbageslagskarakteren “
\
”Og et rum. Bash venter derefter på, at vi leverer den næste karakter. Det har brug for den næste karakter for at skelne mellem de to mulige kampe i dette bibliotek.
Vi skriver en "T", for "to", og tryk derefter på "Tab" endnu en gang.
Bash afslutter katalognavnet for os og venter på, at vi skriver starten af filnavnet.
Vi har kun en fil i dette bibliotek, så at skrive det første bogstav i filnavnet, "M", er nok til at fortælle, hvilken fil vi vil bruge. At skrive “M” og trykke på “Tab” afslutter filnavnet for os, og “Enter” udfører hele kommandoen.
Tabudvidelse gør det nemt at sikre, at du får filnavne rigtige, og det fremskynder også at navigere og skrive på kommandolinjen generelt.
RELATEREDE: Brug fanebladet til at skrive kommandoer hurtigere på ethvert operativsystem
Sådan bruges filnavne med mellemrum i bash -scripts
Det er ingen overraskelse scripts Har nøjagtigt de samme problemer med mellemrum i filnavne som kommandolinjen gør. Hvis du videregiver et filnavn som en variabel, skal du sørge for at citere variabelnavnet.
Dette lille script kontrollerer det aktuelle bibliotek for filer, der matcher filmønsteret “*.txt”, og gemmer dem i en variabel kaldet
File_list
.
EN
til
Loop
bruges til at udføre en simpel handling på hver enkelt.
Kopier denne tekst til en editor, og gem den i en fil kaldet "Files.sh." Brug derefter
det
Chmod
kommando
for at gøre det eksekverbart.
Vi har nogle filer i dette bibliotek. Den ene har et simpelt filnavn, og de andre to bruger understregninger “
_
”Eller strejker“
”I stedet for mellemrum. Dette er hvad vi ser, når vi kører scriptet.
Det ser ud til at fungere pænt. Men lad os ændre filerne i biblioteket for filer, der indeholder mellemrum i deres navne.
Hvert ord i hvert filnavn håndteres som om det var et filnavn på egen hånd, og derfor mislykkes manuskriptet. Men alt hvad vi skal gøre for at få script til at håndtere rum i filnavne er at citere
$ fil
Variabel inde i
til
Loop.
Bemærk, at dollartegnen “
$
”Er inde i citaterne. Vi foretog den ændring og gemte den i filen “Files.sh” -script. Denne gang håndteres filnavne korrekt.
RELATEREDE: Sådan behandles en fillinje for linje i et Linux Bash -script
Fordelt, men ikke flassende
At undgå rum i dine egne filnavne vil kun tage dig så langt. Det er uundgåeligt, at du støder på filer fra andre kilder med navne, der indeholder mellemrum. Heldigvis, hvis du har brug for at håndtere disse filer på kommandolinjen eller i scripts, er der nemme måder at gøre det på.