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?
command-line
chown
Marco Marsala
źródło
źródło
chown -R myuser:mygroup ./*
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 ichown
pobiera je jako opcje i argumenty. W bieżącym katalogu masz plik, który zaczyna się od-i
, dlategochown
rozważa go jako opcję, a nie argument (nazwę pliku).Musisz użyć,
--
aby wskazać koniec opcji dlachown
:Lub poprzedź wzorzec glob (
*
),./
aby wyraźnie wskazać go jako argument:źródło
chown -R myuser:mygroup ./*
, że dzieli go nachown
,-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 -- *
źródło