Jak obsługiwać przekazywanie nazw plików za pomocą spacji w Bash

Linux ma domyślną powłokę Bash (znaną również jako powłoka Bourne'a) do wykonywania poleceń dla systemu. Większość programistów woli bash niż cmd ze względu na elastyczność i potężny interpreter wiersza poleceń, który zapewnia bash. Jednak większość użytkowników nadal będzie mieć problemy podczas próby przechodzenia do nazw plików ze spacjami w bash. Wynika to z faktu, że spacje nie są traktowane tak samo w bash, jak w nazwach plików.

Pliki ze spacjami w nazwie

Dlaczego nazwa pliku z odstępami nie jest rozpoznawana przez Bash?

W Bash, jeśli wpiszesz wiele słów bez znaku zmiany znaczenia (\) lub cudzysłowów, wszystkie słowa będą traktowane jako argumenty. Dotyczy to wszystkich operacji, niezależnie od tego, czy zmieniasz katalog za pomocą polecenia „ cd ”, czy próbujesz uzyskać dostęp do plików za pomocą poleceń „ cat ”. Wszystko, co napiszesz po ich użyciu, zostanie uznane za argument. Na przykład:

 plik cat name.txt 

Uruchamianie polecenia bez użycia znaku zmiany znaczenia ani cudzysłowów

Uwaga : Twoja nazwa pliku może być dowolna, ale w tym artykule użyjemy „ file name.txt ” jako przykładu.

W tym przypadku polecenie „ cat ” uzna plik i nazwę za dwa argumenty, a nie za jeden argument. Jeśli jednak użyjesz znaku ucieczki lub cudzysłowu, powłoka bash potraktuje to jako pojedynczy argument, którym będzie „ file name.txt ”.

Nazwa pliku ze spacjami w Bash

Istnieje kilka metod, które można zastosować dla spacji w nazwie. Najlepszą praktyką jest unikanie spacji dla nazw plików w przyszłości. Prostą metodą będzie zmiana nazwy pliku, do którego próbujesz uzyskać dostęp, i usunięcie spacji. Niektóre inne metody używają pojedynczych lub podwójnych cudzysłowów w nazwie pliku ze spacjami lub używają znaku ucieczki (\) tuż przed spacją. Będziemy dostarczać metody z zastosowanymi przykładami, aby pokazać, jak to działa.

Metoda 1: Korzystanie z pojedynczego i podwójnego cudzysłowu

  1. Przytrzymaj Ctrl + Alt i naciśnij T, aby otworzyć Terminal .
  2. Teraz przejdź do katalogu, w którym znajduje się plik.

    (możesz także przeciągnąć i upuścić plik w terminalu po komendzie „ cat ”, która automatycznie umieści cytaty w ścieżce / katalogu pliku)

     cd Desktop 

    Zmiana katalogu

    Uwaga : Pulpit można zmienić na lokalizację, do której próbujesz uzyskać dostęp.

  3. Wpisz następujące polecenie, aby odczytać plik tekstowy ze spacjami w nazwie:
     cat „nazwa pliku.txt” 

    lub

     cat „nazwa pliku.txt” 

    Używanie cytatów, aby uniknąć spacji w nazwie błędu
  4. Pojedyncze i podwójne cytaty spowodują to samo. W niektórych przypadkach musisz wypróbować oba i sprawdzić, który z nich działa.

Metoda 2: Użycie znaku ucieczki luzu

  1. Przytrzymaj Ctrl + Alt i naciśnij T, aby otworzyć Terminal .
  2. Zmień katalog, w którym znajduje się plik, używając następującego polecenia.
     cd Desktop 

    Uwaga : umieść nazwę lokalizacji w miejscu pulpitu.

  3. Teraz wpisz polecenie i użyj znaku zmiany znaczenia w dowolnym miejscu w nazwie:
     plik kota \ nazwa.txt 

    Używanie znaku zmiany znaczenia w celu uniknięcia błędu spacji

Bonus: wykorzystanie ofert i ucieczka

Czasami, gdy używasz katalogu w poleceniu, mogą wystąpić konsekwencje używania cudzysłowów na całej ścieżce. Jest tak, ponieważ niektóre polecenia, takie jak „ mv ” lub „ cp ”, uznają ścieżkę za źródło pliku, jeśli cytat zostanie użyty w całości. Musisz podać oferty dla źródła i miejsca docelowego indywidualnie, aby polecenia takie jak „ cp ” mogły działać poprawnie. Możesz również sprawdzić poniższy przykład, który pokaże, że użycie znaku zmiany znaczenia dla ścieżki jest znacznie bardziej złożone i użytkownicy mogą się z nią pomylić.

Różnica między cytatami a znakiem ucieczki

Ciekawe Artykuły