편집하다

편집하다

이것이 내 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예를 들어.

관련 정보