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
- Przytrzymaj klawisze Ctrl + Alt i naciśnij T, aby otworzyć Terminal .
- 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.
- Wpisz następujące polecenie, aby odczytać plik tekstowy ze spacjami w nazwie:
cat 'nazwa pliku.txt'
lub
cat „nazwa pliku.txt”
- 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
- Przytrzymaj klawisze Ctrl + Alt i naciśnij T, aby otworzyć Terminal .
- Zmień katalog na lokalizację pliku, używając następującego polecenia.
cd Desktop
Uwaga : wpisz nazwę swojej lokalizacji zamiast Pulpitu.
- 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ć.
