이것이 내 SSH 클라이언트(Windows용 RoyalTS)의 일부 버그라고 확신하지만 방금 설치하고 Fish Shell로 변경한 후 âŽ
프롬프트 앞에 두 개의 어두운 회색 문자가 있습니다.
PuTTY에서는 실행되지 않는 것으로 보이며 Rebex 플러그인을 사용하는 이 특정 클라이언트에서만 실행됩니다.
물고기 FAQ에는 임의의 문자에 대해 이야기하고 fish_title
지우는 방법을 알려주는 기능이 언급되어 있지만 별 차이가 없는 것 같습니다.
나는 그것들이 일종의 잘못 코딩된 제어 문자일 뿐이라고 확신하지만, 이 두 문자가 무엇인지, 용도가 무엇인지, 제거하는 방법을 알아내려고 노력하고 있습니다.
편집하다
요청한 대로 설치 이후 출력이 fish_prompt
변경되지 않았으며 다음과 같습니다.
function fish_prompt --description 'Write out the prompt'
# Just calculate this once, to save a few cycles when displaying the prompt
if not set -q __fish_prompt_hostname
set -g __fish_prompt_hostname (hostname|cut -d . -f 1)
end
set -l color_cwd
set -l suffix
switch $USER
case root toor
if set -q fish_color_cwd_root
set color_cwd $fish_color_cwd_root
else
set color_cwd $fish_color_cwd
end
set suffix '#'
case '*'
set color_cwd $fish_color_cwd
set suffix '>'
end
echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' (set_color $color_cwd) (prompt_pwd) (set_color normal) "$suffix "
end
...그리고 fish_prompt | xxd
:
0000000: 726f 6f74 4063 616e 6463 2d77 6230 3170 root@candc-wb01p
0000010: 2d6c 201b 5b33 316d 2f1b 5b33 306d 1b28 -l .[31m/.[30m.(
0000020: 421b 5b6d 2320 B.[m#
...그리고 functions -an
:
# functions -an
., N_, _, __fish_append, __fish_bind_test1, __fish_bind_test2,
__fish_command_not_found_setup, __fish_commandline_test,
__fish_complete_abook_formats, __fish_complete_ant_targets,
__fish_complete_atool, __fish_complete_atool_archive_contents,
__fish_complete_aura, __fish_complete_bittorrent,
__fish_complete_cabal, __fish_complete_cd, __fish_complete_command,
__fish_complete_convert_options, __fish_complete_diff,
__fish_complete_directories, __fish_complete_file_url,
__fish_complete_ftp, __fish_complete_grep, __fish_complete_groups,
__fish_complete_list, __fish_complete_lpr, __fish_complete_lpr_option,
__fish_complete_ls, __fish_complete_lsusb, __fish_complete_man,
__fish_complete_mime, __fish_complete_pacman, __fish_complete_path,
__fish_complete_pgrep, __fish_complete_pids, __fish_complete_ppp_peer,
__fish_complete_proc, __fish_complete_python,
__fish_complete_service_actions, __fish_complete_setxkbmap,
__fish_complete_ssh, __fish_complete_subcommand,
__fish_complete_subcommand_root, __fish_complete_suffix,
__fish_complete_svn, __fish_complete_svn_diff, __fish_complete_tar,
__fish_complete_tex, __fish_complete_unrar, __fish_complete_users,
__fish_complete_vi, __fish_complete_wvdial_peers, __fish_complete_xsum,
__fish_config_interactive, __fish_contains_opt, __fish_crux_packages,
__fish_cursor_konsole, __fish_cursor_xterm,
__fish_default_command_not_found_handler, __fish_describe_command,
__fish_filter_ant_targets, __fish_filter_mime, __fish_git_prompt,
__fish_gnu_complete, __fish_hg_prompt, __fish_is_first_token,
__fish_is_token_n, __fish_list_current_token,
__fish_make_completion_signals, __fish_man_page, __fish_move_last,
__fish_no_arguments, __fish_not_contain_opt,
__fish_number_of_cmd_args_wo_opts, __fish_paginate, __fish_ports_dirs,
__fish_print_abook_emails, __fish_print_addresses,
__fish_print_arch_daemons, __fish_print_cmd_args,
__fish_print_cmd_args_without_options, __fish_print_commands,
__fish_print_debian_services, __fish_print_encodings,
__fish_print_filesystems, __fish_print_function_prototypes,
__fish_print_help, __fish_print_hostnames, __fish_print_interfaces,
__fish_print_lpr_options, __fish_print_lpr_printers,
__fish_print_lsblk_columns, __fish_print_make_targets,
__fish_print_mounted, __fish_print_packages,
__fish_print_service_names, __fish_print_svn_rev, __fish_print_users,
__fish_print_xdg_mimeapps, __fish_print_xdg_mimetypes,
__fish_print_xrandr_modes, __fish_print_xrandr_outputs,
__fish_print_xwindows, __fish_prt_no_subcommand, __fish_prt_packages,
__fish_prt_ports, __fish_prt_use_package, __fish_prt_use_port,
__fish_pwd, __fish_reconstruct_path, __fish_reload_key_bindings,
__fish_repaint, __fish_repaint_root, __fish_restore_status,
__fish_seen_subcommand_from, __fish_systemctl_automounts,
__fish_systemctl_devices, __fish_systemctl_mounts,
__fish_systemctl_scopes, __fish_systemctl_service_paths,
__fish_systemctl_services, __fish_systemctl_slices,
__fish_systemctl_snapshots, __fish_systemctl_sockets,
__fish_systemctl_swaps, __fish_systemctl_targets,
__fish_systemctl_timers, __fish_test_arg, __fish_urlencode,
__fish_use_subcommand, __fish_winch_handler, __terlar_git_prompt, abbr,
alias, cd, contains_seq, cp, delete-or-exit, dirh, dirs,
down-or-search, eval, export, fish_config, fish_default_key_bindings,
fish_indent, fish_mode_prompt, fish_prompt, fish_sigtrap_handler,
fish_update_completions, fish_vi_cursor, fish_vi_key_bindings,
fish_vi_mode, funced, funcsave, grep, help, history, hostname, isatty,
la, ll, ls, man, math, mcd, mimedb, mv, nextd, nextd-or-forward-word,
open, popd, prevd, prevd-or-backward-word, prompt_pwd, psub, pushd, rm,
seq, setenv, sgrep, trap, type, umask, up-or-search, vared,
답변1
나는 그것들이 일종의 잘못 인코딩된 제어 문자라고 확신하지만, 이 두 문자가 무엇인지 알아내려고 노력 중입니다.
âŽ
\xc2
\x8e
이는 Windows 코드 페이지 1252를 사용하여 디코딩된 전송된 옥텟을 표시할 때 발생합니다. 터미널 에뮬레이터가 단일 바이트 문자 집합을 사용하고 있습니다.
UTF-8로 디코딩된 이들은 SS2
정확하게는 제어 문자입니다.
따라서 (다소 아이러니하게도) 해당 제어 시퀀스를 UTF-8 및 UTF를 지원하지 않는 터미널 에뮬레이터로 인코딩하더라도 7비트 문자 집합을 전환하기 위해 ISO 2022 제어 시퀀스를 보내야 한다고 생각하는 호스트가 있습니다. -8.
16진수 덤프의 힌트 문자열에 ISO 2022가 더 많이 있습니다. \x1b
\x28
\x42
이는 쉘(분명히 해당 set_color normal
명령에서)이 ISO 2022-JP 시퀀스를 전송하여 ASCII로 전환하는 곳입니다.
가장 간단한 해결책은 터미널 에뮬레이터가 UTF-8을 사용하도록 만드는 것입니다. 호스트 프로그램이 ISO 2022 문자 집합 전환을 수행해야 한다고 생각하지 않도록 하세요.별말씀을요그리고 UTF-8만 사용하라고 알려주세요.
터미널 유형을 확인할 수도 있습니다. 터미널 유형(원래 터미널 에뮬레이터에서 호스트로 전송됨)~ 해야 하다터미널 에뮬레이션 프로그램의 실제 동작을 일치시킵니다. "하지만 그렇죠 xterm
?" 결정을 내리거나 임의의 터미널 유형을 선택하는 것은 거의 작동하지 않습니다.
PuTTY의 올바른 터미널 유형은 실제로 다음과 같습니다.putty
또는putty-256color
또는putty-sco
예를 들어.