bash
1sudo echo abc >> /xyz
と
bash
1echo "abc" | sudo tee -a /xyz
の違いを教えて下さい。また、使用するときの注意点なども知りたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
最初のコマンドだとリダイレクト先にユーザ権限が無い場合にはエラーになる。
bash
1$ sudo touch /var/hoge 2$ ls -la /var/hoge 3-rw-r--r-- 1 root wheel 0 Jul 20 06:53 /var/hoge 4$ sudo echo abc >> /var/hoge 5bash: /var/hoge: Permission denied 6$ echo "abc" | sudo tee -a /var/hoge 7abc 8$ cat /var/hoge 9abc
投稿2019/07/19 22:05
総合スコア1698
0
ベストアンサー
sudo echo abc >> /xyz
まず、/xyz
へのリダイレクト処理を現在のユーザーが行い、それからsudo
でroot権限でecho
が実行される。リダイレクトが成功してれば、/xyz
にabc
が追記書きされる。
この通り書くと、現在のユーザーで/xyz
に書けずエラーになるのでは?
echo "abc" | sudo tee -a /xyz
echo
で、abc
がパイプで後段に渡る。sudo
でroot権限でtee
を実行して、パイプで渡されたものを/xyz
に追記書きして、同時に表示する。
/xyz
に書き込むのはrootなので、このままの記述で成功する。
前者のような書き方で、root権限でリダイレクトしたい場合は、sh
を起動する。
sudo sh -c "echo abc >> /xyz"
投稿2019/07/20 01:54
総合スコア84559
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
前者は sudo 前の状態でファイル書き込みがなされ
後者は sudo 後の状態でファイル書き込みがなされる。
自分的には後者は使わないかなあ。
まあ、気分のもんだいですが。
投稿2019/07/20 01:00
総合スコア7458
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。