Jak obsługiwać przekazywanie nazw plików ze spacjami 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 od 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 obsługi przekazywania nazw plików ze spacjami w bash. Dzieje się tak, ponieważ spacje nie są uważane za takie same w bash, jak w nazwach plików.

Dlaczego nazwa pliku ze spacjami nie jest rozpoznawana przez Bash?

W Bash, po wpisaniu kilku słów bez ucieczki znaku (\) lub cytatami , będzie rozważyć wszystkie słowa jako argumenty. Dotyczy to wszystkich operacji, niezależnie od tego, czy zmieniasz katalog za pomocą „ cd ”, czy próbujesz uzyskać dostęp do plików za pomocą poleceń „ cat ”. Wszystko, co napiszesz po ich użyciu, będzie traktowane jako argument. Na przykład:

cat nazwa pliku.txt

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

Tutaj polecenie „ cat ” będzie traktować plik i nazwę jako dwa argumenty, a nie pojedynczy argument. Jeśli jednak użyjesz znaku ucieczki lub cudzysłowu, powłoka bash potraktuje to jako pojedynczy argument, którym będzie „ nazwa pliku.txt ”.

Nazwa pliku ze spacjami w Bash

Istnieje kilka metod, które można zastosować do spacji w nazwie. Najlepszą praktyką jest unikanie spacji w nazwach 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ą symbolu ucieczki (\) tuż przed spacją. Przedstawimy metody z przykładami zastosowanymi, aby pokazać, jak to działa.

Metoda 1: używanie pojedynczych i podwójnych cudzysłowów

  1. Przytrzymaj klawisze Ctrl + Alt i naciśnij T, aby otworzyć Terminal .
  2. Teraz zmień katalog na miejsce, w którym znajduje się plik.

    (możesz również przeciągnąć i upuścić plik w terminalu po poleceniu ` ` cat '', co automatycznie umieści cudzysłowy w ścieżce / katalogu pliku)

    cd Desktop

    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”
  4. Pojedyncze i podwójne cudzysłowy spowodują to samo. W niektórych przypadkach musisz wypróbować oba i sprawdzić, który z nich działa.

Metoda 2: Używanie znaku ucieczki odwrotnej

  1. Przytrzymaj klawisze Ctrl + Alt i naciśnij T, aby otworzyć Terminal .
  2. Zmień katalog na lokalizację pliku, używając następującego polecenia.
    cd Desktop

    Uwaga : wpisz nazwę swojej lokalizacji zamiast Pulpitu.

  3. Teraz wpisz polecenie i użyj znaku ucieczki wszędzie tam, gdzie w nazwie jest spacja:
    plik cat \ nazwa.txt

Bonus: korzystanie z cytatów i ucieczki

Czasami, gdy używasz katalogu w poleceniu, mogą wystąpić konsekwencje używania cudzysłowów w ogólnej ścieżce. Dzieje się tak, ponieważ niektóre polecenia, takie jak „ mv ” lub „ cp ”, uznają ścieżkę za źródło pliku, jeśli cytat jest używany w całości. Musisz podać cytaty zarówno dla źródła, jak i miejsca docelowego , aby polecenia takie jak „ cp ” działały poprawnie. Możesz również sprawdzić poniższy przykład, który pokaże Ci, że użycie znaku ucieczki w ścieżce jest znacznie bardziej złożone i użytkownicy mogą się z tym pomylić.