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.pngi rm ./image.pngsą dokładnie takie same i identyfikują plik w bieżącym katalogurm *./image.pngjest wzorcem, który szuka plików o nazwach image.pngwe 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. cpZamiast /bin/cp), powłoka szuka tego we wszystkich katalogach wymienionych w $PATHzmiennej. Bieżący katalog zwykle nie jest częścią tej zmiennej (ze względów bezpieczeństwa), więc możesz użyć polecenia, ./command-nameaby 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.pngjak 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.