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
$