output & ldquo; script & rdquo; для удобочитаемости пасты

как мне вставить вывод команды script (машинопись; "сценарий мужчины") так что это более читабельным?Script started on 2017-10-27 06:20:56-0700 ]0;thufir@dur: ~/IdeaProjects[01;32mthufir@dur[00m:[01;34m~/IdeaProjects[00m$ ]0;thufir@dur: ~/IdeaProjects[01;32mthufir@dur[00m:[01;34m~/IdeaProjects[00m$ tree [01;34m.[00m ├── kotlin └── [01;34mkotlinHelloWorld[00m ├── kotlinHelloWorld.iml ├── [01;34mout[00m │ └── [01;34mproduction[00m │ └── [01;34mkotlinHelloWorld[00m └── [01;34msrc[00m └── Main.kt 5 directories, 3 files ]0;thufir@dur: ~/IdeaProjects[01;32mthufir@dur[00m:[01;34m~/IdeaProjects[00m$ ]0;thufir@dur: ~/IdeaProjects[01;32mthufir@dur[00m:[01;34m~/IdeaProjects[00m$ cat kotlinHelloWorld/src/Main.kt class Main { fun main(args: Array) { println("Hello, world!") } }]0;thufir@dur: ~/IdeaProjects[01;32mthufir@dur[00m:[01;34m~/IdeaProjects[00m$ ]0;thufir@dur: ~/IdeaProjects[01;32mthufir@dur[00m:[01;34m~/IdeaProjects[00m$ exit exit Script done on 2017-10-27 06:21:19-0700

тарабарщину (?) отражает, в этом случае, gnome-terminal цвет. Да, используя разные оболочки, разные консоли и т. д. можно не создавать эту "тарабарщину". Вопрос в том, как красиво как сделать команду [F5], чтобы не записывать их, или получить pastebin утилита (или аналогичные, например, gist-paste), чтобы справиться с ними "красиво".

во-первых, спасибо за ответы. Во-вторых, я надеюсь, что это не мутят воду:

thufir@dur:~$ thufir@dur:~$ script trying_to_eliminate_control_chars.txt Script started, file is trying_to_eliminate_control_chars.txt thufir@dur:~$ thufir@dur:~$ echo "hi" hi thufir@dur:~$ thufir@dur:~$ echo "hi" hi thufir@dur:~$ thufir@dur:~$ echo "hmm" hmm thufir@dur:~$ thufir@dur:~$ exit exit Script done, file is trying_to_eliminate_control_chars.txt thufir@dur:~$ thufir@dur:~$ cat trying_to_eliminate_control_chars.txt > foo.txt thufir@dur:~$ thufir@dur:~$ cat foo.txt Script started on 2017-10-31 17:51:29-0700 thufir@dur:~$ thufir@dur:~$ echo "hi" hi thufir@dur:~$ thufir@dur:~$ echo "hi" hi thufir@dur:~$ thufir@dur:~$ echo "hmm" hmm thufir@dur:~$ thufir@dur:~$ exit exit Script done on 2017-10-31 17:51:47-0700 thufir@dur:~$ thufir@dur:~$ cat trying_to_eliminate_control_chars.txt Script started on 2017-10-31 17:51:29-0700 thufir@dur:~$ thufir@dur:~$ echo "hi" hi thufir@dur:~$ thufir@dur:~$ echo "hi" hi thufir@dur:~$ thufir@dur:~$ echo "hmm" hmm thufir@dur:~$ thufir@dur:~$ exit exit Script done on 2017-10-31 17:51:47-0700 thufir@dur:~$ thufir@dur:~$ pastebin foo.txt pastebin: command not found thufir@dur:~$ thufir@dur:~$ pastebinit foo.txt http://paste.ubuntu.com/25862228/ thufir@dur:~$

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

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

2
задан 1 November 2017 в 04:55

4 ответа

Я тестировал все решения, приведенные в приведенных ниже ссылках, для обработки и очистки выходного файла команды script из специальных символов.

На моем Ubuntu 16.04 только удовлетворительное решение удовлетворяет только следующему решению:

perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' typescript | col -b > typescript.new

Или вы можете напрямую вывести вывод в программу загрузки клиента:

perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' typescript | col -b | pastebinit

Вышеупомянутая команда работает с pastebinit, поэтому установите ее:

sudo apt install pastebinit

Ссылки:

Основной источник ответа Удалите цветовые коды (специальные символы) с помощью sed Как вырезать цветовые коды из stdout и pipe to file и stdout Удаление цветовых кодов ANSI из текстового потока Удаление управляющих символов (включая коды / цвета консоли) из вывода сценария Как установить языковой стандарт в сеансе текущего терминала?

Создайте пользовательскую команду «script to pastebin» - spaste

Я бы предложил создать пользовательскую команду на основе вышеупомянутого решения.

spaste Создайте исполняемый файл сценария под названием spaste, который находится в /usr/local/bin, чтобы быть доступным как команда оболочки:

sudo touch /usr/local/bin/spaste sudo chmod +x /usr/local/bin/spaste sudo nano /usr/local/bin/spaste Основной источник ответа #!/bin/bash # Name: spaste # Location: /usr/local/bin #export LC_ALL=C # If the first input parameter is option - see: script --help; or type `script --help` [[ "${1}" =~ -.* ]] && TARGET_FILE="$2" || TARGET_FILE="$1" # If the variable $TARGET_FILE is empty, use the default output file name [[ -z "${TARGET_FILE}" ]] && TARGET_FILE="typescript" # The main function - Remove color codes, etc. script_remove_extras() { script "$@" perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' "$TARGET_FILE" | col -b > "/tmp/$USER-cpaste-$TARGET_FILE.tmp" cp "/tmp/$USER-cpaste-$TARGET_FILE.tmp" "$TARGET_FILE" } # Upload to 'pastebinit' upload_pastebinit() { pastebinit < "$TARGET_FILE"; } # GUI mode with 'chromium' or 'firefox'; CLI mode with 'lynx'; Just upload with 'pastebinit'; Just clear the outputfile if [ "$SPASTE_MODE" == "chromium" ]; then script_remove_extras "$@"; nohup chromium-browser "$(upload_pastebinit)" >/dev/null 2>&1 & elif [ "$SPASTE_MODE" == "firefox" ]; then script_remove_extras "$@"; nohup firefox "$(upload_pastebinit)" >/dev/null 2>&1 & elif [ "$SPASTE_MODE" == "lynx" ]; then script_remove_extras "$@"; lynx "$(upload_pastebinit)" elif [ "$SPASTE_MODE" == "upload" ]; then script_remove_extras "$@"; upload_pastebinit else script_remove_extras "$@" fi

spaste Объяснение:

Когда вы выполняете новая команда spaste выведет команду script и назначит ей входные параметры пользователя. Таким образом, синтаксис вызова такой же, как и команда script - подробнее script --help или spaste --help: Usage: spaste (script) [options] [file] Make a typescript of a terminal session. Options: -a, --append append the output -c, --command <command> run command rather than interactive shell -e, --return return exit code of the child process -f, --flush run flush after each write --force use output file even when it is a link -q, --quiet be quiet -t, --timing[=<file>] output timing data to stderr (or to FILE) -V, --version output version information and exit -h, --help display this help and exit Удалить цветовые коды (специальные символы) с помощью sed В результате pastebinit вернет ссылку на загруженный контент выходного файла script. Как удалить цветовые коды из stdout и pipe в файл и stdout Доступные режимы: SPASTE_MODE=chromium - откроет возвращенную ссылку в Chromium. SPASTE_MODE=firefox - откроет возвращенную ссылку в FireFox. SPASTE_MODE=lynx - откроет возвращаемую ссылку Lynx (браузер терминала). SPASTE_MODE=upload - просто выведет возвращенную ссылку. SPASTE_MODE= - не вернет ссылку; просто обработает содержимое выходного файла. Удаление цветовых кодов ANSI из текстового потока

3. Демонстрация использования:

script

2
ответ дан 18 July 2018 в 04:26

Я не думаю, что это ответ, который вы ищете, но он работает:

После запуска script и создания файла typescript запустите cat typescript , Все escape-последовательности потребляются терминалом, поэтому выход представляет собой раскрашенный открытый текст. Скопируйте его вручную (с помощью мыши) и сохраните его в буфер обмена как обычный текст. Вставьте, где необходимо.

1
ответ дан 18 July 2018 в 04:26

Я тестировал все решения, приведенные в приведенных ниже ссылках, для обработки и очистки выходного файла команды script из специальных символов.

На моем Ubuntu 16.04 только удовлетворительное решение удовлетворяет только следующему решению:

perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' typescript | col -b > typescript.new

Или вы можете напрямую вывести вывод в программу загрузки клиента:

perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' typescript | col -b | pastebinit

Вышеупомянутая команда работает с pastebinit, поэтому установите ее:

sudo apt install pastebinit

Ссылки:

Основной источник ответа Удалите цветовые коды (специальные символы) с помощью sed Как вырезать цветовые коды из stdout и pipe to file и stdout Удаление цветовых кодов ANSI из текстового потока Удаление управляющих символов (включая коды / цвета консоли) из вывода сценария Как установить языковой стандарт в сеансе текущего терминала?

Создайте пользовательскую команду «script to pastebin» - spaste

Я бы предложил создать пользовательскую команду на основе вышеупомянутого решения.

spaste Создайте исполняемый файл сценария под названием spaste, который находится в /usr/local/bin, чтобы быть доступным как команда оболочки:

sudo touch /usr/local/bin/spaste sudo chmod +x /usr/local/bin/spaste sudo nano /usr/local/bin/spaste Основной источник ответа #!/bin/bash # Name: spaste # Location: /usr/local/bin #export LC_ALL=C # If the first input parameter is option - see: script --help; or type `script --help` [[ "${1}" =~ -.* ]] && TARGET_FILE="$2" || TARGET_FILE="$1" # If the variable $TARGET_FILE is empty, use the default output file name [[ -z "${TARGET_FILE}" ]] && TARGET_FILE="typescript" # The main function - Remove color codes, etc. script_remove_extras() { script "$@" perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' "$TARGET_FILE" | col -b > "/tmp/$USER-cpaste-$TARGET_FILE.tmp" cp "/tmp/$USER-cpaste-$TARGET_FILE.tmp" "$TARGET_FILE" } # Upload to 'pastebinit' upload_pastebinit() { pastebinit < "$TARGET_FILE"; } # GUI mode with 'chromium' or 'firefox'; CLI mode with 'lynx'; Just upload with 'pastebinit'; Just clear the outputfile if [ "$SPASTE_MODE" == "chromium" ]; then script_remove_extras "$@"; nohup chromium-browser "$(upload_pastebinit)" >/dev/null 2>&1 & elif [ "$SPASTE_MODE" == "firefox" ]; then script_remove_extras "$@"; nohup firefox "$(upload_pastebinit)" >/dev/null 2>&1 & elif [ "$SPASTE_MODE" == "lynx" ]; then script_remove_extras "$@"; lynx "$(upload_pastebinit)" elif [ "$SPASTE_MODE" == "upload" ]; then script_remove_extras "$@"; upload_pastebinit else script_remove_extras "$@" fi

spaste Объяснение:

Когда вы выполняете новая команда spaste выведет команду script и назначит ей входные параметры пользователя. Таким образом, синтаксис вызова такой же, как и команда script - подробнее script --help или spaste --help: Usage: spaste (script) [options] [file] Make a typescript of a terminal session. Options: -a, --append append the output -c, --command <command> run command rather than interactive shell -e, --return return exit code of the child process -f, --flush run flush after each write --force use output file even when it is a link -q, --quiet be quiet -t, --timing[=<file>] output timing data to stderr (or to FILE) -V, --version output version information and exit -h, --help display this help and exit Удалить цветовые коды (специальные символы) с помощью sed В результате pastebinit вернет ссылку на загруженный контент выходного файла script. Как удалить цветовые коды из stdout и pipe в файл и stdout Доступные режимы: SPASTE_MODE=chromium - откроет возвращенную ссылку в Chromium. SPASTE_MODE=firefox - откроет возвращенную ссылку в FireFox. SPASTE_MODE=lynx - откроет возвращаемую ссылку Lynx (браузер терминала). SPASTE_MODE=upload - просто выведет возвращенную ссылку. SPASTE_MODE= - не вернет ссылку; просто обработает содержимое выходного файла. Удаление цветовых кодов ANSI из текстового потока

3. Демонстрация использования:

script

2
ответ дан 24 July 2018 в 18:04
  • 1
    ОК. спасибо, попробуй. – Thufir 31 October 2017 в 19:44
  • 2
    Привет, @Thufir. Вышеприведенные команды не работают удовлетворительно, на данный момент. Тем не менее, существует разница между результатами, опубликованными в paste.ubuntu.com/25830319 , и этой проблемой. В соответствии с этим, пожалуйста, предоставьте также скриншот и вывод команды locale. – pa4080 31 October 2017 в 22:29
  • 3
    @Thufir, я обновил ответ с полным решением. – pa4080 1 November 2017 в 02:53
  • 4
    Огромное усилие с вашей стороны, спасибо. Когда я смогу, я пройду через это. Я не сомневаюсь в его правильности. – Thufir 1 November 2017 в 04:57

Я не думаю, что это ответ, который вы ищете, но он работает:

После запуска script и создания файла typescript запустите cat typescript , Все escape-последовательности потребляются терминалом, поэтому выход представляет собой раскрашенный открытый текст. Скопируйте его вручную (с помощью мыши) и сохраните его в буфер обмена как обычный текст. Вставьте, где необходимо.

1
ответ дан 24 July 2018 в 18:04
  • 1
    не работает: paste.ubuntu.com/25859482 возможно, есть способ сказать cat, чтобы вынуть контрольные символы. – Thufir 31 October 2017 в 19:43
  • 2
    @Thufir Во-первых, если вы запускаете gradle в сеансе скрипта, вы должны отключить все причудливые вещи, которые он делает с его выходом. Похоже, вы можете использовать gradle --console=plain для этого. – wjandrea 31 October 2017 в 21:10
  • 3
    @Thufir Я думаю, я не очень хорошо объяснил, поэтому я отредактировал свой ответ, чтобы уточнить. – wjandrea 31 October 2017 в 21:27
  • 4
    Wjandrea, @Thufir хочет использовать выходной файл, сгенерированный командой script, с некоторой загрузкой клиентской программы как pastebinit. Мне потребовалось некоторое время, чтобы понять это. – pa4080 1 November 2017 в 10:41
  • 5
    @ pa4080 ОК, тогда мой ответ не идеален, но он работает. После того, как у вас есть текст в буфере обмена, вы можете вставить его в новый файл, затем загрузить файл в pastebin, или вы можете использовать что-то вроде xclip для вывода буфера обмена. В любом случае основная идея моего ответа состоит в том, чтобы сделать терминал тяжелым грузом. – wjandrea 1 November 2017 в 10:54

Другие вопросы по тегам:

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