web-dev-qa-db-ja.com

useradd / usermodが-cを受け入れない

次のコマンドを実行すると:

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オプション、それで私のコマンドを受け入れないのはなぜですか?また、ユーザーを作成して-cuseraddコマンドで、まだ上記のメッセージが表示され、操作が失敗します。

上記のエラーを再現するには、Sudo useradd dtracyデフォルトのユーザーdtracyを作成し、上記のusermodコマンドで変更を試みます。

3
Number945

実行したコマンドには–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は正常に機能します。

6
Eliah Kagan