免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2344 | 回复: 11
打印 上一主题 下一主题

[文本处理] 回复者寥寥无己 [复制链接]

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-04-02 14:02 |只看该作者 |倒序浏览
本帖最后由 1cpuer 于 2018-04-02 14:03 编辑

# [ /home/soio/1bs/awks ] {2018-04-02 11:49:38}
: 1522640978:0;➜  echo "11vv22vv中文##"
11vv22vv中文##


# [ /home/soio/1bs/awks ] {2018-04-02 13:59:45}
: 1522648785:0;➜  cat ~/.zsh_history | tail -6
: 1522633668:0;exit
: 1522633672:0;cat typescript
: 1522633676:0;vim typescript
: 1522633708:0;exit
: 1522648785:0;echo "11vv22vv中惶��##"
: 1522648799:0;cat ~/.zsh_history | tail -6


# [ /home/soio/1bs/awks ] {2018-04-02 13:59:59}
: 1522648799:0;➜  sh utf.sh
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:en
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=
/root/.bash_history: UTF-8 Unicode text
/root/.zsh_history: UTF-8 Unicode text, with very long lines


发现中文有问题

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2018-04-02 14:31 |只看该作者
本帖最后由 Shell_HAT 于 2018-04-02 14:33 编辑

http://www.zsh.org/mla/users/2011/msg00154.html
zsh 的 history 文件是有自定义编码方式的文件,直接打印是会有乱码,要想拿到正确的内容应该按照上面链接提到的方法解码。

网上是这样说的,手上没环境,不好测试。

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
3 [报告]
发表于 2018-04-02 16:32 |只看该作者
回复 2# Shell_HAT

连接打不开啊,入股你哪边能看到,可用简短的文字加以说明一下。
上次也索引到类似网页,也打不开

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
4 [报告]
发表于 2018-04-02 16:48 |只看该作者
回复 1# 1cpuer


直接用『history』命令就可以显示中文了

论坛徽章:
0
5 [报告]
发表于 2018-04-02 19:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
6 [报告]
发表于 2018-04-03 11:10 |只看该作者
回复 5# 本友会机友会摄友会

cat ~/.vimrc
tab tab 没看金

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2018-04-08 09:18 |只看该作者
回复 3# 1cpuer

> Dear sir,
>
> I'm sorry to disturb you.
>
> I've been a user of ZSH  for a long time and I really
> appreciate for the developer of this great software.
>
> Recently, I've got one trouble in ZSH history file, and as I tried to
> solve it by
> surveying Webs and Sources, with no help.  As of it, knowing that this
> disturbs you,
> I'm trying to ask for any help.
>
> The trouble is as follows:
>
> When I try to use UTF-8 file name in shell command, ZHS history file
> seems to save
> it with "meta code".
>
> For example, executing
>  $ ls \346\226\207\345\255\227  (octal expression of "ls 文字”)
> results in histfile
>  $ ls \346\203\266\203\247\2\345\255\203\267
>
> That is, when 0x80-0x9F characters are used, then always 0x83 Meta
> character is inserted and following character is bit shifted, resulting
> garbage history.
>
> Any way to avoid this situation?
>
> Any help is really appreciated,

This isn't a bug, the history file is saved in metafied format. If you
want to print it outside zsh you can use this simple program.


  1. #define Meta ((char) 0x83)

  2. #define _GNU_SOURCE
  3. #include <stdio.h>
  4. #include <stdlib.h>

  5. /* from zsh utils.c */
  6. char *unmetafy(char *s, int *len)
  7. {
  8.   char *p, *t;

  9.   for (p = s; *p && *p != Meta; p++);
  10.   for (t = p; (*t = *p++);)
  11.     if (*t++ == Meta)
  12.       t[-1] = *p++ ^ 32;
  13.   if (len)
  14.     *len = t - s;
  15.   return s;
  16. }

  17. int main(int argc, char *argv[]) {
  18.   char *line = NULL;
  19.   size_t size;

  20.   while (getline(&line, &size, stdin) != -1) {
  21.     unmetafy(line, NULL);
  22.     printf("%s", line);
  23.   }

  24.   if (line) free(line);
  25.   return EXIT_SUCCESS;
  26. }
复制代码

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
8 [报告]
发表于 2018-04-08 13:05 |只看该作者
本帖最后由 1cpuer 于 2018-04-11 13:01 编辑

回复 7# Shell_HAT

大体的意思是用一个 c 脚本 ,可转换是吗?


# [ /home/soio/1bs/hello/Cc ] {2018-04-11 12:59:18}
: 1523422758:0;➜  cat /home/soio/1bs/awks/1.cod  
11vv22vvM-dM-8M--M-fM-^CM-6M-^CM-'##$


# [ /home/soio/1bs/hello/Cc ] {2018-04-11 12:59:36}
: 1523422776:0;➜  ./cod1 /home/soio/1bs/awks/1.cod
^C

测试不了

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
9 [报告]
发表于 2018-04-20 09:09 |只看该作者
本帖最后由 1cpuer 于 2018-04-20 09:31 编辑

回复 4# wh7211

# [ /home/soio/1bs/awks ] {2018-04-20 03:11:57}
: 1524165117:0;➜  history | tail -6                                                         
28699    {2018-04-20 03:11:08} : 1524165068:0;pos
28700    {2018-04-20 03:11:12} : 1524165072:0;echo "中惶��惼��郷�颃�123abc+?"
28701    {2018-04-20 03:11:17} : 1524165077:0;history | tail -6
28702    {2018-04-20 03:11:53} : 1524165113:0;export LC_ALL=POSIX
28703    {2018-04-20 03:11:57} : 1524165117:0;echo "中惶��惼��郷�颃�123abc+?"
28704    {2018-04-20 03:12:02} : 1524165122:0;history | tail -6

history 打不出中文
locale 设置了 LANG=en_US.UTF-8 或 LANG=en_US.UTF-8 都无极于是
问题找到了 ~/.zshrc 150 行
我把 history alias [cat ~/.zsh_history .....]
不回复亦无所谓

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
10 [报告]
发表于 2018-04-20 10:51 |只看该作者
本帖最后由 wh7211 于 2018-04-20 11:02 编辑

回复 9# 1cpuer


  1. 1、在/etc/profile中添加下面2行代码:
  2. LANG="zh_CN.UTF-8"
  3. LC_ALL="zh_CN.UTF-8"
  4. 重新登录后,执行『locale』
  5. 2、把zsh终端的编码设置成『Unicode(UTF-8)』,执行『df』
  6. 3、执行『echo "你好"』
  7. 4、执行『history|tail -2』
  8. 5、执行『zsh --version』
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP