我有一个通过 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
另外,在您发布的输出中,符号链接以“//”结尾,这对我来说很奇怪。您可能也想按照我上面给出的示例删除并重新创建它们。