“ls”在两个不同终端的同一台机器上的同一文件夹中看到不同的文件。这怎么可能?

“ls”在两个不同终端的同一台机器上的同一文件夹中看到不同的文件。这怎么可能?

刚才我遇到了一个非常奇怪的情况。我正在 TMUX 会话中通过 SSH 运行 Ubuntu 的云虚拟机上管理一些内容。现在,我打开了两个窗格,即使它们位于同一台(虚拟)PC 上,它们也会看到不同的文件:

1号航站楼:

pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ pwd                                                                            
/home/pan/shared/Lammps/new-lengths/125                                                                                                 
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ hostname
gergo-skynet-master.desy.de                                                                                                             
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ ls                                                                             
*****_annotated.in  data.lammps             ******.py  process         rg           run1.restart                                                                                                                                           
SHAKE_10             dump_*****.lammpstrj  lammps.out   process.py      rg.dump      ******.data                                                                                                                                        
SHAKE_7              extract_data.sh         log.lammps   process_all.py  run.restart                                                                                                                                                         
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ 

2 号航站楼:

pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ pwd
/home/pan/shared/Lammps/new-lengths/125
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ hostname
gergo-skynet-master.desy.de
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ ls
*****_annotated.in  extract_data.sh  *****.py  process  process.py  process_all.py  ******.data
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ 

我不得不审查一些文件名,但你明白了。

看这里

我确认的事情:

  • 我位于完全相同的文件系统位置。
  • ls在两个终端中都没有别名。
  • 我在同一台机器上的两个终端中是同一用户。

我确定正确的是上面的那个,但我很困惑这怎么可能?即使在下层终端中进行 cd 操作后,它也不会看到上层终端所看到的所有文件。我什至不知道从哪里开始调试这种情况。我担心以后我也不会因为同样的问题而看到一些重要的文件,所以我真的想弄清楚在关闭下终端之前发生了什么。

你有什么主意吗?哪些附加信息会有用?

答案1

有多种原因可能导致此行为。考虑以下事件序列:

  1. 创建一个目录,进入该目录并创建一些文件:

    mkdir /tmp/dir1
    cd /tmp/dir1
    touch file{1,2,3}
    
  2. 从另一个终端,重命名该目录,使用原始名称创建一个新目录,并用不同的文件填充它:

    mv /tmp/dir1 /tmp/dir2
    mkdir /tmp/dir1
    cd /tmp/dir1
    touch file{4,5,6}
    
  3. 现在在原始终端中我们看到:

    $ pwd
    /tmp/dir1
    $ ls
    file1 file2 file3
    

    在第二个终端中我们看到:

    $ pwd
    /tmp/dir1
    $ ls
    file4 file5 file6
    

还有其他情况可能会产生这种行为(例如,在两个终端的单独安装命名空间中运行——也许在容器中),但上述似乎是最有可能的解释。

相关内容