저는 최근 서버를 테스트하기 위해 netcat을 많이 사용하고 있는데 위쪽 화살표를 사용하여 이전 명령을 반복하는 것이 매우 도움이 될 것입니다. 그러나 지금은 단지 ^[[A
. 이 동작을 변경할 수 있는 방법이 있나요?
답변1
두 가지 가능성이 있습니다. 첫 번째는 사용하는 것입니다.되감기하나 포장독서선프로그램을 둘러싼 역사 도서관 netcat
. 또 다른 하나는 사용하는 것입니다.소캇옵션으로 readline이 내장되어 있습니다.
예를 들어, Telnet에 netcat을 사용하고 있다면 다음과 같이 말할 수 있습니다.
rlwrap nc -t remotehost 23
입력한 각 줄은 파일에 저장되며 ~/.nc_history
일반적인 읽기 줄 키를 사용하여 탐색할 수 있습니다. 동일한 명령을 다시 실행하면 기존 기록이 보존됩니다.
을(를 ) 사용할 때는 socat
텔넷 옵션이 없지만 다른 연결 유형의 경우 다음을 수행할 수 있습니다.
socat readline,history=$HOME/.socat.hist TCP4:remotehost:port
그렇지 않은 경우 rlwrap
socat을 사용하여 netcat을 실행할 수 있습니다.
socat readline,history=$HOME/.socat.hist exec:'nc -t remotehost 23'
이러한 프로그램은 없지만 bash
readline이 내장된 쉘이 있는 경우 세 번째 가능성은 터미널에서 bash 읽기 명령을 사용하여 netcat의 표준 입력으로 보내는 것입니다. 다음은 동일한 nc
명령을 사용하고 기록을 파일에 저장 및 복원하는 매우 간단한 스크립트 예제입니다 /tmp/myhistory
.
#!/bin/bash
# emulate rlwrap nc -t localhost 23
HISTFILE=/tmp/myhistory
history -r # read old history
while IFS= read -p 'netcat> ' -e # sets REPLY, -e enables readline
do history -s "$REPLY" # add to history
history -w # save to file
echo "$REPLY" # write to netcat
done |
nc -t remotehost 23