跳转至

思考题解答

Матрёшка

提示

mantldr 的用途是?

解答

答案非常简单:man man / man tldr, 和 tldr man / tldr tldr 即可。

查找需要安装的软件包

提示

apt 有一些相关的小工具,可能可以帮到你。

解答

我们可以使用 apt-file(需要手动安装)来查找包含某个特定文件的软件包。在运行 sudo apt-file update 建立索引之后,可以用 apt-file search 文件名 来进行搜索。

一个例子:

$ apt-file search libc++.so
libc++-7-dev: /usr/lib/llvm-7/lib/libc++.so
libc++-7-dev: /usr/lib/x86_64-linux-gnu/libc++.so
libc++-8-dev: /usr/lib/llvm-8/lib/libc++.so
libc++-8-dev: /usr/lib/x86_64-linux-gnu/libc++.so
libc++1-7: /usr/lib/llvm-7/lib/libc++.so.1
libc++1-7: /usr/lib/llvm-7/lib/libc++.so.1.0
libc++1-7: /usr/lib/x86_64-linux-gnu/libc++.so.1
libc++1-7: /usr/lib/x86_64-linux-gnu/libc++.so.1.0
libc++1-8: /usr/lib/llvm-8/lib/libc++.so.1
libc++1-8: /usr/lib/llvm-8/lib/libc++.so.1.0
libc++1-8: /usr/lib/x86_64-linux-gnu/libc++.so.1
libc++1-8: /usr/lib/x86_64-linux-gnu/libc++.so.1.0

提示

你可能需要理解 ls -l 输出的含义。

解答

软链接的判断非常简单。如果是软链接的话,ls -l 对应的文件会明确写出其指向的文件。

$ ls -l /usr/bin/vim
lrwxrwxrwx 1 root root 21 Jul 21  2019 /usr/bin/vim -> /etc/alternatives/vim

那么如何判断硬链接呢?我们可以试一下。

$ touch file
$ ln file hardfile
$ touch other  # 无硬链接的文件
$ ls -l
total 0
-rw-r--r-- 2 user user 0 May  3 13:07 file
-rw-r--r-- 2 user user 0 May  3 13:07 hardfile
-rw-r--r-- 1 user user 0 May  3 13:07 others

可以注意到,ls -l 输出的第二列中,互为硬链接的 filehardfile 的值为 2。这个值便是对应的文件拥有的硬链接个数。

也可以使用 stat 来查看。

$ stat hardfile
File: hardfile
Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fe01h/65025d    Inode: 531077      Links: 2
Access: (0644/-rw-r--r--)  Uid: ( 1000/   user)   Gid: ( 1000/   user)
Access: 2020-05-03 13:07:06.420556709 +0800
Modify: 2020-05-03 13:07:06.420556709 +0800
Change: 2020-05-03 13:07:15.500656671 +0800
Birth: -

错误使用 tar 命令导致的文件丢失

提示

tar-f 的意义是什么?

解答

* 被 shell 展开,导致命令变成了这样:

tar -cf file1 file2 ... target.tar

此时,tar 会把 file2 一直到 target.tar 打包的结果放在 file1 文件中,于是 file1 的内容就被覆盖了。