次のコマンドを実行すると:
Sudo usermod –c "Richard Tracy" dtracy
次のエラーが発生します。
Usage: usermod [options] LOGIN
Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-R, --root CHROOT_DIR directory to chroot into
-s, --Shell SHELL new login Shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER new SELinux user mapping for the user account
-c
オプション、それで私のコマンドを受け入れないのはなぜですか?また、ユーザーを作成して-c
useradd
コマンドで、まだ上記のメッセージが表示され、操作が失敗します。
上記のエラーを再現するには、Sudo useradd dtracy
デフォルトのユーザーdtracy
を作成し、上記のusermod
コマンドで変更を試みます。
実行したコマンドには–c
が含まれています。これは en-dash の後にc
が続きます。-c
のようなオプション引数は、非公式に「ダッシュc」と発音されることがよくありますが、実際にはASCIIハイフン文字で始まる必要があります。これはASCIIマイナス文字(この文字の1つの名前は「ハイフンマイナス」)ですが、enダッシュやemダッシュなどの他のUnicodeダッシュ文字とは異なります。
コマンドはこれらのダッシュ文字に特別な意味を与えないため、-c
引数は短いオプションc
を指定しますが、–c
引数はオプションをまったく指定しません。実際には、usermod
を3つの非オプション引数で実行していたが、これは、それが受け入れる構文の1つではないため、ヘルプメッセージを出力した。
人々がコマンドでハイフンの代わりにダッシュを入力することになるのは、まあ、だれもそうしません。代わりに、一部のWebサイトはハイフンをダッシュに変換します。そのため、このようなWebサイトのページからコマンドをコピーしてターミナルに貼り付けると、ハイフンの代わりにダッシュが誤って含まれます。これは、LibreOfficeなどのプログラムを使用してコマンドのリストを保存した場合にも発生する可能性があります(オートフォーマットをオフにしていない場合)。
このようなマングルされたテキストから実際によく発生する同様の問題には、句読点の近くに余分なスペースが挿入される(rm -r
コマンドでは非常に悪い!)、直線引用符が中括弧で置き換えられ、<
文字と対応する>
文字。
実行する予定のコマンドSudo usermod -c "Richard Tracy" dtracy
は正常に機能します。