Заставьте Клавиши со стрелками и клавиши Delete работать в командной строке KornShell

После контакта с Google Cloud Support мы смогли найти обходной путь для этой проблемы, хотя первопричина до сих пор остается неизвестной.

Обходной путь - определить сам формат журнала NGINX в виде строки JSON. Это позволит анализатору Google-Fluentd правильно анализировать полезную нагрузку как объект JSON. Это единственное решение, которое до сих пор работало для меня.

Для справки я использовал формат журнала:

log_format json_combined escape=json
'{'
'"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"request_method":"$request_method",'
'"request":"$request",'
'"status": "$status",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":"$request_time",'
'"http_referrer":"$http_referer",'
'"http_user_agent":"$http_user_agent"'
'}';
access_log /var/log/nginx/access.log json_combined;
18
задан Sam Spencer 3 January 2014 в 16:59
поделиться

3 ответа

Для клавиш со стрелками вы можете поместить это в файл .kshrc в вашем домашнем каталоге:

set -o emacs
alias __A=`echo "\020"`     # up arrow = ^p = back a command
alias __B=`echo "\016"`     # down arrow = ^n = down a command
alias __C=`echo "\006"`     # right arrow = ^f = forward a character
alias __D=`echo "\002"`     # left arrow = ^b = back a character
alias __H=`echo "\001"`     # home = ^a = start of line
alias __Y=`echo "\005"`     # end = ^e = end of line

Обратите внимание, что перед буквы слева от знака равенства. В правой части равенства цель состоит в том, чтобы получить правильный управляющий символ, назначенный псевдониму. Этот сценарий делает это, выполняя команду (с помощью обратных тиков)

echo "\020"

, чтобы получить символ control-n, назначенный для __B.

32
ответ дан 30 November 2019 в 06:35
поделиться

Так как это взяло меня навсегда для выяснения клавиши Delete на моем Mac, чтобы заставить клавишу Delete работать можно добавить stty erase ^? к Вашему .kshrc файл. Вместо того, чтобы ввести фактические символы для ^? можно просто поразить клавишу Delete, и она произведет ^?. Таким образом в сочетании с ответом Tim мой .kshrc файл похож

set -o emacs
alias __A=`echo "\020"`     # up arrow = ^p = back a command
alias __B=`echo "\016"`     # down arrow = ^n = down a command
alias __C=`echo "\006"`     # right arrow = ^f = forward a character
alias __D=`echo "\002"`     # left arrow = ^b = back a character
alias __H=`echo "\001"`     # home = ^a = start of line
alias __Y=`echo "\005"`     # end = ^e = end of line
stty erase                  # prevent command from being echoed
stty erase ^?               # allow for delete key to work
0
ответ дан 30 November 2019 в 06:35
поделиться

Don't fight it. Just have your administrator change your default shell to bash. bash is included with Solaris 10, is highly ksh compatible, and it supports the key mappings that you like. You can launch bash just by typing:

$ bash

You could exec bash out of your .profile if your administrator is not helpful. Here is what your administrator would do to change user1 to bash (as root):

# passwd -e user1
Old shell: /bin/ksh
New shell: /usr/bin/bash        <- You type this, use whence bash to look up the path
passwd: password information changed for user1
7
ответ дан 30 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: