MC, 23:37 piątek, 13.07.2012 r.
Ilustracja do artykułu: Linux cd — Jak wejść do katalogu z myślnikiem na początku nazwy?

Linux cd — Jak wejść do katalogu z myślnikiem na początku nazwy?

Zabawna sprawa. Mój znajomy, który użytkuje systemy Linux od pewnego już czasu, poprosił mnie o radę. Otóż chodziło o dostanie się do katalogu przy pomocy polecenia cd, czyli na pierwszy rzut oka, najtrywialniejszy przypadek z działu absolutnych podstaw obsługi wiersza poleceń. Rzecz okazała się nieco bardziej złożona, bo nazwę katalogu rozpoczynał myślnik.

Nazwę katalogu rozpoczyna myślnik — no i co?

Nazwa katalogu rozpoczyna się od myślnika, no i co z tego? Zerknijmy na poniższe wywołanie:
$ cd -jakisKatalog/
bash: cd: -j: nieprawidłowa opcja
cd: usage: cd [-L|[-P [-e]]] [dir]
Jak widać, to, że pierwszym znakiem w nazwie katalogu jest myślnik, powoduje, że polecenie cd traktuje go jako flaga wywołania. Wspomniany znajomy próbował ratować się zastąpieniem jawnego użycia całej nazwy katalogu, zastępując jej początek gwiazdką *, która zastępuje dowolną liczbę, dowolnych znaków. Niestety bezskutecznie:
$ cd *jakisKatalog/
bash: cd: -j: nieprawidłowa opcja
cd: usage: cd [-L|[-P [-e]]] [dir]
Katalog został dopasowany, pełna nazwa odtworzona i efekt dokładnie taki sam jak przy poprzedniej próbie.

To jak to obejść?

Oczywiście rozwiązanie jest bardzo proste i cała trudność polega tak naprawdę jedynie na tym, że widząc efekty poprzednich wywołań, można nieco zgłupieć. Najprostszym podejściem jest oczywiście rozpoczęcie nazwy od ./, co będzie oznaczało, że odnosimy się do katalogu obecnie zajmowanego:
~$ cd ./-jakisKatalog/
~/-jakisKatalog$
Można oczywiście podać również całą bezwzględną ścieżkę do katalogu i efekt będzie taki sam.

Innym, eleganckim rozwiązaniem, którego się doszukałem nieco później (nawiasem odnalazłem go w kontekście tego samego problemu), jest przekazanie do polecenia cd argumentu oznaczającego zakończenie przekazywania parametrów wywołania. Argumentem tym jest podwójny myślnik:

~$ cd -- -jakisKatalog/
~/-jakisKatalog$

Jak widzimy, problem jest raczej jedynie pozorny, ale mimo wszystko uważam, że godny zanotowania.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: