我在 mk802 迷你电脑上使用的 SD 卡上安装了 Ubuntu(Lubuntu 12.04)。当我在电脑(Ubuntu 12.04)上安装 SD 卡时,无法读取/编辑与 ssh 相关的文件(例如 etc/ssh_config 或 etc/sshd_config),但我可以在 ls 输出中看到它:
root@boss:/media/d5578c69-a3c3-43be-a24f-9e1daaf6eb62/etc# ls -lrta ssh*
total 168
-rw-r--r-- 1 root root 302 Jan 10 2011 ssh_import_id
-rw-r--r-- 1 root root 1669 Apr 2 2012 ssh_config
-rw-r--r-- 1 root root 125749 Apr 2 2012 moduli
-rw-r--r-- 1 root root 395 Jun 12 2012 ssh_host_rsa_key.pub
-rw------- 1 root root 1679 Jun 12 2012 ssh_host_rsa_key
-rw-r--r-- 1 root root 175 Jun 12 2012 ssh_host_ecdsa_key.pub
-rw------- 1 root root 227 Jun 12 2012 ssh_host_ecdsa_key
-rw-r--r-- 1 root root 603 Jun 12 2012 ssh_host_dsa_key.pub
-rw------- 1 root root 672 Jun 12 2012 ssh_host_dsa_key
-rw-r--r-- 1 root root 2498 Dec 8 01:17 sshd_config
drwxr-xr-x 2 root root 4096 Dec 8 01:17 .
drwxr-xr-x 120 root root 4096 Jan 19 08:32 ..
root@boss:/media/d5578c69-a3c3-43be-a24f-9e1daaf6eb62/etc# cat sshd_config
cat: sshd_config: No such file or directory
同一文件夹中的其他文件没有出现此问题。这种情况的原因是什么?
答案1
我明白问题所在。您ls -lrta ssh*
在目录中使用/etc/
。这会匹配该ssh
文件夹中的目录,然后列出该目录的内容。您看到的那些文件实际上位于 中/etc/ssh/
。
不会ls -lrtad ssh*
进入目录。
从目录访问您的文件/etc/ssh/
。
这里的棘手之处在于,当您在命令行上尝试使用ls
时,通常会在那些文件来自哪个目录的情况下放置一个标题。问题是shell 会扩展以制作命令行。例如,当您写入并且目录也有一个和条目时,shell 实际上会运行此命令:输出将类似于:ls
*
*
ls py*
python
python3
ls python python3
python:
debian_config
python3:
debian_config
因为ls
看到多个参数,所以它会为每个目录打印一个标题。因此,您可以轻松看到这些文件来自不同的目录。但是,当目录中只有一个匹配项时(例如您的情况),ls ssh*
会扩展为ls ssh
,然后ls
会看到您只输入了一个参数,因此不需要标题,因为您知道自己在做什么,并且输出将与您的类似。