как мне вставить вывод команды 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
тарабарщину (?) отражает, в этом случае, 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:~$
в то время как вы можете наивно ожидать вставить пасты не имеют управляющие символы, это делает. Это потому, что сам терминал (или мне так вывод) обрабатывает/прячет их.
очень низком уровне, текстовых файлов и т. д., в игре. Плюс очень подробные знания о том, как эмуляции терминала работает. Немного за пределами моего понимания, честно говоря.
Я тестировал все решения, приведенные в приведенных ниже ссылках, для обработки и очистки выходного файла команды 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 из текстового потока Удаление управляющих символов (включая коды / цвета консоли) из вывода сценария Как установить языковой стандарт в сеансе текущего терминала?Я бы предложил создать пользовательскую команду на основе вышеупомянутого решения.
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 и создания файла typescript запустите cat typescript , Все escape-последовательности потребляются терминалом, поэтому выход представляет собой раскрашенный открытый текст. Скопируйте его вручную (с помощью мыши) и сохраните его в буфер обмена как обычный текст. Вставьте, где необходимо.
Я тестировал все решения, приведенные в приведенных ниже ссылках, для обработки и очистки выходного файла команды 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 из текстового потока Удаление управляющих символов (включая коды / цвета консоли) из вывода сценария Как установить языковой стандарт в сеансе текущего терминала?Я бы предложил создать пользовательскую команду на основе вышеупомянутого решения.
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 и создания файла typescript запустите cat typescript , Все escape-последовательности потребляются терминалом, поэтому выход представляет собой раскрашенный открытый текст. Скопируйте его вручную (с помощью мыши) и сохраните его в буфер обмена как обычный текст. Вставьте, где необходимо.