須藤echo"もの">>/etc/privilegedFileな
-
01-07-2019 - |
質問
このかわいらしい素朴な疑問に、少なくとも思えるので、須藤の権限でインプリメンテーションです。
多くの場合ていただきたいと思いappendう /etc/hosts
または類似のファイルが終わないも >
や >>
せないものです。
ある為、この仕事なし su
または sudo su
入ルート?
解決
使用 tee --append
または tee -a
.
echo 'deb blah ... blah' | sudo tee -a /etc/apt/sources.list
なお見積内になります
を避ける印刷データをコンソールへのリダイレクト出力を/dev/nullになります。
echo 'deb blah ... blah' | sudo tee -a /etc/apt/sources.list > /dev/null
他のヒント
問題は、シェル社は、出力のリダイレクト、須藤やエコーなのですがなされているとして通常のユーザーです。
次のことを試してみてくださいコードスニペット:
sudo sh -c "echo 'something' >> /etc/privilegedfile"
問題は、その殻を取り扱うリダイレクション;このようにファイル ご アクセス権ではなくプロセスのい動sudo.
使うことが、このようなもの:
sudo sh -c "echo 'something' >> /etc/privilegedFile"
sudo sh -c "echo 127.0.0.1 localhost >> /etc/hosts"
っ
sudo sh -c "echo >> somefile"
べきます。問題は、>、>>取り扱いるシェルではなく、"sudoed"コマンドで、アクセス権をおもなくなるのではないだろう、ユーザーだ"sudoing"です。
いまの興味のある人は、きもの見heredoc(大型ブロック):
sudo bash -c "cat <<EOIPFW >> /etc/ipfw.conf
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<plist version=\"1.0\">
<dict>
<key>Label</key>
<string>com.company.ipfw</string>
<key>Program</key>
<string>/sbin/ipfw</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/ipfw</string>
<string>-q</string>
<string>/etc/ipfw.conf</string>
</array>
<key>RunAtLoad</key>
<true></true>
</dict>
</plist>
EOIPFW"
にbashを使用でき tee
組み合わせ > /dev/null
い標準出力に出力す。
echo "# comment" | sudo tee -a /etc/hosts > /dev/null
を使用 湯の回答, で、このお ~/.bashrc
:
sudoe() {
[[ "$#" -ne 2 ]] && echo "Usage: sudoe <text> <file>" && return 1
echo "$1" | sudo tee --append "$2" > /dev/null
}
現在走行でき sudoe 'deb blah # blah' /etc/apt/sources.list
編集:
より完全版ではパイプに入力やリダイレクトからファイルが含まれ -a
スイッチをoffを追加するによりデフォルト):
sudoe() {
if ([[ "$1" == "-a" ]] || [[ "$1" == "--no-append" ]]); then
shift &>/dev/null || local failed=1
else
local append="--append"
fi
while [[ $failed -ne 1 ]]; do
if [[ -t 0 ]]; then
text="$1"; shift &>/dev/null || break
else
text="$(cat <&0)"
fi
[[ -z "$1" ]] && break
echo "$text" | sudo tee $append "$1" >/dev/null; return $?
done
echo "Usage: $0 [-a|--no-append] [text] <file>"; return 1
}
も利用できます sponge
から moreutils
パッケージする必要がありませんへのリダイレクト出力(すなわち、 tee
騒音を非表示):
echo 'Add this line' | sudo sponge -a privfile
echo'こんにちは世界"|(須藤ィ-a/etc/apt/sources.リスト)
この試験:独自のコマンド
echo "export CATALINA_HOME="/opt/tomcat9"" >> /etc/environment
ワコマンド
echo "export CATALINA_HOME="/opt/tomcat9"" |sudo tee /etc/environment
を使用 sed-i と $a できる追加文字の両方を含む変数および特殊文字の後になりました。
例えば、$NEW_HOSTと$NEW_IPめに、/etc/hosts:
sudo sed -i "\$ a $NEW_IP\t\t$NEW_HOST.domain.local\t$NEW_HOST" /etc/hosts
sedオプション説明:
- -i のための場所
- $ 前線
- a のための追加
ですが変更に有のファイルを変更した後に利用 cat >>
追加?
sudo chown youruser /etc/hosts
sudo cat /downloaded/hostsadditions >> /etc/hosts
sudo chown root /etc/hosts
このようになってください。