байты эха в файл

Существует режим редактирования страницы Trac Wiki для Emacs. Это, как предполагается, упрощает страницы Trac Wiki редактирования, но также и помогает с diffing, слиянием, выделением и завершением.

Это также упоминается в EmacsWiki и в сообщении в блоге.

49
13.04.2017, 15:36
4 ответа
[1122810] Вы должны взять свои коды в кавычки:

, иначе shell заменит [1123290]\x[1123291] на [1123292]x[1123293], прежде чем он перейдет в [1123294]echo -e[1123295].

ps. двойной escape также будет работать:

69
27.01.2020, 19:34
[1122816] Это может не дать прямого ответа на вопрос, но Вы также можете использовать [1123296]vi[1123297] в шестнадцатиричном режиме:

Откройте Ваш файл и введите его тип: [1123298]ESC

:%!xxd[1123301] для переключения в шестнадцатеричный режим.

  1. Вы сможете редактировать шестнадцатеричную часть (текстовая часть не будет обновляться по мере изменения шестнадцатеричной части).

  2. После завершения нажмите клавишу escape еще раз и введите текст: [1123302]ESC

  3. :%!xxd -r[1123305], чтобы записать обратно изменения, которые вы сделали в шестнадцатиричном режиме (не забудьте сохранить позже).[1122823].

2
27.01.2020, 19:34
[1122824] В онлайн-руководстве много информации для каждой команды; всегда стоит посмотреть на это, прежде чем сдаваться и задавать вопрос.

  • man echo[1123307] объясняет, какие последовательности выхода разрешены. Вот выдержка.

  • если -e действует, то распознаются следующие последовательности: \0NNN символ, чей ASCII-код является NNN (восьмеричный). \\ обратный слеш \a оповещение (BEL) обратное пространство \b \c не производить больше продукцию \f форма подачи \n новая строка возврат каретки \r горизонтальная вкладка \t вертикальная вкладка \v

  • Так что \x86 просто некорректен. он должен быть восьмеричным и заключить вашу строку в двойные кавычки, иначе она будет интерпретирована оболочкой.

  • Пример:

  • Редактирование 1

    1. Как напомнил мне Оуки, echo также является оболочкой сборки, так что информация находится на странице руководства по bash, [1123310]man bash[1123311]; вот соответствующий раздел. Но [1123312] используйте кавычки

    2. "[1123315] вокруг вашей строки, чтобы остановить оболочку, интерпретирующую обратные слэши.

    echo [-neE] [arg ...]. Выведите аргументы, разделенные пробелами, за которыми следует новая строка. Статус возврата всегда 0. Если указано -n, то новая колея подавляется. Если задан параметр -e, включена интерпретация следующих символов обратного слэша. Опция -E отключает интерпретацию этих экранирующих символов, даже в тех системах, где они находятся. интерпретируется по умолчанию. Опция оболочки xpg_echo может быть использована для динамического определения расширяет ли echo эти экранирующие символы по умолчанию или нет. echo не интерпретирует -- означает конец опций. Эхо интерпретирует следующие экранирующие последовательности: \a предупреждение (звонок) обратное пространство \b \c подавлять дальнейшее производство \e эвакуационный персонаж \f форма подачи \n новая строка возврат каретки \r горизонтальная вкладка \t вертикальная вкладка \v \\ обратный слеш \0nnn восьмиразрядный символ, значение которого равно восьмеричному значению nnn (от нуля до трех восьмеричных разрядов- свой) \xHH восьмиразрядный символ, значение которого является шестнадцатеричным значением HH (одна или две шестнадцатеричные цифры... свой)

    2
    27.01.2020, 19:34

    Shell

    В оболочке вы можете использовать printf :

    printf "%b" '\x66\x6f\x6f' > file.bin
    

    Примечание: % b - Вывести связанный аргумент при интерпретации escape-символов обратной косой черты.

    Perl

    С perl это еще проще:

    perl -e 'print pack("ccc",(0x66,0x6f,0x6f))' > file.bin
    

    Python

    Если у вас установлен Python, попробуйте следующий однострочный файл:

    python -c $ 'from struct import pack \ nwith open ("file.bin", "wb") как f: f.write (pack ("


    Тестирование:

    $ hexdump file.bin 
    0000000 66 6f 6f 
    
    6
    27.01.2020, 19:34

    Теги

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