• ..

Shell

    パスワードが必要な sudo だけど聞かれないようにする

    そういう設定がされてないとsudoコマンドを実行した時にパスワードを入力しないといけません。

    sudo echo 1
    # Password:

    普通にターミナルでそれだけ実行する程度ならそれでも特に問題ないのですが、シェルスクリプトなどで処理の流れを止めたくない時にそれはちょっと困ります。

    sudo -S

    そんなときは-Sまたは--stdinオプションを使います。これでパスワードが標準入力で渡すことができます。

    -S, --stdin read password from standard input

    例えばこんな感じです。

    echo 'passwd' | sudo -S echo 1 2>/dev/null
    # 1

    2>/dev/nullは、sudoを実行したときのPassword:という標準エラー出力のテキストが表示されないように/dev/nullに捨てています。