Hvordan håndtere mellomrom i filnavn på Linux

Dec 14, 2024
Linux

Som de fleste operativsystemer, støtter Linux filnavn med mellomrom i seg. Men å bruke disse filnavnene på kommandolinjen er ikke alltid grei. Her er flere måter du kan håndtere filnavn som inneholder mellomrom.

Det ydmyke filnavnet
Hvorfor mellomrom i Linux -filnavn er vondt
Hvordan sitere og rømme rom
Hvordan fikse romproblemet ved kilden
Fanenes utvidelse gjør det enkelt å håndtere mellomrom
Hvordan bruke filnavn med mellomrom i bash -skript
Avstand ut, men ikke flassende

Det ydmyke filnavnet

Alt som er lagret på datamaskinens harddisk trenger å ha et navn. Uten navn ville ingen filer eksistere. Alle applikasjonene og demonene som lanseres når datamaskinen din starter opp, og all programvaren du bruker, må identifiseres og lagres i et filsystem. Denne identifikasjonen er navnet på filen. '

Det samme gjelder filene du oppretter eller installerer. Alle dokumentene, bildene og musikken din trenger filnavn. Uten filnavn kunne ingen av dine digitale eiendeler eksistere. Fordi filnavn er så viktige, prøver Linux hardt å pålegge like få regler om deres sammensetning som den kan.

På Linux kan et filnavn inneholde hvilken som helst karakter bortsett fra den fremre skråstreken “ / ”Og nullkarakteren, 0x00 . NULL -karakteren brukes til å markere enden av en streng, så det kan ikke være til stede i selve strengen, eller Linux vil avkortes filnavnet på NULL -karakterens plassering. “ / ”Forward Slash brukes som separator i katalogstier.

Filnavn er saksfølsomme, og kan være opptil 255 byte lange , inkludert nullkarakteren. Katalogstier kan være opptil 4096 byte lange, inkludert NULL -karakteren. Merk at dette er deres lengde i byte , som kanskje ikke tilsvarer direkte med tegn . 16-biters Unicode-tegn tar for eksempel to byte hver.

Retro-beregningsentusiaster og de med lange minner vil vite at i de første dagene av personlige datamaskiner, Microsofts diskoperativsystem , Dos, var case ufølsom og hadde en filnavnsgrense på åtte tegn, pluss en tre-karakter Utvidelse .

Du måtte være veldig gjennomtenkt og noen ganger kreativ når du navngir filer. Til sammenligning betyr friheten vi har i dag at vi kan navngi filer hva vi vil, med lite tanker til noe annet enn beskrivelsen vi lager for den filen.

Men med filnavn, det som reiser oss oftest, er ikke karakterene vi skriver, det er mellomrommene mellom dem.

Hvorfor mellomrom i Linux -filnavn er vondt

Skall som Bash vil tolke en rom-separert streng med ord som individuelle kommandoargumenter, ikke et eneste argument. Her er et eksempel ved å bruke ta på til Opprett en ny fil kalt "min nye fil.txt."

Som vi kan se, ls Viser oss at det er opprettet tre filer, en som heter "My", en annen som heter "New", og en til som heter "File.txt."

Noter det ta på Klaget ikke eller kastet en feil. Det utfører hva den tror vi ber det om å gjøre. Så det returnerer oss lydløst til kommandolinjen. Hvis vi ikke er motiverte til å sjekke, vet vi ikke at ting ikke har gått etter planen.

For å lage filen vi ønsket, må vi sitere eller rømme.

Hvordan sitere og rømme rom

Hvis vi siterer hele filnavnet, ta på vet at den trenger å behandle den siterte teksten som et enkelt argument.

Denne gangen får vi enkeltfilen som vi forventer.

Vi kan få det samme resultatet hvis vi bruker Backslash -karakteren " \ ”For å unnslippe mellomrommene. Ved å "slippe unna" områdene de ikke blir behandlet som spesialtegn - det vil si at argumenteseparatorer - blir de ansett for å være vanlige gamle rom.

Det fungerer, men rømming av rom gjør å skrive filnavn tregere og feilutsatt. Ting kan bli veldig stygge hvis du også har katalognavn med mellomrom i dem.

Denne kommandoen kopierer en enkelt tekstfil fra en katalog kalt “Dir One” til en katalog som heter “Dir Two”, og lagrer kopien som en bakfil. Og det er et ganske enkelt eksempel.

Hvordan fikse romproblemet ved kilden

Hvis de er dine egne filer, kan du ta politikkbeslutningen om å aldri bruke rom, og opprette (eller Bulk nytt navn ) filnavn som dette.

Riktignok er det en robust løsning, men det er fremdeles stygt. Det er bedre alternativer, for eksempel å bruke streker " - ”Eller understreker” _ ”For å skille ordene dine.

Begge disse vil omgå problemet, og de er lesbare. Hvis du ikke vil legge til ekstra tegn til filnavnene dine, kan du bruke Camelcase For å gjøre filnavnene dine lesbare, slik:

Fanenes utvidelse gjør det enkelt å håndtere mellomrom

Å ta i bruk en navnekonvensjon og holde seg til det vil selvfølgelig bare hjelpe når du har å gjøre med dine egne filer. Filer som kommer fra andre steder vil neppe følge ditt vedtatte navnekonvensjon.

Du kan bruke tabutvidelse for å hjelpe deg med å "fylle ut" filnavn for oss nøyaktig. La oss si at vi vil slett Bak -filen vi opprettet i “Dir Two”, ved hjelp av rm .

Vi starter med å skrive “RM Dir” fordi vi bruker rm Kommando og vi vet at katalognavnet starter med "Dir."

Å trykke på "Tab" -tasten får Bash til å skanne etter kamper i den gjeldende katalogen.

Det er to kataloger som starter med “Dir”, og i begge tilfeller er neste karakter et rom. Så Bash legger til backslash -karakteren “ \ ”Og et rom. Bash venter deretter på at vi skal gi neste karakter. Den trenger neste karakter for å skille mellom de to mulige kampene i denne katalogen.

Vi skriver en "T", for "to", og trykker deretter på "Tab" en gang til.

Bash fullfører katalognavnet for oss og venter på at vi skriver starten på filnavnet.

Vi har bare en fil i denne katalogen, så å skrive den første bokstaven i filnavnet, "M", er nok til å gi beskjed om hvilken fil vi vil bruke. Å skrive “M” og trykke på “Tab” fullfører filnavnet for oss, og “Enter” utfører hele kommandoen.

Faneutvidelse gjør det enkelt å sikre at du får filnavn riktig, og det fremskynder også å navigere og skrive på kommandolinjen generelt.

I SLEKT: Bruk fane fullføring for å skrive kommandoer raskere på et hvilket som helst operativsystem

Hvordan bruke filnavn med mellomrom i bash -skript

Det er ingen overraskelse det skript har nøyaktig de samme problemene med mellomrom i filnavn som kommandolinjen gjør. Hvis du passerer et filnavn som en variabel, må du sørge for at du siterer variabelnavnet.

Dette lille skriptet sjekker gjeldende katalog for filer som samsvarer med filmønsteret “*.txt”, og lagrer dem i en variabel som heter file_list . EN til Løkke brukes til å utføre en enkel handling på hver enkelt.

Kopier denne teksten til en redaktør og lagre den i en fil som heter "Files.sh." Bruk deretter de chmod kommando for å gjøre det kjøres.

Vi har noen filer i denne katalogen. Den ene har et enkelt filnavn, og de to andre bruker understreker " _ ”Eller streker” - ”I stedet for mellomrom. Dette er hva vi ser når vi kjører manuset.

Det ser ut til å fungere pent. Men la oss endre filene i katalogen for filer som inneholder mellomrom i navnene deres.

Hvert ord i hvert filnavn håndteres som om det var et filnavn på egen hånd, og derfor mislykkes skriptet. Men alt vi trenger å gjøre for å lage skripthåndtakene i filnavn er å sitere $ fil variabel inne i til Løkke.

Legg merke til at dollarskiltet “ $ ”Er inne i sitatene. Vi gjorde den endringen og lagret den i "files.sh" -skriptfilen. Denne gangen håndteres filnavnene riktig.

I SLEKT: Hvordan behandle en fillinje for linje i et Linux Bash -skript

Avstand ut, men ikke flassende

Å unngå mellomrom i dine egne filnavn vil bare ta deg så langt. Det er uunngåelig at du vil møte filer fra andre kilder med navn som inneholder mellomrom. Heldigvis, hvis du trenger å håndtere disse filene på kommandolinjen eller i skript, er det enkle måter å gjøre det på.


Linux - Mest populære artikler

Hvordan finne og slette Broken Symbolske lenker på Linux

Linux Nov 12, 2024

Fatmawati Achmad Zaenuri / Shutterstock De symbolske lenker på Linux er en fantastisk funksjon, men de kan bli ødelagte og igjen som peker på ingenting. S..


Hvordan tvinge brukere til å endre sine passord på Linux

Linux Nov 4, 2024

Ilya Titchev / Shutterstock Passord er sluttstenen til kontosikkerhet. Vi viser deg hvordan du kan tilbakestille passord, sette passord utløpsperiode, og hån..


Hvordan bruke “Her dokumenter” i Bash på Linux

Linux Mar 31, 2025

Fatmawati Achmad Zaenuri / Shutterstock De merkelig navngitte “her dokumenter” la deg bruke input / ut omdirigering inne Bash skript på Linux. De er en fi..


Hva er nytt i Linux Kernel 5.14

Linux Sep 9, 2025

Sean Locke Photography / Shutterstock Som Linux blir 30 år gammel, er kjernen 5.14 blitt utgitt. Den inneholder det vanlige brede tilbudet av interne under-th..


Hva er nytt i Fedora 35

Linux Nov 2, 2024

Fedora 35, Rød hatt Er fri Linux distribusjon (Distro), ble utgitt 2. november 2021. Fra en oppdatert desktop opplevelse til bak-scenene tweaks, tar vi en titt på a..


Hvordan drepe en Linux -prosess etter portnummer

Linux Oct 4, 2025

For å drepe en Linux -prosess trenger du IDen eller navnet. Hvis alt du vet er porten den bruker, kan du fortsatt drepe den? Ja, på flere forskjellige måter. Drepe prosesser Noen..


5 Ubuntu Linux -funksjoner du bør bruke

Linux Dec 6, 2024

Ubuntu Linux er Feature Rich og kommer med et kuratert utvalg av forhåndsinstallert programvare. Grav bare litt dypere, så finner du noen funksjoner du burde bruke. Ubuntu -opplevel..


Hvordan du lister opp miljøvariabler på linux

Linux Oct 31, 2025

På Linux har miljøvariabler viktige verdier og innstillinger. Skript, applikasjoner og skjell leser disse verdiene, ofte for å konfigurere seg selv, eller for å kontrollere deres oppførsel..


Kategorier