LINUX文件名是乱码如何打开?

统信UOS系统,linux
有root权限,我想写个shell脚本修改ip地址。
经过查询得知,只需要修改
/etc/NetworkManager/system-connections/下的一个文件即可。

但是我打开该目录,发现那个文件是:''$'\346\234\211\347\272\277\350\277\236\346\215\245''.nmconnection'
我操作了一下,
在该目录使用vim 通过Tab键,打一个引号’然后补全,可以补出来 多个■的文件名,我进去编辑。确实可以修改IP

现在我想通过脚本修改,就要在脚本里写这个路径,但是这个文件名怎么都写不对(毕竟没有tab),提示找不到该文件。

请问我如何在脚本里定位这个文件呢?通过文件名可以吗?
这样子的文件名是为什么呀,语言不对吗?

2个方向

  1. 看一下系统的环境变量里面的语言设置的是什么格式 env | grep LANG
  2. 用工具包转一下
    linux文件名乱码是什么原因造成的? - 行业资讯 - 亿速云 linux文件名乱码是什么原因造成的?很多人都不太了解,今天小编为了让大家更加了解linux文件名乱码的原因,所以给大家总结了以下内容,一起往下看吧。linux文件... https://www.yisu.com/zixun/132097.html#:~:text=%E5%8E%9F%E5%9B%A0%E5%9C%A8%E4%BA%8E%EF%BC%8CWindows%20%E7%9A%84%E6%96%87%E4%BB%B6,%E6%96%87%E4%BB%B6%E5%90%8D%E8%BF%9B%E8%A1%8C%E8%BD%AC%E7%A0%81%E3%80%82

设置一下编码,export LANG=zh_CN.UTF-8

你这情况应该是文件是在Windows系统下创建的,文件名编码默认用的是GBK。上传到Linux后,因为Linux默认的文件名编码是UTF8导致的中文文件名乱码。可以用一个命令行工具去转码一下文件名 工具名称:convmv 如果此工具没有安装的话,可以用 sudo apt install convmv 命令安装 一下。

用法:convmv -f 源编码 -t 新编码 [选项] 文件名
-f enc 源编码
-t enc 新编码
-r 递归处理子文件夹
-i 交互文向转换
--list 显示所有可用编码
--nosmart 如果是utf8文件,忽略
--notest 直接转换不测试
--replace 文件相同直接替换
--unescape 可以做一下转义,比如把%20变成空格
--upper 全部转换成大写
--lower 全部转换成小定

举例:convmv -f GBK -t UTF-8 --notest *
将当前文件夹下的所有文件名称由GBK编码更改为utf-8

linux中文文件名乱码的解决思路:
1、下载并安装“fonts-chinese-3.02-12.el5.noarch.rpm”和“fonts-ISO8859-2”语言包;2、修改/etc/sysconfig/i18n;3、重启即可。

除了上面回答的各种外,
有没试过用终端软件(例如:xshell)去连接去查看看,因为创建文件的编码问题,会看到这样的,
如果能用终端软件看到正常的话,你就可以复制去notepad++这类的MD软件中,然后,重新编写一个文件去UOS里面