Hoe om te gaan met het doorgeven van bestandsnamen met spaties in Bash



Probeer Ons Instrument Voor Het Oplossen Van Problemen

Linux heeft een standaard shell Bash (ook wel Bourne shell genoemd) om commando's voor het systeem uit te voeren. De meeste programmeurs geven de voorkeur aan bash boven cmd vanwege de flexibiliteit en krachtige opdrachtregelinterpreter die bash biedt. De meeste gebruikers zullen echter nog steeds problemen ondervinden bij het omgaan met doorgeven van bestandsnamen met spaties in bash. Dit komt doordat spaties in bash niet als hetzelfde worden beschouwd als in bestandsnamen.



Bestanden met spaties in de naam



Waarom wordt een bestandsnaam met spaties niet herkend door bash?

Als u in Bash meerdere woorden typt zonder ontsnappen teken () of citaten , zal het alle woorden als argumenten beschouwen. Dat geldt voor alle bewerkingen, of u nu van directory verandert met ‘ CD ‘Of probeert toegang te krijgen tot bestanden met‘ kat ‘Commando's. Alles wat u schrijft nadat u deze hebt gebruikt, wordt als een argument beschouwd. Bijvoorbeeld:



cat bestandsnaam.txt

Het commando uitvoeren zonder escape-teken of aanhalingstekens

Notitie : Uw bestandsnaam kan van alles zijn, behalve voor dit artikel gebruiken we ' bestandsnaam.txt ' als voorbeeld.

Hier ‘ kat ‘Commando zal overwegen het dossier en naam als twee argumenten in plaats van een enkel argument. Als je echter een escape-teken of aanhalingstekens gebruikt, zal de bash-shell dat als een enkel argument beschouwen, wat de ' bestandsnaam.txt '.



Bestandsnaam met spaties in Bash

Er zijn enkele methoden die kunnen worden gebruikt voor de spaties in de naam. De beste methode is om in de toekomst spaties voor bestandsnamen te vermijden. Een eenvoudige methode is om het bestand dat u probeert te openen te hernoemen en spaties te verwijderen. Sommige andere methoden gebruiken enkele of dubbele aanhalingstekens in de bestandsnaam met spaties of het escape-symbool () vlak voor de spatie. We zullen methoden voorzien van toegepaste voorbeelden om u te laten zien hoe het werkt.

Methode 1: enkele en dubbele aanhalingstekens gebruiken

  1. Houden Ctrl + Alt toetsen en Druk op T openen Terminal .
  2. Verander nu de directory naar waar het bestand zich bevindt.
    (je kan ook slepen en laten vallen het bestand in de terminal na het commando ‘ kat ‘, Die automatisch citaten op het bestandspad / de directory plaatst)

    cd Desktop

    Directory wijzigen

    Notitie : Desktop kan worden gewijzigd in de locatie die u probeert te openen.

  3. Typ de volgende opdracht om een ​​tekstbestand met spaties in de naam te lezen:
    cat 'bestandsnaam.txt'

    of

    cat 'bestandsnaam.txt'

    Aanhalingstekens gebruiken om spaties in naamfouten te vermijden

  4. Enkele en dubbele aanhalingstekens zullen hetzelfde resultaat opleveren. In sommige gevallen moet u beide proberen en kijken welke werkt.

Methode 2: Backlash Escape-teken gebruiken

  1. Houden Ctrl + Alt toetsen en Druk op T openen Terminal .
  2. Wijzig de directory naar waar het bestand zich bevindt met behulp van de volgende opdracht.
    cd Desktop

    Notitie : Plaats uw locatienaam in plaats van Desktop.

  3. Typ nu het commando en gebruik ontsnappen teken overal waar ruimte in de naam is:
    cat-bestand  naam.txt

    Escape-teken gebruiken om spaties te voorkomen

Bonus: gebruik van offertes en ontsnapping

Als u de directory in de opdracht gebruikt, kan het soms gevolgen hebben voor het gebruik van aanhalingstekens op het totale pad. Dit komt doordat sommige commando's zoals ‘ mv ‘Of‘ cp ‘Beschouwt het pad als bestandsbron als de offerte in zijn geheel wordt gebruikt. U moet voor beide een offerte indienen bron en bestemming afzonderlijk, zodat opdrachten als ‘ cp ‘Kan goed werken. U kunt ook het onderstaande voorbeeld bekijken, dat u laat zien dat het gebruik van escape-tekens voor het pad veel complexer is en dat gebruikers er fouten mee kunnen maken.

Het verschil tussen citaten en ontsnappingskarakter

2 minuten gelezen