【发布时间】:2015-11-07 13:11:32
【问题描述】:
我在 osx 10.11 上使用带有控制台命令的通配符路径有问题(但我想它在 linux 上会类似)
我有捷克语中按事件和日期命名的文件夹结构。
我需要按月列出子文件夹中的文件。我想使用这样的通配符:
ls export/*prosince\ 2013/*
虽然这可行,但当我想在通配符中使用 utf8 时,我得到“没有这样的文件或目录”
ls export/*září\ 2013/*
语言环境看起来正确
winsik:Fotky vita$ locale
LANG="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_CTYPE="cs_CZ.UTF-8"
LC_MESSAGES="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_ALL=
如何在 shell 命令中使用 utf8 字符?
编辑:我发现了一个奇怪的情况,如果我让终端用 TAB 键完成一些 UTF8 路径,然后使用这个字符,那么它可以工作,但是当我用键盘输入它们时它不会 - 相同的行为在 terminal.app 和 iterm2.app 中
winsik:Fotky vita$ bind -v | grep meta
set convert-meta off
set input-meta on
set meta-flag on
set output-meta on
【问题讨论】:
-
Bash Readline 配置中的元变量是什么? IIRC
bind -V | grep meta -
附加到问题中,我目前也发现了奇怪的行为 - 请参阅编辑
-
我可以推测 Bash 使用与您的系统不同的 Unicode 规范化,但这将是一个非常严重的错误。或者这些文件是否可能位于具有非默认或破坏规范化的外部文件系统上?换句话说,文件名中的编码字节是什么,以及何时在提示符下键入它们?您的终端也可能是罪魁祸首,但如果您使用控制台上的默认终端,那似乎更不可能。
-
您的终端模拟器使用什么字符编码?您可能正在使用不同的编码输入文本;终端仍然显示正确的字形,但
bash正在获取非 UTF-8 字节流。