bash
.bash_history
コマンド履歴が保存され、bash
次にコマンドを実行するときに保存されたコマンドで履歴がいっぱいになる便利なファイルがあります。
bc
同じ方法でコマンド履歴をファイルに保存し、起動時にロードして履歴を保存することはできますか?
読もうとするGNU BCマニュアルreadline
と言及していますlibedit
。ldd /usr/bin/bc
私の用途readline
とreadline
所有物を見るとwrite_history
そしてread_history
機能。この機能はすでに実装されていますかbc
?それともパッチが必要ですかbc
?
答え1
プログラムに組み込まれているコマンドライン編集機能が満足できない場合は、次のものを使用できます。巻き戻す。これはコマンドラインプロセッサです(aREPL)、送信する前に各行を編集できます。 Rlwrap は readline ライブラリを使用し、各コマンドごとに別々の履歴を保存します。
rlwrapは、ユーザーが直接コマンドライン編集を実行したいことを検出し、rlwrapが自動的に閉じるため、実行してもrlwrap bc
何もしません。bc
基本コマンドの機能ではなく、rlwrapのコマンドライン編集機能が実際に必要なので、以下を実行してください。
rlwrap -a bc
コマンド履歴はに保存されます~/.bc_history
。
プログラム自体のreadline統合を使用するのではなく、rlwrapに依存する主な欠点は、rlwrapが状況に応じた完了操作を実行できないことです。たとえば、python
最上位レベルでは既知の変数とフィールドが完成しますが、rlwrap python
そうすることはできません。 bcにはカスタム補完機能がないようで、rlwrap -a bc
bcの機能は失われません。
答え2
この方法はtee
私にとって効果的です。完全な会話を保存します。
$ rm -i bc.log; tee -a bc.log | bc | tee -a bc.log
rm: remove regular file 'bc.log'? y
3*4
12
9*16
144
^C
$ cat bc.log
3*4
12
9*16
144
$
.logファイルの入出力に別々のログファイルを設定することもできますbc
。
次の例は、入力のみを保存し、セッション間で追加する方法を示しています。
$ rm bc.log # only when you want to clear the log file
$ tee -a bc.log | bc
7+5-2
10
37*27
999
225/3
75
^C
$ cat bc.log
7+5-2
37*27
225/3
$ tee -a bc.log | bc
2^10
1024
^C
$ cat bc.log
7+5-2
37*27
225/3
2^10
$