这意味着您的文件名为q.

这意味着您的文件名为q.

ls ~在 RHEL 7 上使用,但得到了<F6>q输出!这是什么意思?

[user@server2 ~]$ ls /home/user/
<F6>q

[user@server2 ~]$ ll
total 4
-rw-r--r--. 1 root root 340 Sep 18 17:16 <F6>q
[user@server2 ~]$ cat <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$ touch test
[user@server2 ~]$ ls
<F6>q  test
[user@server2 ~]$ vim <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$ 

答案1

这意味着您的文件名为<F6>q.

这些都是不是无法显示的字符,正如评论答案和其他实际答案所暗示的那样。您可以看到它们显示在您的面前。 ☺

无论如何,都不是针对不可显示的字符发出的<F6>任何形式。ls

[用户@server2 ~]$ cat <F6>q
-bash: F6: 没有这样的文件或目录
[用户@服务器2 ~]$ vim <F6>q
-bash: F6: 没有这样的文件或目录
[用户@服务器2 ~]$

您需要了解 shell 语法。

您正在运行catvim命令,其标准输入从文件重定向F6,标准输出重定向到文件q,没有实际的命令参数。前一个重定向失败,因为没有名为 的文件F6,而是您的文件被命名为<F6>q,因此根本不会尝试后一个重定向。

这是相同的命令,其中空格显示 shell 如何解析它:

[user@server2 ~]$ cat < F6 > q
-bash: F6: 没有这样的文件或目录
[用户@服务器2 ~]$ vim < F6 > q
-bash: F6: 没有这样的文件或目录
[用户@服务器2 ~]$

要将包含 shell 元字符的文件名按原样传递给命令,而 shell 不响应元字符,它们必须是

vim '<F6>q'
或者逃脱了

vim \<F6\>q

考虑到在命令输入模式下按功能键时 VIM 中发生的情况ex,使用 VIM 很容易意外生成具有此类名称的文件。

答案2

当您使用 plain ls(或其别名ll)并且输出将发送到终端时,RHEL 7ls会将控制字符和其他不可打印字符转换为可见形式。这很可能就是您所看到的。如果输出到终端以外的任何地方,则不会发生这种默认替换。

您可以使用ls -q问号替换不可打印的字符。问号是适合单个字符的 shell 通配符,因此如果您运行ls -q /home/user/并看到?q响应,则意味着您的神秘文件可能有一个不可打印的字符,其第一个字符为 ASCII 值 0xF6。

您还可以用来ls -b获取表示为 C 样式转义码的不可打印字符,这可能无法在 shell 中直接使用,但可以准确识别每个不可打印字符。

您可能希望将文件重命名为更易于处理的名称:

cd /home/user
mv ?q possible-typo

它可能是由于将vi命令错误地输入:wq为而创建的:w<extra character>q。该命令的后一种形式被解释为“使用名称保存当前文件<extra character>q”而不是“使用现有名称保存然后退出”。

相关内容