Jestem nowym użytkownikiem terminala Mac. Jakie jest znaczenie "./"? Jaka jest różnica między poleceniami
rm image.png
rm ./image.png
rm *./image.png
Jestem nowym użytkownikiem terminala Mac. Jakie jest znaczenie "./"? Jaka jest różnica między poleceniami
rm image.png
rm ./image.png
rm *./image.png
Odpowiedzi:
./
jest częścią ścieżki do katalogu / pliku.
Jeśli jest używany jako część parametru polecenia
rm image.png
i rm ./image.png
są dokładnie takie same i identyfikują plik w bieżącym katalogurm *./image.png
jest wzorcem, który szuka plików o nazwach image.png
we wszystkich podkatalogach bieżącego katalogu, które kończą się kropkąKluczowym zastosowaniem ./
zwykle jest wywołanie skryptu / pliku wykonywalnego w bieżącym katalogu. Kiedy wykonujesz polecenie bez określania jego katalogu (np. cp
Zamiast /bin/cp
), powłoka szuka tego we wszystkich katalogach wymienionych w $PATH
zmiennej. Bieżący katalog zwykle nie jest częścią tej zmiennej (ze względów bezpieczeństwa), więc możesz użyć polecenia, ./command-name
aby powłoka szukała polecenia w bieżącym katalogu.
ls -a
, zobaczy wpisy dla .
i ..
. Prawdopodobnie już wiadomo, że ..
jest to katalog nadrzędny, więc oczywiście .
jest to katalog bieżący. Jednak takie rzeczy nie mają specjalnego znaczenia, jeśli są używane w środku łańcucha, a nie od samego początku, podobnie rm *./image.png
jak czerwony śledź w tym pytaniu (to po prostu glob pasujący do rzeczy takich jak directorywithadot./image.png
.)
Wyrażenie w ścieżce pliku (./) oznacza „przenieś w górę” (z bieżącej lokalizacji), tj. „This” = ”. i / = „w górę”, więc ../ oznacza „przenieś w górę 2 katalogi” lub przejdź do elementu nadrzędnego tego (./), tj. weź bieżącą lokalizację i przejdź w górę do „/” nowej lokalizacji.