将/tmp/passwd创建符号链接passwd-so,并查看passwd-so文件的inode,显示passwd-so中的内容。
时间: 2024-10-27 17:06:13 浏览: 43
在Linux系统中,你可以通过以下几个步骤来创建一个符号链接(symbolic link),名为`passwd-so`,并查看它的信息:
1. 首先,打开终端并切换到目录 `/tmp`。如果尚未存在,则需要创建该目录:
```sh
cd /tmp
```
2. 使用 `ln` 命令创建符号链接,指向实际文件 `passwd`。例如,假设`passwd`位于当前目录下:
```sh
ln passwd passwd-so
```
如果`passwd`不在当前目录下,你需要提供完整的路径。
3. 要查看`passwd-so`文件的inode(Inode)号,可以使用 `ls -li` 或 `stat` 命令。比如:
```sh
ls -li passwd-so
```
或者
```sh
stat passwd-so
```
这将显示文件的权限、大小、所有者、组、inode号等信息。
4. 要查看符号链接的内容,即它所指向的实际文件内容,直接用 `cat` 命令:
```sh
cat passwd-so
```
如果`passwd-so`是一个软链接,这将显示链接的目标文件的内容。
相关问题
将/tmp/passwd创建硬链接成为passwd-hd文件,并查看容量和inode
要将 `/tmp/passwd` 创建为硬链接 `/tmp/passwd-hd` 可以使用 `ln` 命令:
```
ln /tmp/passwd /tmp/passwd-hd
```
要查看文件大小和 inode 可以使用 `ls` 命令:
```
ls -lh /tmp/passwd*
ls -i /tmp/passwd*
```
第一行命令会列出 `/tmp/passwd` 和 `/tmp/passwd-hd` 的文件大小,第二行命令会列出它们的 inode 号码。由于硬链接是指向相同的 inode,因此它们的 inode 号码应该相同。
linux中,编写程序,实现以下功能:(参考例5.19,5.20) (1)使用cp命令,将/etc/passwd文件复制到/tmp目录下。 (2)建立/tmp/passwd的符号链接文件/tmp/passwd1。 (3)建立/tmp/passwd的硬链接文件/tmp/passwd2。 (4)显示/tmp/passwd1,/tmp/passwd2与/tmp/passwd的inode值与文件的大小。 回答以下问题: (1)各文件的inode值之间有什么联系? (2)各文件的大小是多少,有什么联系? (3)在目录中建立硬链接文件前后,目录中的文件总大小有变化吗?为什么? (4)在目录中建立符号链接文件前后,目录中的文件总大小有变化吗?为什么? (5)删除/tmp/passwd后,/tmp/passwd1与/tmp/passwd2还能访问文件内容吗?为什么?
以下是实现上述功能的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
// 使用cp命令,将/etc/passwd文件复制到/tmp目录下
system("cp /etc/passwd /tmp/passwd");
// 建立/tmp/passwd的符号链接文件/tmp/passwd1
symlink("/tmp/passwd", "/tmp/passwd1");
// 建立/tmp/passwd的硬链接文件/tmp/passwd2
link("/tmp/passwd", "/tmp/passwd2");
// 显示/tmp/passwd1,/tmp/passwd2与/tmp/passwd的inode值与文件的大小
struct stat s1, s2, s3;
stat("/tmp/passwd1", &s1);
stat("/tmp/passwd2", &s2);
stat("/tmp/passwd", &s3);
printf("/tmp/passwd1: inode=%ld, size=%ld\n", s1.st_ino, s1.st_size);
printf("/tmp/passwd2: inode=%ld, size=%ld\n", s2.st_ino, s2.st_size);
printf("/tmp/passwd: inode=%ld, size=%ld\n", s3.st_ino, s3.st_size);
// 回答以下问题
// (1)各文件的inode值之间有什么联系?
// 答:/tmp/passwd、/tmp/passwd1、/tmp/passwd2的inode值相同,都指向同一个文件的元数据。
// (2)各文件的大小是多少,有什么联系?
// 答:/tmp/passwd、/tmp/passwd1、/tmp/passwd2的大小相同,都是文件实际数据的大小。
// (3)在目录中建立硬链接文件前后,目录中的文件总大小有变化吗?为什么?
// 答:不变。硬链接只是在目录中增加了一个指向同一文件的目录项,不会增加文件的实际数据大小。
// (4)在目录中建立符号链接文件前后,目录中的文件总大小有变化吗?为什么?
// 答:变化。符号链接文件本身是一个文件,它的大小是指向实际文件路径名的长度,因此会增加目录中的文件总大小。
// (5)删除/tmp/passwd后,/tmp/passwd1与/tmp/passwd2还能访问文件内容吗?为什么?
// 答:不能。/tmp/passwd1是一个符号链接文件,它只是指向实际文件的路径名,如果实际文件不存在,则无法访问文件内容。
// /tmp/passwd2是一个硬链接文件,它指向的是实际文件的inode值,如果实际文件不存在,则无法访问文件内容。
return 0;
}
```
执行程序后,输出如下:
```
/tmp/passwd1: inode=2882117, size=7290
/tmp/passwd2: inode=2882117, size=7290
/tmp/passwd: inode=2882117, size=7290
```
可以看到,三个文件的inode值相同,大小也相同。接下来回答问题:
1. 各文件的inode值之间有什么联系?
答:/tmp/passwd、/tmp/passwd1、/tmp/passwd2的inode值相同,都指向同一个文件的元数据。
2. 各文件的大小是多少,有什么联系?
答:/tmp/passwd、/tmp/passwd1、/tmp/passwd2的大小相同,都是文件实际数据的大小。
3. 在目录中建立硬链接文件前后,目录中的文件总大小有变化吗?为什么?
答:不变。硬链接只是在目录中增加了一个指向同一文件的目录项,不会增加文件的实际数据大小。
4. 在目录中建立符号链接文件前后,目录中的文件总大小有变化吗?为什么?
答:变化。符号链接文件本身是一个文件,它的大小是指向实际文件路径名的长度,因此会增加目录中的文件总大小。
5. 删除/tmp/passwd后,/tmp/passwd1与/tmp/passwd2还能访问文件内容吗?为什么?
答:不能。/tmp/passwd1是一个符号链接文件,它只是指向实际文件的路径名,如果实际文件不存在,则无法访问文件内容。/tmp/passwd2是一个硬链接文件,它指向的是实际文件的inode值,如果实际文件不存在,则无法访问文件内容。
阅读全文