sudo
内でシェルを実行する :sudo bash -c 'whoami; whoami'
'
以外の任意の文字を使用できます それ自体を一重引用符で囲みます。そのコマンドに一重引用符が必要な場合は、 '\''
を使用してください (技術的には:end single-quoteliteral,literal '
文字、単一引用符で囲まれたリテラルを開始します。しかし、事実上、これは単一引用符で囲まれたリテラル文字列に単一引用符を挿入する方法です)。
ヒア ドキュメントを使用して、標準入力としてコマンドを sudo された bash に渡すことができます:
sudo bash <<"EOF"
whoami
id
EOF
このように、特に複数のレベルがある場合、正しい引用をいじる必要はありません。例:
sudo bash <<"EOF"
whoami
echo $USER ~
sudo -u apache bash <<"DOF"
whoami
echo $USER ~
DOF
EOF
プロデュース:
root
root /root
apache
apache /usr/share/httpd
(内側のターミネータをインデントできないことに注意してください — その行では単独である必要があります。ヒア ドキュメントでインデントを使用したい場合は、 <<-
を使用できます <<
の代わりに 、ただし、スペースではなくタブでインデントする必要があります.)
たとえば、これを試してみてください。私はそれをテストしました:
sudo bash -c "cd /;ls;ls|grep o"
この例では、最初に dir を /root に変更し、次にルート ディレクトリをリストし、最後にルート ディレクトリに対して、名前が「o」の文字を持つディレクトリのみをフィルタリングします。
しかし、より良い方法は、必要なすべてを実行し、すべての複雑なアクションの終了コードを提供するスクリプトを作成することです。次に、上記の例のように単一コマンドのグループの代わりに sudo スクリプトを実行できます。