chown:无效选项-'i'尝试使用'chown --help'了解更多信息


15

我对以下命令有一个奇怪的问题:

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

该命令不是别名

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

在哪里可以看得更远?


1
您可以尝试chown -R myuser:mygroup ./*
Kris

Answers:


28

由于glob(路径名)扩展是在chown运行之前由外壳程序首先完成的,因此glob模式将*首先扩展到当前目录中的所有文件,并将chown其作为选项和参数。当前目录中有一个以开头的文件-i,因此chown将其视为选项而不是参数(文件名)。

您需要使用--来指示以下选项的结束chown

chown -R myuser:mygroup -- *

或在glob模式(*)之前使用,./以明确将其表示为参数:

chown -R myuser:mygroup ./*

以./开头的前缀并不意味着它是一个自变量(此处是文件名),而是意味着没有一个扩展名看起来像一个选项(以“-”开头)。当壳看到的线像chown -R myuser:mygroup ./*,它它分裂成chown-Rmyuser:mygroup./*然后替换glob模式与对应的文件系统路径,例如。chown-Rmyuser:mygroup./-index.html./favicon.ico./My -ve Numbers。由于chown在寻找选项args时只会寻找第一个字符为破折号,因此将假定这些字符为位置args。
Jim Driscoll

7

问题是-index.php在该文件夹中命名了一个文件,因此chown将其解释为命令行选项。

解决方案是使用双连字符 chown -R myuser:mygroup -- *


4
这不是@heemayl已经给出的答案吗?
克里斯(Kris)

3
@Kris几乎在同一时间发布了两个答案;-)
Rinzwind

1
您在问题中而不是在答案中混淆了用户和组...
Thomas

3
@Kris很不可能在提出答案后的39秒内复制另一个答案。
UTF-

抱歉,我不是要暗示这样的意思。
克里斯(Kris)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.