为什么有些文件夹在命令行上不可见?

为什么有些文件夹在命令行上不可见?

我有一个通过 SSH 登录的 Web 服务器。最近,我不知道是什么变化导致了这种情况,任何名为“system”的目录或符号链接都变得不可见。

通过 SSH 在命令行(Ubuntu 终端)上进入服务器后:

$ mkdir test_directory
$ cd test_directory/
$ ll
total 8
drwxr-xr-x   2 root     root         4096 Nov  7 18:02 ./
drwxr-xr-x   4 root     root         4096 Nov  7 18:02 ../
$ ln -s /var/www/repos/radiocms/admin/
$ ln -s /var/www/repos/radiocms/application/
$ ln -s /var/www/repos/radiocms/public/     
$ ln -s /var/www/repos/radiocms/system/
$ ll
total 8
drwxr-xr-x   2 root     root         4096 Nov  7 18:02 ./
drwxr-xr-x   4 root     root         4096 Nov  7 18:02 ../
lrwxrwxrwx   1 root     root           37 Nov  7 18:02 admin -> /var/www/repos/radiocms/admin//
lrwxrwxrwx   1 root     root           43 Nov  7 18:02 application -> /var/www/repos/radiocms/application//
lrwxrwxrwx   1 root     root           38 Nov  7 18:02 public -> /var/www/repos/radiocms/public//
$ cd /var/www/repos/radiocms/
$ ll
total 36
drwxr-sr-x   7 root     apache       4096 Nov  7 16:49 ./
drwxr-sr-x   9 root     apache       4096 Nov  7 16:49 ../
drwxr-sr-x   8 root     apache       4096 Nov  7 16:49 .git/
-rw-r--r--   1 root     apache          9 Nov  7 16:49 .gitignore
-rwxr-xr-x   1 root     apache        336 Nov  7 16:49 .htaccess*
drwxr-sr-x   7 root     apache       4096 Nov  7 16:49 admin/
drwxr-sr-x  10 root     apache       4096 Nov  7 16:49 application/
-rwxr-xr-x   1 root     apache       1363 Nov  7 16:49 index.php*
drwxr-sr-x   5 root     apache       4096 Nov  7 16:49 public/
$ cat /etc/*-release
CentOS release 6.4 (Final)
CentOS release 6.4 (Final)
CentOS release 6.4 (Final)
$ type ll
ll is aliased to `ls -alF --color=auto'
$ type ls
ls is aliased to `ls --color=auto'
$ which ls
alias ls='ls --color=auto'
    /bin/ls
$ which ll
alias ll='ls -alF --color=auto'
    /bin/ls
$ /bin/ls -al /var/www/repos/radiocms/
total 36
drwxr-sr-x   7 root     apache       4096 Nov  7 16:49 .
drwxr-sr-x   9 root     apache       4096 Nov  7 16:49 ..
drwxr-sr-x   8 root     apache       4096 Nov  7 16:49 .git
-rw-r--r--   1 root     apache          9 Nov  7 16:49 .gitignore
-rwxr-xr-x   1 root     apache        336 Nov  7 16:49 .htaccess
drwxr-sr-x   7 root     apache       4096 Nov  7 16:49 admin
drwxr-sr-x  10 root     apache       4096 Nov  7 16:49 application
-rwxr-xr-x   1 root     apache       1363 Nov  7 16:49 index.php
drwxr-sr-x   5 root     apache       4096 Nov  7 16:49 public

我知道测试目录中存在名为“system”的符号链接:我刚刚创建了它。我知道“radiocms”目录中存在“system”目录,因为当我创建符号链接时,命令行会自动完成。

如果我使用 Nautilus 书签(使用 SFTP)登录,这些目录会正常显示,但任何称为“系统”(文件夹、文件夹的符号链接或文件)的内容在命令行上都不可见。这到底是什么原因造成的?我该如何修复它?

如果我随后返回到 test_directory,我会得到以下信息:

$ ll
total 8
drwxr-xr-x   2 root     root         4096 Nov  7 18:02 ./
drwxr-xr-x   4 root     root         4096 Nov  7 18:02 ../
lrwxrwxrwx   1 root     root           37 Nov  7 18:02 admin -> /var/www/repos/radiocms/admin//
lrwxrwxrwx   1 root     root           43 Nov  7 18:02 application -> /var/www/repos/radiocms/application//
lrwxrwxrwx   1 root     root           38 Nov  7 18:02 public -> /var/www/repos/radiocms/public//
$ find . -maxdepth 1 -type l
./public
./application
./system
./admin

因此find可以看到符号链接,即使ls没有。我很困惑。

答案1

如果您说只有命令行隐藏“系统”元素,那应该与您使用的命令有关。

在这里,我看到你只使用ll显示文件夹,这在大多数情况下是一个别名。你可以通过输入来查看调用的真正命令是什么type ll。例如,我可以在我的桌面上看到:

type ll
ll is aliased to `ls -Al'

之后,你也可以尝试检查ls

type ls
ls is aliased to `ls --color=auto'

为了确保“shell”不显示文件夹,请尝试使用二进制文件的真实完整路径:

/bin/ls -al /var/www/repos/radiocms/

并粘贴此命令的结果

阿德里安。

答案2

如果发生了意外的事情,我发现更明确地使用命令会有所帮助:

ln -s /var/www/repos/radiocms/system /路径/到/test_directory/system

另外,在您发布的输出中,符号链接以“//”结尾,这对我来说很奇怪。您可能也想按照我上面给出的示例删除并重新创建它们。

相关内容