重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Linuxの次のシェルスクリプトについておしえてください。
------------------------------------------
echo $USERPASS | passwd --stdin $USERNAME
------------------------------------------
echo $USERPASSが表示なのはわかります
| がパスなので表示がpasswdの入力になるのもわかります
--stdinがそれを受けとってるらしいのもわかります
$USERPASS、$USERNAMEの意味もわかります

でもなんだか「passwd --stdin $USERNAME」がよくわからないんです。
「passwd $USERNAME --stdin」と書いても同じ結果になるし、2個も3個も受け取るときはどう書けばいいのか
「--stdin」の説明を探したんですが見つかりません
どなたか教えてください

A 回答 (3件)

>「--stdin」って他のどんなコマンドで使われてますか?



たまたま、passwdで標準入力から…という動作を切り替えるオプションスイッチの名前が「--stdin」だっただけの問題です。
他のコマンドでは別の名前だったり、そもそもそんな切り替えが不可能な場合だってあったりするでしょう。

>また日本語で書かれたマニュアル、よいサイトご存知でしたら教えていただけませんか?

検索すると見つかると思いますけどね。
http://linuxjm.sourceforge.jp/html/shadow/man1/p …
とか。
# http://linuxjm.sourceforge.jp/index.html がJM Projectのページ。

ディストリビューションが不明ですが、日本語のmanページが用意されている場合もあります。
Redhat系列なら man-pages-ja ってパッケージ名で用意されていたりします。
# ただし、全てのmanページが入っているワケではないですし、翻訳タイミングの関係から内容が古い場合もあります。

この回答への補足

皆様ありがとうございます。
どうにか納得できました。

補足日時:2013/05/09 20:08
    • good
    • 0

man passwd


でマニュアルを読みましょう。

-で始まる引数は、大抵は「オプション」です。
オプションは、コマンド毎に違うので、詳細は、そのコマンドのマニュアルで調べることになります。

passwdのマニュアルを調べると、このオプションは、通常は端末からのキー入力になるものを、標準入力からの入力に変更するためのものです。

コマンドの引数の順番は、コマンド毎に違い、順番に意味があるので入れ替え不可能なものもあれば、順不同のものもあります。
passwdの場合
passwd --stdin $USERNAME

passwd $USERNAME --stdin

「--stdinオプションを有効にして、ユーザー『$USERNAME』のパスワードを変更」
という同じものになっています。

> | がパスなので表示がpasswdの入力になるのもわかります

|は「パイプライン」あるいは単に「パイプ」と言います。
前段コマンドの標準出力を、後段コマンドの標準入力とします。

この回答への補足

Wr5さん、kmeeさん有り難うございます。
マニュアル見てみました、マニュアルがあるのは知ってましたが初めてみました。
英文なのでよくわかりませんが、記載いただいてるような内容のようです。

使ってみて思うように動作ししてるんですが、なんかシックリしないんですよ。
「--stdin」って他のどんなコマンドで使われてますか?

また日本語で書かれたマニュアル、よいサイトご存知でしたら教えていただけませんか?

補足日時:2013/05/09 10:00
    • good
    • 0

>| がパスなので表示がpasswdの入力になるのもわかります



「パイプ」です。

>「passwd $USERNAME --stdin」と書いても同じ結果になるし

引数の順番が重要。というワケではないでしょうから、入れ替えても問題は無いのでしょう。
cpとか引数の順番に意味がある場合は入れ替えると正しく動作しないでしょうけど、passwdの場合は順番は影響しないのでしょう。
# 引数無しでも動作しますしね。

>2個も3個も受け取るときはどう書けばいいのか

一人のパスワードの設定で2個も3個も…とは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!