Hoe om te gaan met spaties in bestandsnamen op Linux

Dec 14, 2024
Linux

Zoals de meeste besturingssystemen ondersteunt Linux bestandsnamen met spaties erin. Maar het gebruik van deze bestandsnamen op de opdrachtregel is niet altijd eenvoudig. Hier zijn verschillende manieren waarop u bestandsnamen met spaties kunt verwerken.

De bescheiden bestandsnaam
Waarom spaties in Linux -bestandsnamen lastig zijn
Hoe u spaties kunt citeren en ontsnappen
Hoe het ruimteprobleem op te lossen bij de bron
Tab -uitbreiding maakt het omgaan met ruimtes gemakkelijk
Hoe bestandsnamen te gebruiken met spaties in bash -scripts
Uit elkaar gezet, maar niet schilferig

De bescheiden bestandsnaam

Alles opgeslagen op uw computer harde schijf moet een naam hebben. Zonder een naam zouden er geen bestanden bestaan. Alle applicaties en daemons die worden gelanceerd wanneer uw computer opstart, en alle software die u gebruikt, moeten worden geïdentificeerd en opgeslagen in een bestandssysteem. Die identificatie is de naam van het bestand. '

Hetzelfde geldt voor de bestanden die u maakt of installeert. Al uw documenten, afbeeldingen en muziek hebben bestandsnamen nodig. Zonder bestandsnamen zou geen van uw digitale activa kunnen bestaan. Omdat bestandsnamen zo belangrijk zijn, probeert Linux moeilijk zo weinig regels op te leggen over hun samenstelling als het kan.

Op Linux kan een bestandsnaam elk personage bevatten, afgezien van de voorwaartse schuine streep " / 'En het nul karakter, 0x00 . Het NULL -teken wordt gebruikt om het uiteinde van een string te markeren, dus het kan niet aanwezig zijn in de string zelf, of Linux zou de bestandsnaam op de positie van het NULL -teken afkappen. De " / ”Voorwaartse slash wordt gebruikt als de separator in directory -paden.

Bestandsnamen zijn case-gevoelig, en kan maximaal 255 bytes lang zijn , inclusief het NULL -personage. Directory -paden kunnen maximaal 4096 bytes lang zijn, inclusief het nulkarakter. Merk op dat dit hun lengte is in bytes , die mogelijk niet rechtstreeks gelijk is aan tekens . 16-bit Unicode-tekens nemen bijvoorbeeld elk twee bytes.

Retro-computer-enthousiastelingen en mensen met lange herinneringen zullen weten dat in de begindagen van personal computers, Het schijfbesturingssysteem van Microsoft , DOS, was case-ongevoelig en had een bestandsnaamlimiet van acht tekens, plus een drie-tekens verlenging .

Je moest heel attent en soms creatief zijn toen je bestanden noemde. Ter vergelijking: de vrijheid die we vandaag hebben betekent dat we bestanden kunnen noemen wat we maar willen, met weinig nadenken over iets anders dan de beschrijving die we voor dat bestand maken.

Maar met bestandsnamen, wat ons het vaakst op gaat, zijn niet de personages die we typen, het zijn de ruimtes tussen hen.

Waarom spaties in Linux -bestandsnamen lastig zijn

Shells zoals bash interpreteren een space-gescheiden reeks woorden als individuele opdrachtargumenten, geen enkel argument. Hier is een voorbeeld, gebruiken aanraken naar Maak een nieuw bestand genaamd "mijn nieuwe bestand.txt."

Zoals we kunnen zien, LS laat ons zien dat er drie bestanden zijn gemaakt, een genaamd "My", een andere genaamd "Nieuw", en nog een genaamd "File.txt".

Let daar op aanraken Klaagde niet of gooide een fout niet. Het voert uit wat het denkt dat we het vragen om te doen. Dus het geeft ons stilletjes terug naar de opdrachtregel. Als we niet gemotiveerd zijn om te controleren, weten we niet dat dingen niet volgens plan zijn verlopen.

Om het bestand te maken dat we wilden, moeten we citeren of ontsnappen.

Hoe u spaties kunt citeren en ontsnappen

Als we de hele bestandsnaam citeren, aanraken weet dat het de geciteerde tekst als een enkel argument moet behandelen.

Deze keer krijgen we het enkele bestand dat we verwachten.

We kunnen hetzelfde resultaat krijgen als we het backslash -teken gebruiken " \ 'Om aan de ruimtes te ontsnappen. Door de spaties te "ontsnappen", worden ze niet behandeld als speciale personages - dat wil zeggen argumentafscheiders - worden ze beschouwd als gewoon oude ruimtes.

Dat werkt, maar ontsnappende spaties maakt het typen van bestandsnamen langzamer en foutgevoelig. Dingen kunnen echt lelijk worden als je ook directorynamen met ruimtes erin hebt.

Die opdracht kopieert een enkel tekstbestand uit een directory genaamd "Dir One" naar een directory genaamd "Dir Two" en slaat de kopie op als een BAK -bestand. En het is een vrij eenvoudig voorbeeld.

Hoe het ruimteprobleem op te lossen bij de bron

Als het uw eigen bestanden zijn, kunt u de beleidsbeslissing nemen om nooit spaties te gebruiken en (of te creëren Bulk hernoeming ) bestandsnamen zoals deze.

Toegegeven, dat is een robuuste oplossing, maar het is nog steeds lelijk. Er zijn betere opties, zoals het gebruik van streepjes " - "Of onderstreept" _ 'Om uw woorden te scheiden.

Beide zullen het probleem omzeilen en ze zijn leesbaar. Als u geen extra tekens aan uw bestandsnamen wilt toevoegen, kunt u gebruiken Kameelcase Om uw bestandsnamen leesbaar te maken, zoals deze:

Tab -uitbreiding maakt het omgaan met ruimtes gemakkelijk

Natuurlijk zal het aannemen van een naamgevingsconventie en het vasthouden hieraan alleen als u te maken hebt met uw eigen bestanden. Bestanden die ergens anders vandaan komen, zullen waarschijnlijk niet uw geadopteerde naamgevingsconventie volgen.

U kunt de TAB -uitbreiding gebruiken om u te helpen bij het nauwkeurig "invullen" van bestandsnamen voor ons. Laten we zeggen dat we dat willen verwijderen het BAK -bestand dat we hebben gemaakt in "Dir Two", met behulp van RM .

We beginnen met het typen van "RM Dir" omdat we de RM Commando en we weten dat de directorynaam begint met "dir."

Als u op de toets "Tab" drukt, wordt BASH gescand op wedstrijden in de huidige map.

Er zijn twee mappen die beginnen met "dir", en in beide gevallen is het volgende personage een ruimte. Dus Bash voegt het backslash -personage toe " \ 'En een ruimte. Bash wacht vervolgens tot we het volgende personage bieden. Het heeft het volgende personage nodig om onderscheid te maken tussen de twee mogelijke wedstrijden in deze map.

We typen een "T", voor "twee", en drukken vervolgens opnieuw op "Tab".

BASH maakt de directorynaam voor ons voltooid en wacht tot ons het begin van de bestandsnaam typt.

We hebben maar één bestand in deze map, dus het typen van de eerste letter van de bestandsnaam, "M", is voldoende om Bash te laten weten welk bestand we willen gebruiken. Het typen van "M" en het op "Tab" drukt, maakt de bestandsnaam voor ons voltooid en "Enter" voert de volledige opdracht uit.

Tab -uitbreiding maakt het gemakkelijk om ervoor te zorgen dat u bestandsnamen goed krijgt, en het versnelt ook navigeren en typen op de opdrachtregel in het algemeen.

VERWANT: Gebruik het tabblad Voltooiing om opdrachten sneller op elk besturingssysteem te typen

Hoe bestandsnamen te gebruiken met spaties in bash -scripts

Het is dat geen verrassing scripts Heb precies dezelfde problemen met spaties in bestandsnamen als de opdrachtregel. Als u een bestandsnaam als variabele doorgeeft, zorg er dan voor dat u de variabele naam citeert.

Dit kleine script controleert de huidige map op bestanden die overeenkomen met het bestandspatroon "*.txt" en slaat ze op in een variabele met de naam bestand_list . A voor lus wordt gebruikt om een eenvoudige actie uit te voeren op elke.

Kopieer deze tekst naar een editor en sla deze op in een bestand met de naam "Files.sh". Gebruik dan de chmod commando om het uitvoerbaar te maken.

We hebben een aantal bestanden in deze map. De ene heeft een eenvoudige bestandsnaam, en de andere twee gebruiken onderstrepingstekens “ _ "Of streepjes" - ”In plaats van spaties. Dit is wat we zien als we het script uitvoeren.

Dat lijkt goed te werken. Maar laten we de bestanden in de map wijzigen voor bestanden die spaties in hun namen bevatten.

Elk woord in elke bestandsnaam wordt afgehandeld alsof het op zichzelf een bestandsnaam was, en dus faalt het script. Maar het enige dat we moeten doen om het script te laten hanteren in bestandsnamen is het citeren van de $ bestand variabele in de voor lus.

Merk op dat het dollarteken " $ ”IS binnen de citaten. We hebben die wijziging aangebracht en opgeslagen in het scriptbestand "Files.sh". Deze keer worden de bestandsnamen correct behandeld.

VERWANT: Hoe een bestandslijn voor regel te verwerken in een Linux Bash -script

Uit elkaar gezet, maar niet schilferig

Het vermijden van spaties in uw eigen bestandsnamen brengt u alleen tot nu toe. Het is onvermijdelijk dat u bestanden uit andere bronnen tegenkomt met namen die spaties bevatten. Gelukkig, als u die bestanden op de opdrachtregel of in scripts moet verwerken, zijn er eenvoudige manieren om dit te doen.


Linux - Meest populaire artikelen

DB-browser gebruiken voor SQLite op Linux

Linux Dec 16, 2024

Fatmawati achmad zaenuri / shutterstock DB Browser voor SQLite kunt u bekijken en bewerken SQLite databases op Linux. U kunt ontwerpen, maken en bewer..


Hoe te gebruiken Restricted Shell te beperken wat een Linux gebruiker kan doen

Linux Mar 25, 2025

Fatmawati achmad zaenuri / shutterstock Een beperkte shell beperkt wat een gebruikersaccount kan doen op Linux. Een beperkte gebruiker kan hun map niet wijzi..


Hoe te gebruiken strace om Monitor Linux Systeemaanroepen

Linux Jun 23, 2025

fatmawati achmad zaenuri / shutterstock.com Linux-programma's vragen het kernel om wat dingen voor hen te doen. De strace opdracht onth..


Wat zijn Bash Woordenboeken op Linux, en hoe worden ze gebruikt?

Linux Jun 16, 2025

fatmawati achmad zaenuri / shutterstock.com Bash-woordenboeken geven u Hash-kaarten en associatieve arrays in Linux Shell-scripts. We zullen u laten zien hoe..


Hoe update Arch Linux

Linux Jul 30, 2025

Ubuntu-project Is de tijd om je Arch Linux-systeem bij te werken? Of je nu op pure boog of een op basis van een boog-gebaseerd bent Manjaro en Gar..


10 Basic Linux commando's voor beginners

Linux Oct 13, 2025

Gewoon aan de slag op Linux? Jezelf comfortabel maken met de opdrachtregel is essentieel. Als u al bekend bent met opdrachtregelhulpprogramma's, vindt u dat Linux en Mac veel gemeenschappe..


Wat is het UNIX-tijdperk en hoe werkt Unix Time?

Linux Nov 10, 2024

Mikhail Leonov / Shutterstock Unix winkels tijd als het aantal seconden sinds 1 januari 1970. En dat betekent dat Linux ook doet. We leggen dit schijnbaar onev..


Hoe een statisch IP -adres in te stellen in Ubuntu

Linux Oct 17, 2025

Uw thuisnetwerk is gebaseerd op IP -adressen om gegevens tussen apparaten te routeren, en soms op het opnieuw verbinden met het netwerk dat het adres van een apparaat kan veranderen. Hier leest..


Categorieën