chown: nieprawidłowa opcja - „i” Spróbuj „chown --help”, aby uzyskać więcej informacji

15

Mam dziwny problem z następującą komendą:

# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.

polecenie to nie jest aliasami

# type chown
chown is hashed (/bin/chown)

Gdzie mogę szukać dalej?

Marco Marsala
źródło
1
Możesz spróbowaćchown -R myuser:mygroup ./*
Kris,

Odpowiedzi:

28

Ponieważ rozszerzenie glob (nazwa ścieżki) jest wykonywane najpierw przez powłokę przed chownuruchomieniem, wzorzec glob *jest najpierw rozwijany do wszystkich plików w bieżącym katalogu i chownpobiera je jako opcje i argumenty. W bieżącym katalogu masz plik, który zaczyna się od -i, dlatego chownrozważa go jako opcję, a nie argument (nazwę pliku).

Musisz użyć, --aby wskazać koniec opcji dla chown:

chown -R myuser:mygroup -- *

Lub poprzedź wzorzec glob ( *), ./aby wyraźnie wskazać go jako argument:

chown -R myuser:mygroup ./*
heemayl
źródło
Przedrostek za pomocą ./ nie oznacza, że ​​jest to argument (oznacza tutaj nazwę pliku), ale oznacza, że ​​żadna z rozszerzonych nazw nie będzie wyglądać jak opcja (zaczynając od „-”). Gdy powłoka widzi takiej linii chown -R myuser:mygroup ./*, że dzieli go na chown, -R, myuser:mygroup, ./*a następnie zastępuje wzory glob z odpowiednimi ścieżkami System plików, np. chown, -R, myuser:mygroup, ./-index.html, ./favicon.ico, ./My -ve Numbers. Ponieważ chown szuka tylko pierwszego znaku jako myślnika, szukając argumentów opcji, zakłada się, że są to argumenty pozycyjne.
Jim Driscoll,
7

Problemem był plik nazwany -index.phpw folderze, więc chown zinterpretował go jako opcję wiersza poleceń.

W rozwiązaniu zastosowano podwójne myślniki chown -R myuser:mygroup -- *

Marco Marsala
źródło
4
czy to nie jest ta sama odpowiedź udzielona przez @heemayl?
Kris,
3
@Kris obie odpowiedzi zostały opublikowane prawie w tym samym czasie ;-)
Rinzwind
1
Zaciemniłeś użytkownika i grupę w swoim pytaniu, ale nie w swojej odpowiedzi ...
Thomas
3
@Kris Jest raczej mało prawdopodobne, że skopiował drugą odpowiedź w ciągu 39 sekund po jej postawieniu.
UTF-8
przepraszam, nie chciałem im tego sugerować.
Kris,