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 chown
uruchomieniem, wzorzec glob *
jest najpierw rozwijany do wszystkich plików w bieżącym katalogu i chown
pobiera je jako opcje i argumenty. W bieżącym katalogu masz plik, który zaczyna się od -i
, dlatego chown
rozważ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.php
w 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 ./*