使用 Tab 自动完成功能时,“没有这样的文件或目录”会消失。重新执行上一个命令时会再次出现

使用 Tab 自动完成功能时,“没有这样的文件或目录”会消失。重新执行上一个命令时会再次出现

例子:

$ ls -lahF '/mnt/test/test directory 001/'
total 1.0G
drwxr-xr-x 2 myuser root    0 Aug 10 01:00 ./
drwxr-xr-x 2 myuser root    0 Aug 10 13:53 ../
-rwxr-xr-x 1 myuser root 1.0G Aug 10 14:00 testfile.bin*

当我尝试ls此文件时,它不起作用:

$ ls -lahF '/mnt/test/test directory 001/testfile.bin'
ls: cannot access '/mnt/test/test directory 001/testfile.bin': No such file or directory

但是,当我不自己输入文件名,而是使用 tab 键自动完成时,它确实有效:

-rwxr-xr-x 1 myuser root 1.0G Aug 10 14:00 '/mnt/test/test directory 001/testfile.bin'*

如果我然后向上箭头,使用上一个命令,并执行该命令,它就会返回到No such file or directory

搜索此内容的 SEO 只会让我想到“自动完成不起作用”的问题。

不知道从哪里开始寻找这个。

这是怎么回事?任何帮助都非常感谢。

该挂载本身是 Samba 挂载。这是我第一次看到这种行为。这个文件有什么特别之处吗?目录、完整路径,也许是 Samba 连接?我该如何检查?

编辑:根据要求:

$ echo '/mnt/test/test directory 001/'* | od -c
0000000   /   m   n   t   /   t   e   s   t   /   t   e   s   t       d
0000020   i   r   e   c   t   o   r   y       0   0   1   /   *  \n
0000037

文件本身:

$ echo '/mnt/test/test directory 001/testfile.bin'* | od -c
0000000   /   m   n   t   /   t   e   s   t   /   t   e   s   t       d
0000020   i   r   e   c   t   o   r   y       0   0   1   /   t   e   s
0000040   t   f   i   l   e   .   b   i   n  \n
0000052

编辑2:这样做strace ls -la会产生略有不同的输出。

当找到该文件时,它会给出:

lstat("/mnt/test/test directory 001/testfile.bin", {st_mode=S_IFREG|0755, st_size=1027989040, ...}) = 0

但没找到:

lstat("/mnt/test/test directory 001/testfile.bin", 0x560a93648988) = -1 ENOENT (No such file or directory)

不知道是什么导致了这种差异。

另一个行为注意事项:如果执行自动完成,然后按下Home,将光标移动到行首,也找不到该文件。

移动光标对此有何影响?

编辑3:

/mnt/test/test directory 001/$ ls | od -c
0000000   t   e   s   t   f   i   l   e   .   b   i   n  \n

挂载选项、凭证和 IP 已编辑:

//<EDIT>/remotedir /mnt/test cifs uid=1000,credentials=/home/myuser/.smb_cred_file,vers=2.1 0 0

输出mount显示,ip 和用户名也被编辑掉了:

rw,relatime,vers=2.1,cache=strict,username=<EDIT>,domain=,uid=1000,forceuid,gid=0,noforcegid,addr=<EDIT>,file_mode=0755,dir_mode=0755,soft,nounix,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1

远程机器不受我控制。据我了解,它是一种 NAS 解决方案。

相关内容