シェルプログラミングは初めてです
正常に動作するコマンドsed -i '$d' ~/.bash_history
があります。エイリアスにしたかったので、次のように書きました
alias rh='sed -i "$d" ~/.bash_history'
実行するrh
と、エラーなしで実行されますが、ファイルから何も削除されません。引用符に関係していると感じています。
私は何を間違っていますか?
Bash は "$d" の値を計算し、$d が定義されていない場合は "" に置き換えます。これを試して:
alias rh='sed -i '\''$d'\'' ~/.bash_history'
関数を使用すると、引用が簡単になります。
rh () { sed -i '$d' ~/.bash_history; }
私の場合、次のようなハイブリッド ソリューションを実装する必要がありました。
alias rh='function _rh(){ sed -i '\''$d'\'' ~/.bash_history ; };_rh'