保護されたファイルにデータを転送するBash機能

保護されたファイルにデータを転送するBash機能

.bashrc書き込み禁止ファイルにデータを渡す作業を簡素化する関数を作成したいと思います。

function pipe {
      sudo bash -c "$1"
}

残念ながら、注文は

pipe echo something > /etc/importantfile

それでも許可拒否と表示されます。どうすれば修正できますか?

答え1

すべてを1つのパラメータとして渡したい場合があります。

function pipe {
  sudo bash -c "$@"
}

pipe 'echo something > /etc/importantfile'

答え2

これは>シェルで解釈されるからです。実行中のコマンドはリダイレクトを認識しないため、関数に引数として渡すことはできません。つまり、>がsudo実行される前に実行されます。

あなたができることは、saveというコマンドを使用することです:

save() {
  sudo tee "$@" >/dev/null
}
echo something | save /etc/importantfile

関連情報