chown: opsi tidak valid - 'i' Try 'chown --help' untuk informasi lebih lanjut

15

Saya memiliki masalah aneh dengan perintah berikut:

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

perintahnya bukan alias

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

Di mana saya bisa melihat lebih jauh?

Marco Marsala
sumber
1
Anda bisa mencobachown -R myuser:mygroup ./*
Kris

Jawaban:

28

Karena ekspansi glob (pathname) dilakukan terlebih dahulu oleh shell sebelum chownberjalan, pola glob *diperluas ke semua file di direktori saat ini terlebih dahulu dan chownmendapatkan mereka sebagai opsi dan argumennya. Anda memiliki file di direktori saat ini yang dimulai dengan -i, karenanya chownmempertimbangkannya sebagai opsi, bukan sebagai argumen (nama file).

Anda perlu menggunakan --untuk menunjukkan akhir opsi untuk chown:

chown -R myuser:mygroup -- *

Atau mendahului pola gumpalan ( *) dengan ./untuk secara eksplisit menunjukkannya sebagai argumen:

chown -R myuser:mygroup ./*
heemayl
sumber
Awalan dengan ./ tidak berarti argumen. (Artinya nama file di sini), tetapi ini berarti bahwa tidak ada nama yang diperluas akan terlihat seperti opsi (dimulai dengan "-"). Ketika shell melihat baris seperti chown -R myuser:mygroup ./*, terbagi ke dalam chown, -R, myuser:mygroup, ./*dan kemudian menggantikan pola gumpal dengan jalur filesystem yang sesuai, misalnya. chown, -R, myuser:mygroup, ./-index.html, ./favicon.ico, ./My -ve Numbers. Karena chown hanya mencari karakter pertama sebagai tanda hubung ketika mencari opsi args, itu akan menganggap bahwa itu adalah argumen posisi.
Jim Driscoll
7

Masalahnya adalah file bernama -index.phpdi folder, jadi chown menafsirkannya sebagai opsi baris perintah.

Solusinya menggunakan tanda hubung ganda chown -R myuser:mygroup -- *

Marco Marsala
sumber
4
bukankah ini jawaban yang sama sudah diberikan oleh @heemayl?
Kris
3
@Kris kedua jawaban diposting pada waktu yang hampir bersamaan ;-)
Rinzwind
1
Anda mengaburkan pengguna dan grup dalam pertanyaan Anda tetapi tidak dalam jawaban Anda ...
Thomas
3
@ Kris Sepertinya dia tidak mungkin menyalin jawaban lain dalam waktu 39 detik setelah diajukan.
UTF-8
maaf, saya tidak bermaksud mengatakan demikian.
Kris