У мене є дивна проблема із наступною командою:
# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.
команда не псевдоніми
# type chown
chown is hashed (/bin/chown)
Куди я можу заглянути далі?
У мене є дивна проблема із наступною командою:
# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.
команда не псевдоніми
# type chown
chown is hashed (/bin/chown)
Куди я можу заглянути далі?
Відповіді:
Оскільки розширення glob (ім'я шляху) виконується спочатку оболонкою перед chown
запуском, шаблон glob *
розгортається спочатку до всіх файлів у поточному каталозі і chown
отримує їх як його параметри та аргументи. У вас є файл у поточному каталозі, який починається -i
, тому chown
він розглядає його як варіант, а не як аргумент (ім'я файлу).
Вам потрібно --
вказати кінець варіантів для chown
:
chown -R myuser:mygroup -- *
Або передуйте шаблону glob ( *
), ./
щоб явно вказати його як аргумент:
chown -R myuser:mygroup ./*
chown -R myuser:mygroup ./*
вона розбиває його на chown
, -R
, myuser:mygroup
, ./*
а потім замінює модель Glob з відповідними доріжками файлової системи, наприклад. chown
, -R
, myuser:mygroup
, ./-index.html
, ./favicon.ico
, ./My -ve Numbers
. Оскільки Chown шукає лише, що перший персонаж є тире, коли шукає параметри arg, він припустить, що це позиційні arg.
Проблема полягала в назві файлу -index.php
в папці, тому Chown інтерпретував це як варіант командного рядка.
Для вирішення використовували подвійні дефіси chown -R myuser:mygroup -- *
chown -R myuser:mygroup ./*