tkcon은 wish의 기본적인 콘솔을 대체하기 위해 작성된 콘솔입니다. tkcon은 wish의 콘솔보다 더욱 많은 기능을 갖고 있으며 또한 편리합니다. 순수 Tcl로 개발되었기 때문에 Unix/ Linux/ Windows/ Mac에서 동작합니다. tkcon은 ActiveTcl에도 포함되고 있습니다. tkcon은 상당히 강력한 기능이 많이 있으며, 시간상 주된 기능만 소개합니다.
tkcon is a replacement for the standard console that comes with Tk (on Windows/Mac, but also works on Unix). The console itself provides many more features than the standard console. tkcon works on all platforms where Tcl/Tk is available. It is meant primarily to aid one when working with the little details inside tcl and tk, giving Unix users the GUI console provided by default in the Mac and Windows Tk. It's also not a bad replacement for the default MS-DOS shell (although it needs lots of fine tuning).
주요 특징
tkcon의 주요 특징은 다음과 같습니다.
- 커맨드의 히스토리(history) 기능
- 유닉스 스타일 커맨드/ 프로시져 이름 / 변수명의 입력 보완
- 멀티 인터프리터에 의한 멀티 콘솔
- stdout, stderr의 캡처
- Emacs풍의 키바인딩
- 커맨드 / 프로시져의 하이라이트 표시
- 커맨드의 히스토리
- 설정의 커스터마이즈(customize)
- 윈도우 사이의 Cut, Copy&Paste
- 콘솔과 다른 Tk인터프리터(비 Tcl 애플리케이션도 포함)와의 통신
- 에러 결과를 클릭하면 스택 트레이스 표시
- 멀티플랫폼에서 동작
스크린 샷
메인 윈도우는 아래와 같으며, 키워드가 색으로 분류되어 보기 쉽습니다.
폰트설정
GUI로부터 폰트 설정 기능은 없기 때문에, tkcon을 실행 시에 읽어 들이는 설정파일인 ~/.tkcon.cfg (Windows 경우는 $(HOME)\tkcon.cfg)에 폰트를 설정하면 됩니다.
tkcon font {굴림체} 10
현재 적용되어 있는 폰트는 아래와 같이 확인 가능합니다.
tkcon font
히스토리 트리
bash 쉘과 같은 히스토리 기능을 갖고 있습니다. history 커맨드로 현재까지 입력하였던 커맨드를 표시할 수 있는 것으로, 표시된 히스토리 번호를 지정하여 커맨드를 재실행할 수도 있습니다.
tkcon을 종료 시, 지금까지 입력하였던 커맨드의 히스토리는 $env(HOME) 내의 위치에 .tkcon.hst (Windows는 tkcon.hst) 파일로 남게 되며, 다음에 tkcon을 실행 시 복원하게 됩니다.
입력의 보완
bash쉘과 비슷한 보완기능을 갖고 있습니다. 파일명, 디렉토리 이름, 커맨드 이름, 프로시져 이름, 변수명의 입력도중에 Tab키를 누르면 완성된 문자열(자동완성)을 보여줍니다. 상당히 편리한 기능입니다.
Emacs과 비슷한 키 바인드
Emacs와 비슷한 키 바인드가 준비되어 있습니다. 예를 들면, 마지막으로 실행한 커맨드를 표시하는 Ctrl+p, 그 반대로 Ctrl+n으로 히스토리를 상위부터 하위까지 검색할 수 있습니다. 히스토리 트리의 검색 관련하여, 앞방향은 Ctrl+r, 후방향은 Ctrl+s로 할 수 있습니다.
캡처
tkcon으로 실행한 결과를 파일로 출력할 수 있습니다. file 메뉴의 save나, tkcon save 커맨드로 사용할 수 있습니다. 파일 출력 시 전부, 히스토리, stdout, stdin, stderr 중 선택할 수 있습니다.
에러
커맨드 실행 시 에러가 난 경우, 에러 메시지가 붉은색으로 표시됩니다. 에러 메시지를 을 클릭하면, 스택 트레이스가 표시됩니다. 스택 트레이스로부터 버그를 즉석에서 찾아내는 일을 할 수 있습니다.
계산기
보통 계산은 expr 커맨드를 사용하지만, prefs 메뉴의 Calculator를 체크하면, expr 커맨드를 생략한 채 1+2 같은 입력으로 결과를 확인할 수 있습니다.
(tkcon-2.3) % 1+2
3
(tkcon-2.3) % expr 1+2
3
파일의 열람과 편집
파일의 열람과 편집기능이 있습니다. less, more, edit의 커맨드로 파일을 열람 및 편집할 수 있습니다. 별도의 윈도우창이 생기며, 작은 에디터라 생각하면 됩니다.
내장 커맨드
tkcon에는 편리한 내장 커맨드가 있습니다. Unix에서 많이 사용되던 커맨드도 있습니다. 커맨드는 아래와 같습니다.
alias, clear, dir, echo, eidt, less, ls, more, nalias, what, which,
dump, idebug, lremove, observe, puts, tkcon, tclindex
간혹 Tcl 커맨드인지 내부 커맨드인지는 which 커맨드를 사용하여 확인할 수 있습니다.
통신
tkcon 끼리, 혹은 다른 애플리케이션과의 통신을 할 수 있습니다. socket를 사용한 간단한 계산기 서버의 예를 소개합니다.(Tcl/Tk 8.3 이상 필수) 먼저 wish로 아래의 계산기 서버 스크립트를 실행합니다.
interp create -safe calc
proc accept {sock ip port} {
fconfigure $sock -blocking 0
fileevent $sock readable [list respond $sock]
}
proc respond {sock} {
if {[catch {read -nonewline $sock} data] || [eof $sock]} {
catch {close $sock}
return
}
if {0} {
# dangerous regular evaluator
catch $data result
} else {
# safe calculator style evaluator
catch {interp eval calc [list expr $data]} result
}
puts $sock $result
flush $sock
puts "\"$data\" => $result"
}
socket -server accept 7272
다음에 tkcon을 실행하고, Console메뉴 → Attach to → Socket → Create Connectiond를 실행하면, 다이얼로그가 생성되며, localhost 7272를 입력하고 OK 버튼을 누릅니다.
tkcon에서 아래와 같은 계산식을 입력하면, 계산 결과가 표시됩니다.
이것은 조금 전의 계산기 기능과는 다릅니다. 계산식을 서버에 보내어 계산을 하고, 계산 결과를 돌려받고 있습니다.
Tcl 확장 패키지의 로드
Interp 메뉴의 Package를 선택하면, 현재 설치되어 있는 Tcl의 확장 패키지 리스트가 표시됩니다. Tcl의 확장패키지를 선택하면, 자동으로 로드하여 사용할 수 있는 상태가 됩니다.
라이선스
tkcon은 프리웨어입니다.
참고로 최신의 소스 코드를 올립니다.