Копировать выходные данные из cat / less точно так, как они отображаются

#bash

#bash

Вопрос:

Что я хочу сделать, так это скопировать выходные данные, как вы бы сделали с копипастой вручную. В основном это означает, что нераспознанные символы будут сохранены как? или как они отображаются, а не как их коды символов. Есть ли какой-либо способ сделать это?

Комментарии:

1. man cat сказал бы вам, cat -v что это хороший вариант.

2. Не работает, это похоже на обычный cat .

3. Что вы действительно хотите сделать ?

Ответ №1:

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

Например, в macOS X вы можете:

 echo $filename | pbcopy      #pbcopy - save the output from echo to clipboard
find / -name 'pbpaste`       #pbpaste - print the clipboard content
  

Уверен, что в Linux тоже есть что-то подобное. (xclip или около того)

как сказал вам Эрик, если вы сделаете

 some_command > outfile ; cat outfile
  

это то же самое, что

 some_command  #plain output to terminal.
  

в файле «outfile» вы получите именно выходные данные терминала. (ожидайте некоторых редких случаев)

и пусть вас не смущает «less» или некоторые другие пейджеры, которым действительно следует заменить непечатаемые символы на что-то другое.

и, наконец, — если у вас возникли проблемы с кодовой страницей или около того, попробуйте настроить переменные среды, такие как LANG, LC_ALL и LESSCHARSET (man less) и так далее..

конфигурация bash

 set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
  

в некоторых случаях тоже должно помочь. (man bash)

Попробуйте сформулировать свой вопрос более точно. 🙂

Ответ №2:

Если бы у вас были примеры того, что вы пытаетесь решить, я мог бы быть более конкретным.

Прямо сейчас я могу указать вам только на

  • less -SR (показать интерпретацию экранирования ANSI)
  • ansifilter для преобразования текста, экранированного ANSI, в обычный текст (или HTML и т.д.)
  • iconv, например

.

 cat myfile | iconv -f utf8 -t iso8859-1
  

Конечно, с этим последним, замените все используемые вами наборы символов

Обновить

Я только что разработал две наиболее вероятные настройки, которые будут делать то, что, я думаю, вы описываете:

 cat position | iconv -t latin1//TRANSLIT
cat position | iconv -t ASCII//TRANSLIT
  

Если у вас есть файл с поддержкой UNICODE position , подобный этому:

  --> Applying move 131, ply 262: Q d3 - e2   Checkmate .
... situation after:
⒏ ┊. . . . . . . . 
⒎ ┊. . ♟ . . . . . 
⒍ ┊. . ♙ . . . . . 
⒌ ┊. . ♙ . ♙ . . ♟ 
⒋ ┊. . . . ♘ ♜ . ♚ 
⒊ ┊. . . ▫ . . . . 
⒉ ┊. ♜ . . ♛ . . . 
⒈ ┊. . . . ♔ . ♗ . 
  └────────────────
   Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ 
  

Приведет к этому:

  --> Applying move 131, ply 262: Q d3 - e2   Checkmate .
... situation after:
8. ?. . . . . . . . 
7. ?. . ? . . . . . 
6. ?. . ? . . . . . 
5. ?. . ? . ? . . ? 
4. ?. . . . ? ? . ? 
3. ?. . . ? . . . . 
2. ?. ? . . ? . . . 
1. ?. . . . ? . ? . 
   ----------------
   (A) (B) (C) (D) (E) (F) (G) (H) 
  

Комментарии:

1. Добавлен полный сэмпл с iconv и //TRANSLIT