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?
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?
Odpowiedzi:
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 ./*
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.
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 -- *
chown -R myuser:mygroup ./*